c++で処理時間等を計測する際,clock()やtimeGetTime(), GetTickCount()等を用いていたものの,
clock()は精度が10msec程度(処理系依存)なため使い勝手があまり良くなく,GetTickCountは精度は良いもののwinmm.lib(windows系)で用意されている関数のためxcode等で使えない.
std::chrono
一方std::choronoはプラットフォームに依存せず,使い勝手もよい(精度は1msec程度の模様).
使い方は
#include <iostream>
#include <chrono>
int main(){
std::chrono::system_clock::time_point start, end; // 型は auto で可
start = std::chrono::system_clock::now(); // 計測開始時間
// 処理
end = std::chrono::system_clock::now(); // 計測終了時間
double elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count(); //処理に要した時間をミリ秒に変換
}
となっている.
std::chrono::duration_cast<変換型>(duration)の変換型には,ナノ秒(nanoseconds),マイクロ秒(microseconds),ミリ秒(microseconds),秒(seconds) を指定できる.