C++ clock()函數實現功能介紹



我們今天要向大家介紹的是有關C++
clock()函數的一些基本概念以及應用方式,目的就是希望能夠幫助大家輕松掌握這一應用技巧。


AD:






C++編程語言中,有許多特定的函數應用可以幫助我們實現許多不同的特定功能,方便程序員的實際開發。比如C++
clock()函數主要是幫助我們實現計時的功能。而與其相關的數據類型是clock_t。在MSDN中,查得對clock函數定義如下:

   
   
   
           
  1. clock_t clock( void );

這個函數返回從“開啟這個程序進程”到“程序中調用C++ clock()函數”時之間的CPU時鍾計時單元(clock
tick)數,在MSDN中稱之為掛鍾時間(wal-clock)。其中clock_t是用來保存時間的數據類型,在time.h文件中,我們可以找到對
它的定義:

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

很明顯,clock_t是一個長整形數。在time.h文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鍾會有多少個時鍾計時單元,其定義如下:

   
   
   
           
  1. #define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每過千分之一秒(1毫秒),調用C++
clock()函數返回的值就加1。下面舉個例子,你可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:

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

當然,你也可以用clock函數來計算你的機器運行一個循環或者處理其它事件到底花了多少時間:

   
   
   
           
  1. #include “stdio.h”
  2. #include “stdlib.h”
  3. #include “time.h”
  4. int main( void )
  5. {
  6. long i = 10000000L;
  7. clock_t start, finish;
  8. double duration;
  9. /* 測量一個事件持續的時間*/
  10. printf( "Time to do %ld empty loops is ", i );
  11. start = clock();
  12. while( i-- ) ;
  13. finish = clock();
  14. duration = (double)(finish - start) / CLOCKS_PER_SEC;
  15. printf( "%f seconds"n", duration );
  16. system("pause");
  17. }

在筆者的機器上,運行結果如下:

   
   
   
           
  1. Time to do 10000000 empty loops is 0.03000 seconds

以上就是對C++
clock()函數的相關應用介紹。上面我們看到時鍾計時單元的長度為1毫秒,那么計時的精度也為1毫秒,那么我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一
些,從而使計時精度更高呢?通過嘗試,你會發現這樣是不行的。在標准C/C++中,最小的計時單位是一毫秒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM