緒:
clock()是C/C++中的計時函數,返回數據類型為clock_t;
time()可獲適當前系統運行時候,也是計時函數,返回類型是time_t;
本文本家兒要介紹clock()和time()的界說;用法;和示例;
clock()計時函數:
①頭文件:
C++頭文件ctime,time.h中的庫函數clock(),供給了測試函數運行時候的方式:
②clock()返回類型為clock_t類型;
③clock_t類型:clock_t現實為long 類型,long clock_t;
④常量CLOCKS_PER_SEC,暗示每一秒(per second)有幾多個時鐘計時單位;
即每過千分之一秒(1毫秒),挪用clock()函數返回的值就加1;
clock()函數功能:
返回從開啟這個法式歷程到挪用clock()函數之間的CPU時鐘計時單位數即掛鐘時候,
單元是毫秒;
【注】:
法式中,若是寫當作(double)((finish - start) / CLOCKS_PER_SEC)這種形式,
一般環境下這個值會為0.0000,錯誤;
因為:finish,start,CLOCKS_PER_SEC均為long型變(常)量,若finish-start < 1000,則
(finish - start) / CLOCKS_PER_SEC = 0,再將其強制轉換為double型數據,獲得0.0000。
而若是寫當作(double)(finish - start) / CLOCKS_PER_SEC,先會將finish - start轉換當作double型數據,然后執行"/"操作,則編譯器主動將CLOCKS_PER_SEC晉升為double型,故而是兩
個double數據相除能獲得準確成果。
clock()函數應用:
clock函數來計較你的機械運行一個輪回或者處置其它事務到底花了幾多時候:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
long i = 10000000L;
clock_t start, finish;
double duration;
/* 測量一個事務持續的時候*/
printf( "Time to do %ld empty loops is ", i) ;
start = clock();
while( i-- );
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration );
system("pause");
}
time計時函數:
①頭文件為time.h
②函數原型:time_t time(time_t * timer)
③功能: 獲取當前的系統時候,返回的成果是一個time_t類型;
其實就是一個年夜整數,其值暗示從CUT(Coordinated Universal Time)時候1970年1月1日00:00:00(稱為UNIX系統的Epoch時候)到當前時刻的秒數。
然后挪用localtime將time_t所暗示的CUT時候轉換為當地時候(我們是+8區,比UTC多8個小時)并轉當作struct 類型,該類型的各數據當作員別離暗示年代日時分秒。
time_t數據類型:
time函數的原型也可以理解為 long time(long *tloc),即返回一個long型整數。
因為在time.h這個頭文件中time_t現實上就是long。
【注】:
①因為time_t類型編碼不克不及確定,所以盡量不要用t1-t2體例計較兩個time_t之間的時候距離,而應該用double difftime( time_t time_end, time_t time_beg )函數計較時候距離。
②time_t暗示計較機ji yuan時候,struct 暗示尺度日歷時候。
time函數應用:
計時示例:
time_t start, end;
start = time(NULL);
_sleep(1000);
end = time(NULL);
printf("duration: %lf\n", difftime(end, start));
//time()函數連系其他函數
//獲適當前系統時候或是尺度時候。
#include <stdio.h>
#include <time.h>
int main()
{
time_t timer;//time_t就是long int 類型
....
timer = time(NULL);//這一句也可以改當作time(&timer);
tblock = localtime(&timer);
printf("Local time is: %s\n",asctime(tblock));
getchar();
return 0;
}
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!