寻找最准确的时间戳。
CPU 周期计数器似乎可以提供:使用 unsigned __int64 __rdtsc();
如果我能够关闭英特尔芯片上的动态 CPU 速度选项“SpeedStep 技术”(我假设是从 BIOS 中实现的?):
rdtsc() 是否可以准确测量两个时间之间的耗时? 事件?
CPU 时钟速度是多少?真的是广告上说的吗 CPU速度(即2.4 GHz CPU - 使用每秒2,400,000,000除以CPU时钟计数值以获得实际时间)?
最佳答案
Will rdtsc() be an accurate measure of elapsed time between two events?
不,一般情况下不会。如果您将代码限制为在单个处理器/内核上运行,则可能会有一些机会,但如果不这样做,单独处理器/内核的计数器之间的差异可能会导致错误的结果。
What will be the cpu clock speed? Is it be exactly the advertised CPU speed (i.e. 2.4 GHz CPU - use 2,400,000,000 per second to divide the CPU clock count value for getting the actual time)?
大多数机器允许用户在 BIOS 设置中调整时钟速度。根据代码运行的环境,您可能可以访问主板的 1.024 MHz 时钟,无论 CPU 时钟速度如何,该时钟都是恒定的。如果您能阅读它,这可以为您确定时间戳计数器上的速率提供坚实的基础。
关于c++ - 如果在 Intel CPU 上关闭 "SpeedStep Technology",RDTSC() 是否准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918927/