真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言計時函數(shù) c語言計時函數(shù) 500ms

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

CLOCK()函數(shù):

為慶元等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及慶元網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計、慶元網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

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

clock_t

clock(void)

;

這個函數(shù)返回從“開啟這個程序進程”到“程序中調(diào)用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毫秒),調(diào)用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");

}

在筆者的機器上,運行結(jié)果如下:

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語言如何計時

C語言中提供了許多庫函數(shù)來實現(xiàn)計時功能

下面介紹一些常用的計時函數(shù)

1. time()

頭文件:time.h

函數(shù)原型:time_t time(time_t * timer)

功能:返回以格林尼治時間(GMT)為標準,從1970年1月1日00:00:00到現(xiàn)在的時此刻所經(jīng)過的秒數(shù)

用time()函數(shù)結(jié)合其他函數(shù)(如:localtime、gmtime、asctime、ctime)可以獲得當前系統(tǒng)時間或是標準時間。

用difftime函數(shù)可以計算兩個time_t類型的時間的差值,可以用于計時。用difftime(t2,t1)要比t2-t1更準確,因為C標準中并沒有規(guī)定time_t的單位一定是秒,而difftime會根據(jù)機器進行轉(zhuǎn)換,更可靠。

說明:C標準庫中的函數(shù),可移植性最好,性能也很穩(wěn)定,但精度太低,只能精確到秒,對于一般的事件計時還算夠用,而對運算時間的計時就明顯不夠用了。

2. clock()

頭文件:time.h

函數(shù)原型:clock_t clock(void);

功能:該函數(shù)返回值是硬件滴答數(shù),要換算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,這兩個量的值都是1000。

說明:可以精確到毫秒,適合一般場合的使用。

3. timeGetTime()

頭文件:Mmsystem.h??引用庫: Winmm.lib

函數(shù)原型:DWORD timeGetTime(VOID);

功能:返回系統(tǒng)時間,以毫秒為單位。系統(tǒng)時間是從系統(tǒng)啟動到調(diào)用函數(shù)時所經(jīng)過的毫秒數(shù)。注意,這個值是32位的,會在0到2^32之間循環(huán),約49.71天。

說明:該函數(shù)的時間精度是五毫秒或更大一些,這取決于機器的性能??捎胻imeBeginPeriod和timeEndPeriod函數(shù)提高timeGetTime函數(shù)的精度。如果使用了,連續(xù)調(diào)用timeGetTime函數(shù),一系列返回值的差異由timeBeginPeriod和timeEndPeriod決定。

4. GetTickCount()

頭文件:windows.h

函數(shù)原型:DWORD WINAPI GetTickCount(void);

功能:返回自設(shè)備啟動后的毫秒數(shù)(不含系統(tǒng)暫停時間)。

說明:精確到毫秒。對于一般的實時控制,使用GetTickCount()函數(shù)就可以滿足精度要求。

5. QueryPerformanceCounter()、QueryPerformanceFrequency()

頭文件:windows.h

函數(shù)原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

功能:前者獲得的是CPU從開機以來執(zhí)行的時鐘周期數(shù)。后者用于獲得你的機器一秒鐘執(zhí)行多少次,就是你的時鐘周期。

補充:LARGE_INTEGER既可以是一個8字節(jié)長的整型數(shù),也可以是兩個4字節(jié)長的整型數(shù)的聯(lián)合結(jié)構(gòu), 其具體用法根據(jù)編譯器是否支持64位而定:

在進行定時之前,先調(diào)用QueryPerformanceFrequency()函數(shù)獲得機器內(nèi)部定時器的時鐘頻率,然后在需要嚴格定時的事件發(fā)生之前和發(fā)生之后分別調(diào)用QueryPerformanceCounter()函數(shù),利用兩次獲得的計數(shù)之差及時鐘頻率,計算出事件經(jīng)歷的精確時間。

說明:這種方法的定時誤差不超過1微秒,精度與CPU等機器配置有關(guān),一般認為精度為透微秒級。在Windows平臺下進行高精度計時的時候可以考慮這種方法。

6. gettimeofday()

Linux C函數(shù)。

頭文件:sys/time.h

函數(shù)原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

說明:其參數(shù)tv是保存獲取時間結(jié)果的結(jié)構(gòu)體,參數(shù)tz用于保存時區(qū)結(jié)果(若不使用則傳入NULL即可)。

timeval的定義為:

struct?timeval?{ ?

long?tv_sec;?//?秒數(shù)

long?tv_usec;?//微秒數(shù)

}

可見該函數(shù)可用于在linux中獲得微秒精度的時間。

說明:使用這種方式計時,精度可達微秒。經(jīng)驗證,在arm+linux的環(huán)境下此函數(shù)仍可使用。

c語言計時函數(shù)

在開始時用time()函數(shù)取一次時間,在結(jié)束時(輸入與生成相同時)再用time()取一次時間,之后求出再次時間之差即可。

*************************************************

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

}

/////////////////////////////////////////////

輸出兩次按鍵之間的時間(秒)


文章名稱:c語言計時函數(shù) c語言計時函數(shù) 500ms
本文地址:http://weahome.cn/article/dodpses.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部