免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: qjlemon
打印 上一主题 下一主题

[转]使用CPU时间戳进行高精度计时 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-07-11 09:27 |只看该作者

[转]使用CPU时间戳进行高精度计时

对该文的一点补充:
应该注意以下几点
1  根据intel的介绍,由于在现代的处理器中都具有指令乱序执行的功能,因此在有些情况下rdtsc指令并不能很好的反映真实情况。解决方法是,在rdtsc之前加一些cpuid指令,使得rdtsc后面的指令顺序执行。
2 另外,rdtsc是一条慢启动的指令,第一次执行需要比较长的启动时间,而第二次之后时间就比较短了,也就是说,这条指令在第一次工作时需要比较长的时钟周期,之后就会比较短了。所以可以多运行几次,避过第一次的消耗。
3 大家在测试某一个函数的cpu周期的时候,如果精度要求很高,需要减去rdtsc的周期消耗。我在至强2.6G上测试的结果是大约500多个时钟周期,我想这是应该考虑在内的,很多小的函数也就是几K个时钟周期。
4 一定要注意cache的影响。如果你在对同一组数据进行操作,第一次操作往往要比后面几次时间开销大,原因就在于cache的缓存功能,而这一部分是不可见的。

希望以上经验能对大家有帮助!:)

论坛徽章:
0
12 [报告]
发表于 2003-07-11 09:52 |只看该作者

[转]使用CPU时间戳进行高精度计时

Did you ever try libevent?
http://www.monkey.org/~provos/libevent/

It is cross platform (linux/FreeBSD), and implement in a low-level way:
use k-queue(for fbsd) and epool(for linux). It is much lower resource taken than "select", may give you a more precise time control(I am not quite sure at this point),since it's a low-level implementation......
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP