C ++中有没有办法获得纳秒精度?相当于 Java 中的纳秒计时器(System.nanotime)。
问问题
5300 次
2 回答
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;
于 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 回答