C & C++ FAQ
|
|
標準ライブラリの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++では、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
|
■ 参照 ■