BohYoh.comトップページへ
C & C++ FAQ
目次

C C++ 処理に要した時間を調べるにはどうすればよいでしょうか。

 標準ライブラリのclock関数を呼び出すと、プログラム開始時点から現在までの経過時間をクロック単位で取得できます。処理開始直前と直後にclock関数を呼び出して、その返却値の差を求めれば、処理に要したクロック数が得られます。

/* 処理に要した時間を計測 */ #include <time.h> #include <stdio.h> int main(void) { clock_t start, end; start = clock(); /* 何らかのか処理を行う */ end = clock(); printf("計算時間は%.2f秒です", (double)(end - start)/CLOCKS_PER_SEC); return (0); }

 なお、CLOCKS_PER_SECマクロは、clock関数が返却する1秒あたりのクロック数です。この値で割ることによって秒単位への変換を行います。
■ 根拠 ■
標準C §7.12.2 Time manipulation functions
標準C99 §7.23.2 Time manipulation functions
標準C++ §20.5 Date and Time



C++11 処理に要した時間を調べるにはどうすればよいでしょうか。

 C++11以降のC++では、steady_clockを使って行うことで処理に要した時間の計測を行えます。以下に示すのは、ミリ秒単位で表示する例です。

// // 処理に要した時間を計測 // #include <chrono> #include <iostream> using namespace std; using namespace std::chrono; int main() { steady_clock::time_point start = steady_clock::now(); // 何らかのか処理を行う steady_clock::time_point end = steady_clock::now(); steady_clock::duration d = end - start; cout << "計算時間は" << duration_cast<milliseconds>(d).count() << "ミリ秒です。\n"; }

 なお、dの宣言は、autoによる型推論を使うと簡潔になります。

auto d = end - start;



■ 根拠 ■
標準C++ 11 §20.11.7.2 Class steady_clock


■ 参照 ■
FAQ 一定時間処理を停止するにはどうすればよいでしょうか。
関数 clock関数
マクロ CLOCKS_PER_SECマクロ

戻る

BohYoh.comロゴ