测量系统调用的速度

时间:2010-09-24 13:08:17

标签: linux performance system-calls

我正在尝试在Redhat Linux上优化我们的gettimeofday()系统调用。 通过他们的文档,可以通过使用虚拟动态共享对象(VDSO)在用户区域中运行调用来提高速度。我很好奇我怎么能在第一时间调整通话的速度?我想进行更改,然后将其与之前的结果进行比较

3 个答案:

答案 0 :(得分:6)

伪代码:

  1. 致电gettimeofday()并将结果保存在a
  2. 拨打gettimeofday()一百万次
  3. 致电gettimeofday()并将结果保存在b
  4. 计算(b-a)/1,000,000
  5. 原理:对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调用一百万次,并在结果不够充实的情况下划分结果。