C++中计时的纳秒精度



C++中有获得纳秒精度的方法吗?相当于Java中的纳秒计时器(System.nanotime)。

如果您使用的是Windows/VisionStudio(它可能不会实现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;

在C++11实现中,您应该能够使用std::chrono

在linux和其他几种Unix风格中,clock_gettime也将为您提供纳秒精度的时间。在窗口中有GetSystemTime,它提供毫秒精度。

然而,就像他们所有的同类产品一样,它取决于实际的操作系统/库等,如果你真的得到纳秒、微秒、毫秒或其他一些精度的实现——时间通常以nanoseconds表示,但这并不一定能给你带来高精度——它可能会在每个"刻度"跳1000000、10000或14718ns。

相关内容

  • 没有找到相关文章

最新更新