【发布时间】:2016-07-04 01:07:04
【问题描述】:
我想计算执行一个函数所需的时间(以纳秒为单位)。我知道这可能是一个重复的问题,但我无法在任何地方找到解决方案。我已经有一个毫秒的工作计算(取自 MSDN):
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&begin);
callfunction();
QueryPerformanceCounter(&end);
elapsed.QuadPart = (end.QuadPart - begin.QuadPart);
elapsed.QuadPart *= 1000000.0;
elapsed.QuadPart /= freq.QuadPart;
我尝试按照相同的想法做一些事情以实现纳秒级的结果,但无济于事。我已经使用函数clock_gettime()在linux中实现了这个。
此外,代码是用 C 而不是 C++ 编写的。
感谢您的帮助。
【问题讨论】:
-
QueryPerformanceFrequency() 的返回值取决于您的主板设计。总是至少有一百万。降低到纳秒分辨率通常需要使用处理器时钟的便宜的。毫无意义,这样的频率源是相当不准确的。而且没有必要,现代处理器还不够确定性。