在C++中有没有一种获得纳秒精度的方法?相当于Java中纳秒计时器(System.nanotime)的东西。
发布于 2013-07-10 10:19:21
如果您使用的是Windows/Visual (它可能不会实现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-10 10:16:19
在C++11实现中,您应该能够使用std::chrono。
在linux和其他几种Unix版本中,clock_gettime还将为您提供纳秒精度的时间。在windows中有GetSystemTime,它提供毫秒精度。
然而,就像他们一样,它依赖于实际的OS/Library/etc,如果你实际得到纳秒、微秒、毫秒或其他精度--时间通常用nanoseconds表示,但这不一定会给你很高的精度--它可能每“滴答”跳1000000或10000或14718 ns。
https://stackoverflow.com/questions/17567953
复制相似问题