C語言:獲取程序運行消耗的時間——gettimeofday

在測試程序時,往往需要了解程序執行所需的時間,在C語言中可以使用函數gettimeofday來得到時間。

來不及解釋了,直接上例子。

對於普通的C程序:

使用 gettimeofday() 函數

#include<stdio.h>
#include<sys/time.h> //注意引用這個頭文件
#include<unistd.h>

int delay(int time)
{
//這裏用來表示你自己要運行的程序
}

int main()
{
    //定義兩個結構體,來記錄開始和結束時間
        struct  timeval start;
        struct  timeval end;
        //記錄兩個時間差
        unsigned  long diff;

        //第一次獲取時間,即表示開始記時
        gettimeofday(&start,NULL);

        //運行自己的程序
        delay(10);

        //第二次獲取時間,即表示結束記時
        gettimeofday(&end,NULL);

        //計算時間差,並打印
        diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
        printf(“thedifference is %ld\n”,diff);

        return 0;
}

哈哈,例子結束,是不是很簡單。當然這是抄的。。。。。。。

對於內核模塊的C程序

雖然同是C程序,但是寫內核模塊就有很大的不同哦。
使用 do_gettimeofday() 函數,同時,頭文件也變了哦

同樣的,直接上例子。

#include<stdio.h>

//注意引用這個頭文件
#include<linux/time.h> 

#include<unistd.h>

int delay(int time)
{
//這裏用來表示你自己要運行的程序
}

int main()
{
    //定義兩個結構體,來記錄開始和結束時間
        struct  timeval start;
        struct  timeval end;
        //記錄兩個時間差
        unsigned  long diff;

        //第一次獲取時間,即表示開始記時
        do_gettimeofday(&start,NULL);

        //運行自己的程序
        delay(10);

        //第二次獲取時間,即表示結束記時
        do_gettimeofday(&end,NULL);

        //計算時間差,並打印
        diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;
        printf(“thedifference is %ld\n”,diff);

        return 0;
}
發佈了51 篇原創文章 · 獲贊 35 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章