在測試程序時,往往需要了解程序執行所需的時間,在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;
}