獲取程式的執行時間

2021-09-30 11:29:06 字數 1379 閱讀 5244

c/c++中的計時函式是clock(),而與其相關的資料型別是clock_t。在msdn中,查得對clock函式定義如下:

clock_t clock( void );

這個函式返回從「開啟這個程式程序」到「程式中呼叫clock()函式」時之間的cpu時鐘計時單元(clock tick)數,在msdn中稱之為掛鐘時間(wal-clock)。其中clock_t是用來儲存時間的資料型別,在time.**件中,我們可以找到對它的定義:

#ifndef _clock_t_defined

typedef long clock_t;

#define _clock_t_defined

#endif

很明顯,clock_t是乙個長整形數。在time.**件中,還定義了乙個常量clocks_per_sec,它用來表示一秒鐘會有多少個時鐘計時單元,其定義如下:

#define clocks_per_sec ((clock_t)1000)

void elapsed_time()

千萬不要用clock測試啊 

乙個是14s,用的gettimeofday(正確) ,乙個是clock 10 。。。汗。。

上面我們看到時鐘計時單元的長度為1毫秒,那麼計時的精度也為1毫秒,那麼我們可不可以通過改變clocks_per_sec的定義,通過把它定義的大一些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標準c/c++中,最小的計時單位是一毫秒 。

還有乙個精確到 us 的函式 gettimeofday () 

#include

int main()

{float time_use=0;

struct timeval start;

struct timeval end;

//struct timezone tz; //後面有說明

gettimeofday(&start,null); //gettimeofday(&start,&tz);結果一樣

printf("start.tv_sec:%d\n",start.tv_sec);

printf("start.tv_usec:%d\n",start.tv_usec);

sleep(3);

gettimeofday(&end,null);

printf("end.tv_sec:%d\n",end.tv_sec);

printf("end.tv_usec:%d\n",end.tv_usec);

time_use=(end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec);//微秒

printf("time_use is %f\n",time_use);

//輸出:time_use is 3001410.000000

獲取程式執行時間

獲取程式執行時間,對程式效能進行度量。include double start clock 段 system 程式名.exe 僅對於dos double end clock double time double end begin clocks per sec 1000 ms include dwo...

VC 獲取程式執行時間和系統執行時間

cstring str,str1 獲取程式執行時間 long t1 gettickcount 程式段開始前取得系統執行時間 ms sleep 500 afxmessagebox do something.long t2 gettickcount 程式段結束後取得系統執行時間 ms str.forma...

C 獲取程式執行時間

命名空間 system.diagnostics stopwatch 例項可以測量乙個時間間隔的執行時間,也可以測量多個時間間隔的總執行時間。在典型的 stopwatch 方案中,先呼叫 start 方法,然後呼叫 stop 方法,最後使用 elapsed 屬性檢查執行時間。stopwatch 例項或...