2

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

4

2 回答 2

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;
于 2013-07-10T10:19:21.483 回答
2

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

在 linux 和其他几个 Unix 风格中,clock_gettime也会给你纳秒精度的时间。在 Windows 中,GetSystemTime它给出了毫秒精度。

但是,就像他们所有的人一样,它取决于实际的操作系统/库/等,如果您实际获得纳秒、微秒、毫秒或其他一些精度,则它的实现 - 时间通常以nanoseconds.准确性 - 每个“滴答”可能会跳跃 1000000 或 10000 或 14718 ns。

于 2013-07-10T10:16:19.173 回答