boost::cpu_timerを使えばナノ秒単位の取得ができる!らしいので試してみた。
こんなコード
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負荷をかけても変化なし。
マイクロ秒なら正確に出来そう。