0

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

谢谢

4

2 回答 2

0

一遍time又一遍地写我自己的

没关系。您可以以两种方式执行读/写一万次并计算平均时间。

如果你真的想使用一个库,你可以试试Google Perftools

于 2013-03-31T21:29:48.407 回答
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 等。

于 2013-03-31T22:43:08.833 回答