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

來源:互聯網
上載者:User

我們今天要向大家介紹的是有關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++中,最小的計時單位是一毫秒。

    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.