boost::progress_timer

トップページ > 時間 >

abstract

必要なヘッダ
<boost/progress.hpp>
出来ること
経過時間測定→終わったら自動で表示
リファレンス
en

sample

#include <boost/progress.hpp>

int main()
{
	boost::progress_timer t;
	unsigned int a=0;
	for( unsigned int i=0; i<10000; ++i )
		for( unsigned int j=0; j<60000; ++j )
			a += i; // 適当に時間のかかりそうな処理

	return 0;
} // tのデストラクタが呼び出され、ここで時間表示

出力例

2.08 s

etc

C++の特徴として、「自動変数はスコープが終わるところで、 デストラクタが呼び出される」というのがあります。関数のどこから returnbreak で抜けようが、 空の彼方へ例外で飛んでいこうが必ず呼び出されるので、 終了処理をデストラクタに任せておくと、綺麗なコードを書けることがよくあります。

代表例として、「自動で delete を行う std::auto_ptr」 や、「関数の始めにアイコンを砂時計にして終わりに元に戻す」クラス、 「マルチスレッド用の排他制御のLock/Unlock処理」などなど。

というわけでこれは、デストラクタで経過時間を表示する、 「timer を更に自動化したようなヤツ」です。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0