技術は楽するために

日々の開発で作ったプログラムの一部を公開していきます。

C++でミリ秒マイクロ秒単位の性能測定する

アイスブレイク

C++で開発していて困ったのが性能測定だ。
ネットを調べても秒単位で時間計測しているものばかりで、
ミリ秒やらマイクロ秒単位で性能測定しているものはあまりなかった。
高速に動作するプログラムを開発する場合、秒単位で性能解析を実施するのは難しい。
そこで、この記事でマイクロ秒〜ミリ秒の性能測定の方法を紹介しようと思う。


サンプルコード

測定環境:Xubunts

単純に100回ループしただけの処理を測定してる。
この程度コード量の処理は秒単位で計測することは不可能である。

上記の測定方法を実施することにより、計測結果を数マイクロ秒〜ミリ秒単位で計測することが可能である。
ちなみに、サンプルコードの計測結果は、「処理時間[ms]:0.001045」(*)であった。

(*)注意事項:
この方法で計測する場合は、オーバヘッドのコストを考慮して計測しましょう。
例えば、私のマシンで下記のように何の処理も記述せずにstartとendの時刻を取得して性能測定してみると「処理時間[ms]:0.000334」となる。

つまり、「処理時間[ms]:0.000334」→0.3マイクロ程度のオーバヘッドがあるとして性能測定するようにしましょう。