我正试图在Redhat Linux上优化我们的gettimeofday()系统调用。 通过他们的文档,它可以通过使用虚拟动态共享对象(VDSO)在用户区域运行呼叫来加快速度。我很好奇,我怎样才能确定电话的速度呢?我想做出改变,然后比较对我的以前的结果测量系统调用速度
Q
测量系统调用速度
4
A
回答
6
伪代码:
- 呼叫
gettimeofday()
和保存导致a
- 呼叫
gettimeofday()
一百万次 - 呼叫
gettimeofday()
并保存结果在b
- 计算
(b-a)/1,000,000
原理:对gettimeofday()
的两个边界调用不应对循环产生太大影响。调用你想要的功能可能会感觉很奇怪,但没关系。
+1
+1常识胜。 – 2010-09-24 13:53:17
1
如果您在英特尔平台IAPerf.H上有一些宏,可以使高分辨率的计时变得简单明了。
PERFINITMHZ(1200) // Set the clockspeed of your processor
PERFSTART
gettimeofday();
PERFSTOP
PERFREPORT
它使用Time Stamp Register所以你避免SYS通话费用,以获得时间并获得精确的时序。如果结果不够充分,您可能仍然希望调用gettimeofday一百万次,并将结果分开。
1
也许
strace -T
相关问题
- 1. 测量系统++()的调用用C
- 2. SQL调度系统
- 3. Codeigniter调度系统
- 4. R中的快速系统调用
- 5. 测量下载速度
- 6. 测量下载速度Java
- 7. 测量TCP连接速度
- 8. asp.net调度/订票系统
- 9. 拟合调度系统
- 10. iPhone/iPod文件系统的速度
- 11. 被测系统上的调用方法
- 12. 使用Java/Android测量下载速度
- 13. 使用Eclipse测量下载速度
- 14. 使用python测量上传速度
- 15. 使用http.ResponseBody测量上传速度
- 16. RSpec测试的测量速度
- 17. 系统(“”)调用
- 18. 差异b/w意向调度系统和前台调度系统
- 19. 测量推荐系统的质量
- 20. 使用Python(Bash?)获取操作系统级别的系统信息(CPU速度)
- 21. Powershell调用命令和系统变量
- 22. 系统调用和系统程序
- 23. 如何测量文件系统路径的深度?
- 24. Android的加速度计来测量速度
- 25. Android加速度计 - 测量缓慢加速度
- 26. MIPS:系统调用
- 27. 调用C“系统” ++
- 28. Ptracing系统调用
- 29. 调用android系统
- 30. Pipe()系统调用
我不知道如何系统调用在用户空间中运行,或有什么可以做,以充分优化吗......?我的理解是,VDSO只是让内核可以公开在当前处理器上运行系统调用的首选方式(使用'int 80h'或'sysenter' /'syscall'),并跟踪其他一些内务处理细节。 – Doug 2010-09-24 13:32:19
在glibc运行时库中实现了一个虚拟动态共享对象(VDSO)。 VDSO映射一些内核代码,这是读取用户空间中的gettimeofday所必需的。标准红帽企业版Linux 5.1允许gettimeofday函数完全在用户空间中执行 ,消除系统调用开销。 – Ananymous 2010-09-24 13:34:52
谢谢,这绝对有趣 - 我想到了这种可能性,但没有意识到它实际上已经完成。似乎内核在发生上下文切换时将处理器的时间戳记计数器(RDTSC)和时间存储在VDSO页面中,这使得glibc可以计算一天中的时间,而无需实际进行系统调用。 – Doug 2010-09-24 13:44:07