[英]Get average run-time of a C program
我正在嘗試測量將未對齊與對齊位寫入二進制文件的速度差異。 我想知道的是有一個工具,我可以使用(除了運行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,以此類推。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.