簡體   English   中英

獲取C程序的平均運行時間

[英]Get average run-time of a C program

我正在嘗試測量將未對齊與對齊位寫入二進制文件的速度差異。 我想知道的是有一個工具,我可以使用(除了運行time再次超過過來,寫我自己的)采樣程序的平均運行時間(我運行基於Linux的操作系統)?

謝謝

一遍又一遍地運行time ,寫我自己的

沒關系。 您可以同時執行一萬次讀/寫操作,並計算平均時間。

如果您真的想使用庫,可以嘗試使用Google Perftools

將其放在頭文件中:

#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM