国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++中兩種常用的記錄程序運(yùn)行時(shí)間的方法的總結(jié)

2019-11-11 03:15:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

關(guān)于C++中計(jì)算時(shí)間的一些總結(jié)

方法一:clock()計(jì)時(shí)函數(shù)

clock()是C/C++中的計(jì)時(shí)函數(shù),而與其相關(guān)的數(shù)據(jù)類(lèi)型是clock_t。在MSDN中,查得對(duì)clock函數(shù)定義如下:clock_t clock(void) ;簡(jiǎn)單而言,就是該程序從啟動(dòng)到函數(shù)調(diào)用占用CPU的時(shí)間。這個(gè)函數(shù)返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù),在MSDN中稱(chēng)之為掛鐘時(shí)間(wal-clock);若掛鐘時(shí)間不可取,則返回-1。其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類(lèi)型。在time.h文件中,我們可以找到對(duì)clock_t()的定義:[cpp] view plain copy 在CODE上查看代碼片<span style="font-size:14px;">#ifndef _CLOCK_T_DEFINED      typedef long clock_t;  #define _CLOCK_T_DEFINED  #endif</span>  

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

#define%20CLOCKS_PER_SEC%20((clock_t)1000)

測(cè)試程序:

[cpp]%20view%20plain%20copy%20<span style="font-size:14px;"><span style="font-size:18px;">#include<iostream>  #include<time.h>    using namespace std;    int main()  {      clock_t startTime,endTime;      startTime = clock();      for (int i = 0; i < 1000000; i++)      {          i++;      }      endTime = clock();      cout << "Totle Time : " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;      system("pause");      return 0;  }</span></span>  [cpp]%20view%20plain%20copy%20<span style="font-size:14px;">#include<iostream>  #include<time.h>    using namespace std;    int main()  {      for (int i = 0; i < 1000000; i++)      {          i++;      }      cout << "Totle Time : " << (double)clock() /CLOCKS_PER_SEC<< "s" << endl;      system("pause");      return 0;  }</span>  

方法二:GetTickCount()函數(shù):

GetTickCount是函數(shù)。GetTickCount返回(retrieve)從操作系統(tǒng)啟動(dòng)所經(jīng)過(guò)(elapsed)的毫秒數(shù),它的返回值是DWord。函數(shù)原型:DWORD%20GetTickCount(void);頭文件:C/C++頭文件:winbase.hwindows程序設(shè)計(jì)中可以使用頭文件windows.h測(cè)試代碼:[cpp]%20view%20plain%20copy%20派生到我的代碼片<span style="font-size:14px;">#include<iostream>  #include<Windows.h>    using namespace std;    int main()  {      DWORD start_time = GetTickCount();      for (int i = 0; i < 100000000; i++)      {          i++;      }      DWORD end_time = GetTickCount();      cout << "The run time is:" << (end_time - start_time) << "ms!" << endl;      system("pause");      return 0;  }</span>  注意事項(xiàng):GetTickcount函數(shù):它返回從操作系統(tǒng)啟動(dòng)到當(dāng)前所經(jīng)過(guò)的毫秒數(shù),常常用來(lái)判斷某個(gè)方法執(zhí)行的時(shí)間,其函數(shù)原型是DWORD GetTickCount(void),返回值以32位的雙字類(lèi)型DWORD存儲(chǔ),因此可以存儲(chǔ)的最大值是(2^32-1) ms約為49.71天,因此若系統(tǒng)運(yùn)行時(shí)間超過(guò)49.71天時(shí),這個(gè)數(shù)就會(huì)歸0,MSDN中也明確的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是編寫(xiě)服務(wù)器端程序,此處一定要萬(wàn)分注意,避免引起意外的狀況。特別注意:這個(gè)函數(shù)并非實(shí)時(shí)發(fā)送,而是由系統(tǒng)每18ms發(fā)送一次,因此其最小精度為18ms。當(dāng)需要有小于18ms的精度計(jì)算時(shí),應(yīng)使用StopWatch方法進(jìn)行。用clock()函數(shù)計(jì)算運(yùn)行時(shí)間,表示范圍一定大于GetTickCount()函數(shù),所以,建議使用clock()函數(shù)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 宁河县| 卓资县| 呼玛县| 昔阳县| 汽车| 玉环县| 南通市| 额尔古纳市| 泸西县| 嘉黎县| 宁乡县| 霍山县| 福安市| 黄龙县| 胶州市| 礼泉县| 平定县| 定远县| 布拖县| 怀仁县| 靖宇县| 潢川县| 南华县| 邛崃市| 英吉沙县| 洪洞县| 成安县| 吉林省| 民丰县| 苗栗县| 潮安县| 烟台市| 石柱| 临夏县| 永福县| 禄丰县| 肥东县| 萨嘎县| 合江县| 京山县| 渑池县|