現在位置: ホーム / みらくるブログ / C++の時間ライブラリchronoでの現在時刻の取得時間

C++の時間ライブラリchronoでの現在時刻の取得時間

C++11では、時間に関するライブラリchronoが追加されました。これによりポータビリティの高い方法で時間の計測が可能になりました。一方、短い時間を計測する場合、時刻取得関数そのものの実行時間が気になります。chronoの現在時刻の取得のための時間を簡易的に計測しました。

試験方法

system_clock::now()を多数回コールする。それを実行時間で割って1回あたりの実行時間と考える。

ソース

chrono-many.cc

#include <cstdlib>
#include <chrono>

using namespace std;

int main(int argc, char *argv[])
{
        const size_t nloop = atol(argv[1]);
        chrono::system_clock::time_point t;
        for (size_t i = 0; i < nloop; i++)
                t = std::chrono::system_clock::now();
}

Makefile

CXXFLAGS=-g3 -O3
chrono-many:

実行環境と測定結果

CPU Core i7 CPU 860  @ 2.80GHz
Memory DDR2-1333MHz
OS Ubuntu 17.04
Compiler GCC 6.2.0
$ time ./chrono-many 1000000000

real    0m22.301s
user    0m22.264s
sys     0m0.012s

上記より、1回あたりの平均は約22ns。測定対象時間が約1us以上なら、この関数自体のオーバーヘッドを無視できる場合も多いだろう。

タグ: