C++でナノ秒の精度を得る方法はありますか? Java のナノ秒タイマー ( System.nanotime )に相当するもの。
質問する
5300 次
2 に答える
3
Windows/Visual Studio (std::chrono
少なくとも VS2010 では実装されていない可能性があります) を使用QueryPerformanceCounter
しQueryPerformanceFrequency
ている場合は、 と を使用して、タイミング タスクで最高度の精度を得ることができます。
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 に答える