C++中有获得纳秒精度的方法吗?相当于Java中的纳秒计时器(System.nanotime)。
如果您使用的是Windows/VisionStudio(它可能不会实现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;
在C++11实现中,您应该能够使用std::chrono
。
在linux和其他几种Unix风格中,clock_gettime
也将为您提供纳秒精度的时间。在窗口中有GetSystemTime
,它提供毫秒精度。
然而,就像他们所有的同类产品一样,它取决于实际的操作系统/库等,如果你真的得到纳秒、微秒、毫秒或其他一些精度的实现——时间通常以nanoseconds
表示,但这并不一定能给你带来高精度——它可能会在每个"刻度"跳1000000、10000或14718ns。