溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言中的時(shí)間函數(shù)clock()和time()有什么用

發(fā)布時(shí)間:2022-02-23 15:11:39 來源:億速云 閱讀:197 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下C語言中的時(shí)間函數(shù)clock()和time()有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

時(shí)間函數(shù)在編寫代碼的時(shí)候會(huì)經(jīng)常用到,下面就來總結(jié)一下clocktime函數(shù)的用法,函數(shù)原型如下:

  clock_t __cdecl clock(void);
  __CRT_INLINE time_t __cdecl time(time_t *_Time);

clock函數(shù)

clock函數(shù)返回程序從運(yùn)行開始到當(dāng)前調(diào)用函數(shù)位置處CPU所使用的時(shí)間,通過這個(gè)函數(shù)就可以計(jì)算某段代碼運(yùn)行時(shí)所使用的時(shí)間。

下面通過一段簡單的代碼測試一下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
	clock_t start_t, end_t;
	start_t = clock();
	sleep(1);
	end_t = clock();
	printf("%d %d",start_t,end_t); 
	return 0;
}

剛進(jìn)入程序時(shí)通過clock函數(shù)讀取當(dāng)前CPU所使用的時(shí)間,然后使用sleep函數(shù)延時(shí)1秒,接著在使用clock函數(shù)讀取當(dāng)前CPU所使用的時(shí)間,這樣這兩個(gè)時(shí)間差應(yīng)該就是1秒。程序運(yùn)行結(jié)果如下:

C語言中的時(shí)間函數(shù)clock()和time()有什么用

通過打印的結(jié)果可以看出,第一次讀取的CPU時(shí)間是0,第二次讀取的CPU時(shí)間是1000,在程序中延時(shí)了1秒,說明clock函數(shù)返回的時(shí)間單位是毫秒(ms)。

如果要將程序運(yùn)行的時(shí)間換算為以秒為單位的話,這里就需要計(jì)算兩次運(yùn)行的時(shí)間差,然后除以每秒鐘系統(tǒng)的計(jì)數(shù)次數(shù)。系統(tǒng)中每秒鐘的計(jì)數(shù)次數(shù)用一個(gè)宏定義的值來表示。

#define CLOCKS_PER_SEC 1000

這個(gè)CLOCKS_PER_SEC的值為1000,說明CPU1秒鐘計(jì)數(shù)1000次,也就是1ms計(jì)數(shù)一次,這個(gè)和上面分析的結(jié)果是一樣的。

修改程序,將時(shí)間換算為秒,繼續(xù)測試。

C語言中的時(shí)間函數(shù)clock()和time()有什么用

通過結(jié)果可以看出這個(gè)循環(huán)耗時(shí)32ms,也就是0.032s。

time函數(shù)

time函數(shù)返回的是從 1970-01-01 00:00:00 開始到現(xiàn)在所經(jīng)過的秒數(shù)。

下面通過一個(gè)簡單的代碼演示一下time函數(shù)的用法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
	time_t seconds;
	seconds = time(NULL);
	printf("自1970-01-01 起的秒數(shù):%d s",seconds);
	return 0;
}

time函數(shù)返回值是一個(gè)time_t的類型,它的本質(zhì)其實(shí)也是一個(gè)整形數(shù)據(jù)。

C語言中的時(shí)間函數(shù)clock()和time()有什么用

函數(shù)返回的是一個(gè)整形的秒數(shù),將返回值打印出來,結(jié)果如下:

C語言中的時(shí)間函數(shù)clock()和time()有什么用

將這個(gè)秒數(shù)通過時(shí)間戳在線轉(zhuǎn)換網(wǎng)站轉(zhuǎn)換為年月日,轉(zhuǎn)換網(wǎng)址為: https://tool.lu/timestamp/ 轉(zhuǎn)換結(jié)果如下:

C語言中的時(shí)間函數(shù)clock()和time()有什么用

轉(zhuǎn)換后的時(shí)間和程序運(yùn)行時(shí)的時(shí)間是一樣的,說明time函數(shù)返回的時(shí)間是準(zhǔn)確的,這樣在程序運(yùn)行過程中想要獲取準(zhǔn)確的時(shí)間時(shí),就可以通過time函數(shù)來獲取系統(tǒng)的準(zhǔn)確時(shí)間。

以上是“C語言中的時(shí)間函數(shù)clock()和time()有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI