天天看點

C\\C++中計時、延時函數

轉載:https://blog.csdn.net/keith_bb/article/details/53055380

C\C++标準庫中提供了兩種計時函數clock()和time()。其用法如下:

(1)clock()函數用法

void timeConsume()

{

double start,stop,durationTime;

start = clock();

/*

...代碼片段

*/

stop = clock();

durationTime = ((double)(stop-start))/CLK_TCK;

cout << "程式耗時:" << durationTime << " s" << endl;

}

clock()函數傳回值類型為clock_t.該函數計算結果是以内部處理器時間為計量機關的,是以必須把它除以時鐘頻率,進而得到以秒為機關的時間。這種方法在機器上測量的很精确。在這裡Windows和Linux環境下會有所差別.

Linux環境下,處理器内部時間頻率為:CLOCKS_PER_SEC.

(2)time()函數用法

void timeConsume()

{

double start,stop,durationTime;

start = time(NULL);

/*

...代碼片段

*/

stop = time(NULL);

durationTime = (double)difftime(stop, start);

cout << "程式耗時:" << durationTime << " s" << endl;

}

time()函數傳回值類型為time_t,是以也需要在輸出前将其轉換為double類型。與clock不同的是time()函數有一個參數,用來說明存放時間資訊的位置。由于并不想儲存這個時間,是以将參數設定為NULL。但是這種計時方法不如clock()函數精确,但是它不需要有關時鐘頻率的資訊。

(3)延時函數

在标準庫中可以使用Sleep()函數進行延時,其機關是毫秒,如果想要延遲5秒則其方法如下:

Sleep(5*1000);

在MFC中也可以使用_sleep()函數進行實作延時功能。在Windows環境下,Sleep()函數首字母大寫,而在Linux系統下sleep()函數首字母要小寫。在Linux系統中sleep()函數的機關是秒而不是毫秒,而在Windows環境下Sleep()函數是以毫秒為機關。這是兩者之間的差別。

Windows環境下計時延時函數代碼如下:

#include <iostream>

#include <Windows.h>

using namespace std;

int main()

{

double start, stop, durationTime;

start = clock();

Sleep(5 * 1000); //程式延時5s

stop = clock();

durationTime = ((double)(stop - start)) / CLK_TCK;

cout << "總耗時:" << durationTime << endl << endl;

return 0;

}

運作結果如圖所示:

Linux環境下代碼如下:

#include <iostream>

#include <unistd.h>

using namespace std;

int main()

{

double startTime,stopTime,durationTimeTime;

startTime=time(NULL);

sleep(5);

stopTime=time(NULL);

durationTimeTime = (double)difftime(stopTime,startTime);

cout << "耗時(time): " << durationTimeTime << " s" << endl;

return 0;

運作結果如圖所示:

感興趣的小夥伴可以在Linux環境下試一下clock()函數,目瞪口呆!!!

————————————————

版權聲明:本文為CSDN部落客「梧桐栖鴉」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/keith_bb/article/details/53055380