2

C++でナノ秒の精度を得る方法はありますか? Java のナノ秒タイマー ( System.nanotime )に相当するもの。

4

2 に答える 2

3

Windows/Visual Studio (std::chrono少なくとも VS2010 では実装されていない可能性があります) を使用QueryPerformanceCounterQueryPerformanceFrequencyている場合は、 と を使用して、タイミング タスクで最高度の精​​度を得ることができます。

LARGE_INTEGER freq, counter1, counter2;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&counter1);
task();
QueryPerformanceCounter(&counter2);
long double elapsed = (long double) (counter2.QuadPart - counter1.QuadPart) / (long double) freq.QuadPart;
于 2013-07-10T10:19:21.483 に答える
2

C++11 の実装では、 を使用できるはずですstd::chrono

Linux および他のいくつかの Unix フレーバーでclock_gettimeは、ナノ秒の精度で時間を提供します。WindowsにはGetSystemTime、ミリ秒の精度を与えるものがあります。

ただし、他のすべてのものと同様に、実際の OS/ライブラリ/etc の実装に依存します。実際にナノ秒、マイクロ秒、ミリ秒、またはその他の精度を取得する場合は、時間は で表されることがよくありnanosecondsますが、必ずしも高いとは限りません。精度-「ティック」ごとに1000000または10000または14718 nsジャンプする場合があります。

于 2013-07-10T10:16:19.173 に答える