c語言中用clock函數(shù) c++中clock函數(shù)

C語言的clock()測出來的是什么時間

clock函數(shù)返回的是cpu時間,并不是秒數(shù),真正的一秒鐘可能包含若干個CPU時間,這個值通常是由宏CLOCKS_PER_SEC來定義,表示一秒中有CLOCKS_PER_SEC這么多個cpu時間,不同的編譯器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到實際的秒數(shù)。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比甌海網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式甌海網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋甌海地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。

附linux下clock函數(shù)說明:

在單獨的窗口中打開圖片可以看得更清楚一些,注意紅線部分說明:要計算秒數(shù),除以CLOCKS_PER_SEC

C語言中有沒有用于計時的函數(shù)?怎么用?

有,CLOCK函數(shù)。

clock()是C/C++中的計時函數(shù),而與其相關的數(shù)據(jù)類型是clock_t。在MSDN中,查得對clock函數(shù)定義如下:clock_t clock(void) ; #ifndef _CLOCK_T_DEFINED ?typedef long clock_t;

#define _CLOCK_T_DEFINED ? ? ??#endif。

可以看到每過千分之一秒(1毫秒),調用clock函數(shù)返回的值就加1。

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器以及超級電腦等作業(yè)平臺。

1967年,劍橋大學的Martin Richards對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。

c語言 時間函數(shù)

CLOCK()函數(shù):

clock()是C/C++中的計時函數(shù),而與其相關的數(shù)據(jù)類型是clock_t。在MSDN中,查得對clock函數(shù)定義如下:

clock_t

clock(void)

;

這個函數(shù)返回從“開啟這個程序進程”到“程序中調用clock()函數(shù)”時之間的CPU時鐘計時單元(clock

tick)數(shù),在MSDN中稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。其中clock_t是用來保存時間的數(shù)據(jù)類型,在time.h文件中,我們可以找到對它的定義:

#ifndef

_CLOCK_T_DEFINED

typedef

long

clock_t;

#define

_CLOCK_T_DEFINED

#endif

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

#define

CLOCKS_PER_SEC

((clock_t)1000)

可以看到每過千分之一秒(1毫秒),調用clock()函數(shù)返回的值就加1。下面舉個例子,你可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:

void

elapsed_time()

{

printf("Elapsed

time:%u

secs.\n",clock()/CLOCKS_PER_SEC);

}

當然,你也可以用clock函數(shù)來計算你的機器運行一個循環(huán)或者處理其它事件到底花了多少時間:

#include

stdio.h

#include

stdlib.h

#include

time.h

int

main(void)

{

long

i

=

10000000L;

clock_t

start,

finish;

double

duration;

/*

測量一個事件持續(xù)的時間*/

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

to

do

10000000

empty

loops

is

0.03000

seconds

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

time_t

time(

time_t

*timer

);

返回值是1970年到現(xiàn)在的秒數(shù)

用long型接就可以了

參數(shù)也是同樣意義

long

time_s

=

0;

time_s

=

time(

NULL

);

//

time_s就是1970年到現(xiàn)在的秒數(shù)

或者

long

*

time_s

=

NULL;

time(time_s);

//

*time_s就是1970年到現(xiàn)在的秒數(shù)

要計算前后一段時間的話之前取一次time,之后取一次相減就知道用了多少秒了

分享名稱:c語言中用clock函數(shù) c++中clock函數(shù)
標題URL:http://muchs.cn/article4/dossjoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、軟件開發(fā)、域名注冊、網(wǎng)站內(nèi)鏈、企業(yè)建站、網(wǎng)站營銷

廣告

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

網(wǎng)站托管運營