获取C程序的平均运行时间

时间:2013-03-31 21:19:02

标签: c runtime

我正在尝试测量读取和写入错位与对齐位到二进制文件的速度差异。我想知道是否有一个我可以使用的实用程序(除了再次运行time以及编写我自己的实例)以取样程序的平均运行时间(我正在运行基于Linux的操作系统) ?

谢谢

2 个答案:

答案 0 :(得分:0)

  

运行time over&再一次写我自己的

没关系。您可以双向执行读/写一万次并计算平均时间。

如果您真的想使用图书馆,可以尝试Google Perftools

答案 1 :(得分:0)

将它放在头文件中:

#ifndef TIMER_H
#define TIMER_H

#include <stdlib>
#include <sys/time.h>

typedef unsigned long long timestamp_t;

static timestamp_t

get_timestamp ()
{
  struct timeval now;
  gettimeofday (&now, NULL);
  return  now.tv_usec + (timestamp_t)now.tv_sec * 1000000;
}
#endif

将头文件包含在您将使用的.c文件中,并执行以下操作:

#define N 10000
int main()
{
    int i;
    double avg;
    timestamp_t start, end;

    start = get_timestamp();
    for(i = 0; i < N; i++)
        foo();
    end = get_timestamp();
    avg = (end - start) / (double)N;

    printf("%f", avg);
    return 0;
}

基本上,这会调用您尝试测量N次性能的任何函数,其中N是在这种情况下定义的常量(不一定是)。它在for循环之前和for循环之后需要一个时间戳,然后计算函数执行所需的平均时间。 get_timestamp()函数返回微秒数,所以如果你需要毫秒,除以1000,秒 - 除以1000000等。