clock()是C/C++中的計(jì)時(shí)函數(shù),而與其相關(guān)的數(shù)據(jù)類(lèi)型是clock_t。

創(chuàng)新互聯(lián)公司專(zhuān)注于坊子網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供坊子營(yíng)銷(xiāo)型網(wǎng)站建設(shè),坊子網(wǎng)站制作、坊子網(wǎng)頁(yè)設(shè)計(jì)、坊子網(wǎng)站官網(wǎng)定制、成都小程序開(kāi)發(fā)服務(wù),打造坊子網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供坊子網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
它的具體功能是返回處理器調(diào)用某個(gè)進(jìn)程或函數(shù)所花費(fèi)的時(shí)間。函數(shù)返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù),其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類(lèi)型。
在time.h文件中,我們可以找到對(duì)它的定義:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
clock_t其實(shí)就是long,即長(zhǎng)整形。該函數(shù)返回值是硬件滴答數(shù),要換算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,這兩個(gè)量的值都是1000,這表示硬件滴答1000下是1秒,因此要計(jì)算一個(gè)進(jìn)程的時(shí)間,用clock()除以1000即可。
clock的返回值一直是0的原因:
1、編譯器優(yōu)化,for循環(huán)實(shí)際根本沒(méi)執(zhí)行,直接跳過(guò)去了,所以時(shí)間為0。
2、clock計(jì)算的是程序占用cpu的時(shí)間,如果你的程序執(zhí)行的動(dòng)作很少,那么clock算出的時(shí)間也很少。
3、建議使用time gettimeofday函數(shù)來(lái)計(jì)時(shí)。
擴(kuò)展資料:
C語(yǔ)言中clock()函數(shù)的程序例1:(TC下運(yùn)行通過(guò))
#include?stdio.h
#include?time.h
int?main(void)
{
clock_t?start,?end;
start?=?clock();
delay(2000);
end?=?clock();
printf("The?time?was:?%f\n",?(double)(end?-?start)?/?CLK_TCK);
return?0;
}
說(shuō)明:CLK_TCK?定義在TC中的time.h中:#define?CLK_TCK18.2。
在VC6.0中也有關(guān)于CLK_TCK的宏定義,不過(guò)其值不再是18.2,而是1000。
實(shí)際上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。
參考資料來(lái)源:百度百科-clock()
在開(kāi)始時(shí)用time()函數(shù)取一次時(shí)間,在結(jié)束時(shí)(輸入與生成相同時(shí))再用time()取一次時(shí)間,之后求出再次時(shí)間之差即可。
*************************************************
#include
//for
printf()
#include
//for
system()
#include
//for
time()
time_t
void
main()
{
time_t
ts,te;
system("pause");
ts=time(null);
system("pause");
te=time(null);
printf("%ld\n",te-ts);
system("pause");
}
/////////////////////////////////////////////
輸出兩次按鍵之間的時(shí)間(秒)
time()
頭文件:time.h
函數(shù)原型:time_t time(time_t * timer)
功能:返回以格林尼治時(shí)間(GMT)為標(biāo)準(zhǔn),從1970年1月1日00:00:00到現(xiàn)在的此時(shí)此刻所經(jīng)過(guò)的秒數(shù)。
2.clock()
頭文件:time.h
函數(shù)原型:clock_t clock(void);
功能:該函數(shù)返回值是硬件滴答數(shù),要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個(gè)量的值都是1000。
3. timeGetTime()
頭文件:Mmsystem.h ?引用庫(kù): Winmm.lib
函數(shù)原型:DWORD timeGetTime(VOID);
功能:返回系統(tǒng)時(shí)間,以毫秒為單位。系統(tǒng)時(shí)間是從系統(tǒng)啟動(dòng)到調(diào)用函數(shù)時(shí)所經(jīng)過(guò)的毫秒數(shù)。注意,這個(gè)值是32位的,會(huì)在0到2^32之間循環(huán),約49.71天。
有,CLOCK函數(shù)。
clock()是C/C++中的計(jì)時(shí)函數(shù),而與其相關(guān)的數(shù)據(jù)類(lèi)型是clock_t。在MSDN中,查得對(duì)clock函數(shù)定義如下:clock_t clock(void) ; #ifndef _CLOCK_T_DEFINED ?typedef long clock_t;
#define _CLOCK_T_DEFINED ? ? ??#endif。
可以看到每過(guò)千分之一秒(1毫秒),調(diào)用clock函數(shù)返回的值就加1。
C語(yǔ)言是一門(mén)通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
盡管C語(yǔ)言提供了許多低級(jí)處理的功能,但仍然保持著良好跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫(xiě)出的C語(yǔ)言程序可在許多電腦平臺(tái)上進(jìn)行編譯,甚至包含一些嵌入式處理器以及超級(jí)電腦等作業(yè)平臺(tái)。
1967年,劍橋大學(xué)的Martin Richards對(duì)CPL語(yǔ)言進(jìn)行了簡(jiǎn)化,于是產(chǎn)生了BCPL語(yǔ)言。
在C語(yǔ)言中計(jì)算時(shí)間,可以使用標(biāo)準(zhǔn)庫(kù)中的計(jì)時(shí)函數(shù)——clock()。
函數(shù)原型:
clock_t?clock(?void?);
其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類(lèi)型,在time.h文件中,可以找到對(duì)它的定義:
#ifndef?_CLOCK_T_DEFINED
typedef?long?clock_t;
#define?_CLOCK_T_DEFINED
#endif
很明顯,clock_t是一個(gè)長(zhǎng)整形數(shù)。在time.h文件中,還定義了一個(gè)常量CLOCKS_PER_SEC,它用來(lái)表示一秒鐘會(huì)有多少個(gè)時(shí)鐘計(jì)時(shí)單元,其定義如下:
#define?CLOCKS_PER_SEC?((clock_t)1000)
可以看到每過(guò)千分之一秒(1毫秒),調(diào)用clock()函數(shù)返回的值就加1。下面舉個(gè)例子,可以使用公式clock()/CLOCKS_PER_SEC來(lái)計(jì)算一個(gè)進(jìn)程自身的運(yùn)行時(shí)間:
void?elapsed_time()
{
printf("Elapsed?time:%u?secs.\n",clock()/CLOCKS_PER_SEC);
}
當(dāng)然,也可以用clock函數(shù)來(lái)計(jì)算的機(jī)器運(yùn)行一個(gè)循環(huán)或者處理其它事件到底花了多少時(shí)間:
#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");
}
標(biāo)題名稱(chēng):c語(yǔ)言用來(lái)計(jì)時(shí)函數(shù),c++ 計(jì)時(shí)函數(shù)
標(biāo)題來(lái)源:http://chinadenli.net/article5/dsigcoi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站策劃、網(wǎng)站改版、面包屑導(dǎo)航、服務(wù)器托管、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)