今まで仕事で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
そんなこんなでメモってことで。