轉載: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