C ++中定时的纳秒精度

时间:2013-07-10 10:10:46

标签: c++ milliseconds delta nanotime

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

2 个答案:

答案 0 :(得分:3)

如果您使用的是Windows / Visual Studio(可能没有实现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;

答案 1 :(得分:2)

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

在linux和其他几种Unix风格中,clock_gettime也会给你时间精确到纳秒级。在窗口中有GetSystemTime,它提供毫秒精度。

然而,像他们所有人一样,它依赖于实际的OS / Library / etc,如果你实际上得到纳秒,微秒,毫秒或其他一些准确性,那么实现时间通常会在nanoseconds中显示,但是这并不一定能给你很高的准确度 - 每次“滴答”可能会跳过1000000或10000或14718 ns。