今まで仕事でC++のPGするときにはclock()を使ってたけど、C++11だったらstlにあるんでね?って思ったらあったので試してみることに。
そらぁ…ないわきゃないよねと後で思った…。
そんなこんなでポイントはこんな感じ。
- 実行時の時間はchrono::system_clock::now()で取得する
- 実行時間の差を計算する
- 計算した差をchrono::duration_cast<chrono::単位>でキャストする
※単位って書いたとこは時間の単位のこと(今回はmsにしたいのでmilliseconds) - 時間をcount()で取得する
んで、サンプルのコードとしてはこんな感じ。
#include <iostream>
#include <map>
#include <string>
#include <chrono>
using namespace std;
int main(int argc, const char * argv[])
{
// 測定用の変数を定義する
map<int, string> objValue;
string strValue = "value";
// 開始時刻を取得する
auto start = chrono::system_clock::now();
// 時間がかかる処理を実行する
for (int nCurrent = 0; nCurrent < 100000; nCurrent++)
{
objValue[nCurrent] = strValue;
}
// 終了時刻を取得する
auto end = chrono::system_clock::now();
// 処理にかかった時間を計算する(開始時刻-終了時刻)
auto time = end - start;
// 処理にかかった時間を表示する(msで表示する)
cout << chrono::duration_cast<chrono::milliseconds>(time).count() << " ms" << endl;
return 0;
}
実行するとこんな感じ。
4926 ms
そんなこんなでメモってことで。
