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