摘要: RDTSC的确高效,但在当前主流环境下并不能保证准确计时,主要原因有两个:一. 各个CPU(Core)之间的TSC寄存器值不保证会同步(取值一致)。由于我们程序一般不会设置CPU亲和性,因此线程刚开始在这个core上跑,后面别切换到其它core上跑,是一种很常见的情况。因为不同CPU间的TSC寄存器初始值可能不同,两次取值相减则可能会算出不正确的值;二. CPU运行频率会经常动态调整,而某些CPU的TSC值增加的速度与CPU实际运行频率相关(当然也有较新的CPU是采用恒定速度,与实际运行频率无关的)。因此从全面的角度来说,TSC差值无法准确的转换为绝对时间;维基百科有这么一段:Under Wi 阅读全文
posted @ 2013-01-23 14:31 宇月--测试开发梦想家 阅读(1053) 评论(0) 推荐(0) 编辑