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