C語(yǔ)言函數(shù)運(yùn)行時(shí)間的計(jì)算 計(jì)算運(yùn)行時(shí)間C語(yǔ)言函數(shù)

C語(yǔ)言計(jì)算時(shí)間

在C語(yǔ)言中計(jì)算時(shí)間,可以使用標(biāo)準(zhǔn)庫(kù)中的計(jì)時(shí)函數(shù)——clock()。

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)行唐免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

函數(shù)原型:

clock_t?clock(?void?);

其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類型,在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");

}

計(jì)算C語(yǔ)言程序運(yùn)行時(shí)間(hello world)

#include "time.h"

#include "stdio.h"

main()

{

double start, finish;

start = clock();//取開(kāi)始時(shí)間

printf("Hello, World!\n");

finish = clock();//取結(jié)束時(shí)間

printf( "%f seconds\n",(finish - start) / CLOCKS_PER_SEC);//以秒為單位顯示之

}

上面的代碼理論上是可以顯示printf("Hello, World!\n");語(yǔ)句的運(yùn)行時(shí)間的,但我猜實(shí)際的顯示結(jié)果是0,因?yàn)閜rintf("Hello, World!\n");這個(gè)語(yǔ)句的運(yùn)行時(shí)間是可以忽略不計(jì)的,加一個(gè)次數(shù)較多的循環(huán)才能看到效果

C語(yǔ)言中有沒(méi)有一種計(jì)時(shí)函數(shù),能算出從程序中某段代碼運(yùn)行所花的時(shí)間?

在開(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í)間(秒)

怎樣計(jì)算程序的執(zhí)行時(shí)間(C語(yǔ)言中)?

在c語(yǔ)言中有專門處理系統(tǒng)時(shí)間,程序計(jì)時(shí)等等功能的庫(kù),

即time.h

在time.h中函數(shù)clock_t clock( void )可以完成計(jì)時(shí)功能。

這個(gè)函數(shù)返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù),在MSDN中稱之為掛鐘時(shí)間(wal-clock)。其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類型,在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è)程序計(jì)算了循環(huán)1千萬(wàn)次所用的時(shí)間:

#include “stdio.h”

#include “stdlib.h”

#include “time.h”

int main( void )

{

long i = 10000000L;

clock_t start, finish;

double duration;

/* 測(cè)量一個(gè)事件持續(xù)的時(shí)間*/

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");

}

運(yùn)行結(jié)果如下:

Time to do 10000000 empty loops is 0.03000 seconds

參考資料:

c語(yǔ)言編程,怎么計(jì)算時(shí)間

#include stdio.h

#include stdlib.h

#include time.h

void main()

{

unsigned char time1[] = {?10, 8, 31, 9, 26 };

unsigned char time2[] = { 10, 8, 31, 9, 50 };

struct tm t1 = {0};

struct tm t2 = {0};

time_t _t1;

time_t _t2;

double diff;

t1.tm_year = time1[0] + 100;

t1.tm_mon = time1[1];

t1.tm_mday = time1[2];

t1.tm_hour = time1[3];

t1.tm_min = time1[4];

t2.tm_year = time2[0] + 100;

t2.tm_mon = time2[1];

t2.tm_mday = time2[2];

t2.tm_hour = time2[3];

t2.tm_min = time2[4];

_t1 = _mkgmtime( t1 );

_t2 = _mkgmtime( t2 );

diff = difftime(_t2, _t1 );

printf( "相差 %.0f 分鐘\n", diff / 60 );

}

擴(kuò)展資料:

C語(yǔ)言中有兩個(gè)相關(guān)的函數(shù)用來(lái)計(jì)算時(shí)間差,分別是:

time_t time( time_t *t)? ?與 clock_t clock(void)

頭文件: time.h

計(jì)算的時(shí)間單位分別為: s? ?, ms

time_t 和 clock_t 是函數(shù)庫(kù)time.h 中定義的用來(lái)保存時(shí)間的數(shù)據(jù)結(jié)構(gòu)

返回值:

1、time? : 返回從公元1970年1月1號(hào)的UTC時(shí)間從0時(shí)0分0秒算起到現(xiàn)在所經(jīng)過(guò)的秒數(shù)。如果參數(shù) t 非空指針的話,返回的時(shí)間會(huì)保存在 t 所指向的內(nèi)存。

2、clock:返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù)。? ? ?1單元 = 1 ms。

所以我們可以根據(jù)具體情況需求,判斷采用哪一個(gè)函數(shù)。

具體用法如下例子:

#include time.h

#include stdio.h

#include stdlib.h

int main()

{

time_t c_start, t_start, c_end, t_end;

c_start = clock();? ? //! 單位為ms

t_start = time(NULL);? //! 單位為s

system("pause");

c_end? ?= clock();

t_end = time(NULL);

//!difftime(time_t, time_t)返回兩個(gè)time_t變量間的時(shí)間間隔,即時(shí)間差

printf("The pause used %f ms by clock()\n",difftime(c_end,c_start));

printf("The pause used %f s by time()\n",difftime(t_end,t_start));

system("pause");

return 0;

}

因此,要計(jì)算某一函數(shù)塊的占用時(shí)間時(shí),只需要在執(zhí)行該函數(shù)塊之前和執(zhí)行完該函數(shù)塊之后調(diào)用同一個(gè)時(shí)間計(jì)算函數(shù)。再調(diào)用函數(shù)difftime()計(jì)算兩者的差,即可得到耗費(fèi)時(shí)間。

C語(yǔ)言求一個(gè)程序運(yùn)行時(shí)間

C/C++中的計(jì)時(shí)函數(shù)是clock()。

所以,可以用clock函數(shù)來(lái)計(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;

/*?測(cè)量一個(gè)事件持續(xù)的時(shí)間*/

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");

}

分享名稱:C語(yǔ)言函數(shù)運(yùn)行時(shí)間的計(jì)算 計(jì)算運(yùn)行時(shí)間C語(yǔ)言函數(shù)
路徑分享:http://muchs.cn/article42/hhshec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)建站公司、品牌網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站營(yíng)銷、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)