C++11から時間Utilのchronoライブラリが追加されました。 ここではchronoの機能を使って時間を取得、計算する方法を説明します。
現在の時間を取得する
現在の日時は、std::chrono::system_clock::nowを使うことで取得出来ます。
#include <chrono>
int main()
{
std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
return 0;
}
経過時間を計測する
time_pointクラスは演算子がオーバーライドされているので単純に引き算するだけで
time_pointの時間差を求めることが出来ます。
ただし、戻り値はstd::chrono::durationになります。
#include <chrono>
#include <iostream>
int main()
{
std::chrono::system_clock::time_point t1 = std::chrono::system_clock::now();
// 計測したい処理
std::chrono::system_clock::time_point t2 = std::chrono::system_clock::now();
std::chrono::duration<float> elapsed = t2 - t1; // floatで秒を取得
std::chrono::nanoseconds nanoElapsed = t2 - t1; // ナノ秒で取得
// ナノ秒をミリ秒に変換。切り捨て発生時はduration_castを利用する。
std::chrono::milliseconds milliSeconds = std::chrono::duration_cast<std::chrono::milliseconds>(nanoElapsed);
std::cout << elapsed.count() << std::endl;
}
std::chrono::nanosecondsというクラスが出てきましたが、中身はstd::chrono::duration
関連C++リファレンス
C++日本語リファレンス std::chrono::system_clock::now
C++日本語リファレンス std::chrono::duration