こんにちは。
現役エンジニアの”はやぶさ”@Cpp_Learningです。
WindowsやLinuxなどで動く『マルチプラットフォーム対応』のソフトウェア開発をすることがあります。
C++で処理時間を計測するとき、毎回Timer系ライブラリを検索しているので…
C++11で追加された”chrono”による処理時間計測についての備忘録を書きます。
”chrono”を採用した理由
以下のようなTimer系ライブラリを探していました↓
【求めているTimer系ライブラリ】
- マルチプラットフォーム対応しやすい(C++標準ライブラリがベスト)
- 高精度(msecオーダー)
- 扱いやすい
色々と調査した結果 ”chrono” がベストだと判断しました。
”chrono”による処理時間計測
”chrono”による処理時間計測の『雛形ソースコード』
実行結果↓
Sun Feb 10 21:41:26 2019
1 msec
処理を開始した時間(タイムスタンプ)と処理時間を表示します(ミリ時間で表示)。
24行目の”std::chrono::milliseconds”の部分を変更すれば、任意の時間単位に変換できます。
名前空間 ”std::chrono” 定義 | 時間単位 |
std::chrono::nanoseconds | ナノ秒 |
std::chrono::microseconds | マイクロ秒 |
std::chrono::milliseconds | ミリ秒 |
std::chrono::seconds | 秒 |
std::chrono::minutes | 分 |
std::chrono::hours | 時 |
実行環境
本記事で紹介した『雛形ソースコード』はオンライン実行環境“paiza.IO”と以下の記事で紹介しているWSL(Windows Subsystem for Linux)で動作確認しました。

C++コンパイラがインストール済みの環境ならWindows/Linuxどちらでも動きます
おわりに
マルチプラットフォーム対応のソフトウェア開発をするときに便利なC++標準ライブラリの”chrono”で処理時間計測する『雛形ソースコード』を紹介しました。
C++のTimer系ライブラリで何を使うか悩んでいる人は参考になるかも(*・ω・)ノ♪