boost::cpu_timer で時間計測

boost::cpu_timerを使えばナノ秒単位の取得ができる!らしいので試してみた。

OS:windows7 64bit
CPU:Core2Duo 3GHz

こんなコード

boost::timer::auto_cpu_timer timer;
boost::timer::nanosecond_type times[100];

for(int i = 0; i < 100; i++){
    timer.start();
    times[i] = timer.elapsed().wall;
}

for(int i = 0; i < 100; i++){
    std::cout << times[i] << "ns" << std::endl;
}

結果

342ns
342ns
684ns
685ns
342ns
342ns
342ns
684ns
684ns
342ns
342ns
684ns
342ns
342ns
342ns
684ns
685ns
342ns
342ns
684ns
685ns
342ns
343ns
684ns
685ns
342ns
343ns
684ns
685ns
342ns
343ns
684ns
343ns
342ns
685ns
684ns
343ns
342ns
343ns
684ns
343ns
342ns
685ns
684ns
685ns
342ns
342ns
684ns
343ns
342ns
685ns
684ns
342ns
342ns
685ns
684ns
342ns
342ns
685ns
684ns
342ns
342ns
684ns
342ns
342ns
684ns
684ns
342ns
342ns
684ns
684ns
342ns
342ns
684ns
684ns
342ns
342ns
685ns
342ns
342ns
342ns
685ns
342ns
342ns
342ns
685ns
342ns
343ns
342ns
343ns
342ns
685ns
342ns
343ns
684ns
685ns
684ns
342ns
342ns

CPU負荷をかけても変化なし。
マイクロ秒なら正確に出来そう。