C ++中有没有办法获得纳秒精度?相当于Java中的纳秒计时器( System.nanotime )。
答案 0 :(得分: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;
答案 1 :(得分:2)
在C ++ 11实现中,您应该能够使用std::chrono
。
在linux和其他几种Unix风格中,clock_gettime
也会给你时间精确到纳秒级。在窗口中有GetSystemTime
,它提供毫秒精度。
然而,像他们所有人一样,它依赖于实际的OS / Library / etc,如果你实际上得到纳秒,微秒,毫秒或其他一些准确性,那么实现时间通常会在nanoseconds
中显示,但是这并不一定能给你很高的准确度 - 每次“滴答”可能会跳过1000000或10000或14718 ns。