我正在尝试在Redhat Linux上优化我们的gettimeofday()系统调用。 通过他们的文档,可以通过使用虚拟动态共享对象(VDSO)在用户区域中运行调用来提高速度。我很好奇我怎么能在第一时间调整通话的速度?我想进行更改,然后将其与之前的结果进行比较
答案 0 :(得分:6)
伪代码:
gettimeofday()
并将结果保存在a
gettimeofday()
一百万次gettimeofday()
并将结果保存在b
(b-a)/1,000,000
原理:对gettimeofday()
的两个边界调用不应对循环产生太大影响。调用你想要的时间函数可能会感觉很奇怪,但没关系。
答案 1 :(得分:2)
也许
strace -T
答案 2 :(得分:1)
如果您在英特尔平台上,IAPerf.H有一些宏可以使高分辨率时序变得简单。
PERFINITMHZ(1200) // Set the clockspeed of your processor
PERFSTART
gettimeofday();
PERFSTOP
PERFREPORT
它正在使用Time Stamp Register来获取时间,因此您可以避免系统调用的成本并获得准确的计时。您可能仍希望将gettimeofday调用一百万次,并在结果不够充实的情况下划分结果。