自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

計(jì)算C++程序運(yùn)行時(shí)間總結(jié)

開(kāi)發(fā) 后端
C++程序運(yùn)行時(shí)間作為一個(gè)高效的.NET程序語(yǔ)言。其混合了函數(shù)語(yǔ)言和物件導(dǎo)向程序編制語(yǔ)言,并且完美的適用于編程、算法、技術(shù)和探索性開(kāi)發(fā),因此可以在使用的過(guò)程當(dāng)中感受到趣味性和吸引力。

我現(xiàn)在用C++語(yǔ)言寫(xiě)了一段程序,想計(jì)算這段程序運(yùn)行的準(zhǔn)確時(shí)間,這是要用于跟其它實(shí)驗(yàn)結(jié)果作對(duì)比的,所以要精確到毫秒,C++程序運(yùn)行時(shí)間 確實(shí)很難掌握?。?/FONT>

C++程序運(yùn)行時(shí)間中的計(jì)時(shí)函數(shù)是clock(),而與其相關(guān)的數(shù)據(jù)類型是clock_t。在MSDN中,查得對(duì)clock函數(shù)定義如下:  

  1. #ifndef   _CLOCK_T_DEFINED     
  2.  typedef   long   clock_t;     
  3.  #define   _CLOCK_T_DEFINED     
  4.  #endif    

這個(gè)函數(shù)返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock   tick)數(shù),在MSDN中稱之為掛鐘時(shí)間(wal-clock)。其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類型,在time.h文件中,我們可以找到對(duì) 它的定義:  

  1. #ifndef   _CLOCK_T_DEFINED     
  2.  typedef   long   clock_t;     
  3.  #define   _CLOCK_T_DEFINED     
  4.  #endif    

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

  1.  
  2. int   main(   void   )     
  3. {     
  4.       long         i   =   10000000L;     
  5.       clock_t   start,   finish;     
  6.       double     duration;     
  7.       /*   測(cè)量一個(gè)事件持續(xù)的時(shí)間*/     
  8.       printf(   "Time   to   do   %ld   empty   loops   is   ",   i   );     
  9.       start   =   clock();     
  10.       while(   i--   )             ;     
  11.       finish   =   clock();     
  12.       duration   =   (double)(finish   -   start)   /   CLOCKS_PER_SEC;     
  13.       printf(   "%f   seconds"n",   duration   );     
  14.       system("pause");     
  15. }    

可以看到每過(guò)千分之一秒(1毫秒),調(diào)用clock()函數(shù)返回的值就加1。下面舉個(gè)例子,你可以使用公式clock()/CLOCKS_PER_SEC來(lái)計(jì)算一個(gè)進(jìn)程自身的C++程序運(yùn)行時(shí)間 :

  1. void   elapsed_time()     
  2.   {     
  3.   printf("Elapsed   time:%u   secs."n",clock()/CLOCKS_PER_SEC);     
  4.   }    

   當(dāng)然,你也可以用clock函數(shù)來(lái)計(jì)算你的機(jī)器運(yùn)行一個(gè)循環(huán)或者處理其它事件到底花了多少時(shí)間:  

  1.  
  2. int   main(   void   )     
  3. {     
  4.       long         i   =   10000000L;     
  5.       clock_t   start,   finish;     
  6.       double     duration;     
  7.       /*   測(cè)量一個(gè)事件持續(xù)的時(shí)間*/     
  8.       printf(   "Time   to   do   %ld   empty   loops   is   ",   i   );     
  9.       start   =   clock();     
  10.       while(   i--   )             ;     
  11.       finish   =   clock();     
  12.       duration   =   (double)(finish   -   start)   /   CLOCKS_PER_SEC;     
  13.       printf(   "%f   seconds"n",   duration   );     
  14.       system("pause");     
  15. }    

上面我們看到時(shí)鐘計(jì)時(shí)單元的長(zhǎng)度為1毫秒,那么計(jì)時(shí)的精度也為1毫秒,那么我們可不可以通過(guò)改變CLOCKS_PER_SEC的定義,通過(guò)把它定義的大一 些,從而使計(jì)時(shí)精度更高呢?通過(guò)嘗試,你會(huì)發(fā)現(xiàn)這樣是不行的。在標(biāo)準(zhǔn)C++程序運(yùn)行時(shí)間 中,最小的計(jì)時(shí)單位是一毫秒。 

【編輯推薦】

  1. C與C++中標(biāo)準(zhǔn)輸入實(shí)現(xiàn)方式上的一點(diǎn)區(qū)別
  2. C++編譯器如何對(duì)Const常量進(jìn)行分配存儲(chǔ)空間
  3. C++類庫(kù)設(shè)計(jì)的基本構(gòu)思與方法
  4. 玩轉(zhuǎn)C++語(yǔ)言的幾種方法
  5. 如何更好的進(jìn)行C++代碼編制
責(zé)任編輯:chenqingxiang 來(lái)源: CSDN
相關(guān)推薦

2011-08-19 15:05:29

異常處理

2025-03-03 09:10:00

C++庫(kù)開(kāi)發(fā)

2023-11-21 16:31:51

C++語(yǔ)言

2021-08-18 08:32:09

代碼運(yùn)行時(shí)間示波器

2024-01-17 11:24:03

2024-12-09 13:00:00

C++類型安全

2015-07-20 15:44:46

Swift框架MJExtension反射

2020-04-06 11:47:44

Linux命令腳本

2024-03-28 08:17:46

JestJS服務(wù)端

2024-03-21 09:15:58

JS運(yùn)行的JavaScrip

2011-12-27 09:39:12

C#運(yùn)行時(shí)

2021-05-10 07:30:07

Linux統(tǒng)計(jì)程序

2021-05-11 11:52:23

Linuxtime命令

2021-08-11 11:02:17

Linuxtime命令

2019-10-14 09:14:37

Linuxbash命令

2019-07-12 09:30:12

DashboardDockerDNS

2021-09-11 15:38:23

容器運(yùn)行鏡像開(kāi)放

2021-03-15 08:33:01

CC++動(dòng)態(tài)庫(kù)

2021-06-24 10:28:19

uptimed命令Linux

2022-11-04 09:09:54

Linux服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)