程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++程序運行時間

C++程序運行時間

編輯:C++入門知識

在C++程序的性能分析中,其中重要的一項就是程序的運行時間。雖然程序的運行速度與計算機的配置、計算機的當前狀態等有很大關系,但在相對一致的外部環境下,程序運行時間的長短在很大程度上是可以反映程序效率的。

在ctime頭文件中,C++提供了計時函數 clock() ,其返回數據類型為 clock_t。

typedef      clock_t;

clock()函數返回從“開啟程序進程”到“程序中調用clock()函數”這段時間裡,CPU時鐘計時單元(clock tick)的數目,在MSDN中稱之為掛鐘時間(wal-clock)。
在ctime文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒內有多少個CPU時鐘計時單元。
通過clock()/CLOCKS_PER_SEC便可以得到進程的運行時間,一般CLOCKS_PER_SEC的值為1000,可見計時精度可達小數點後3位(毫秒級)。

 CLK_TCK  CLOCKS_PER_SEC

計時的簡單示例如下

<ctime> 
#include <iostream>
  i = =( i-- );
    end =, ()(end - start) / 

這裡精確的含義是計時的精度更高,為了達到更高的計時精度,需要使用精確時間函數QueryPerformanceCounter()和QueryPerformanceFrequency(),它們需要計算機從硬件上支持精確定時器。當然,現在計算機一般都是支持的。
QueryPerformanceCounter()函數返回高精確度計數器的脈沖數目(計時數),QueryPerformanceFrequency()函數提供了高精度計時器的頻率值,即每秒脈沖數。

  QueryPerformanceFrequency (LARGE_INTEGER *  QueryPerformanceCounter (LARGE_INTEGER *lpCount);

其中,數據類型LARGE_INTEGER既可以是一個8字節長的整型數,也可以是兩個4字節長的整型數的聯合結構, 其具體用法根據編譯器是否支持64位而定。該類型的定義如下:

        LONG  HighPart;

在進行定時之前,先調用QueryPerformanceFrequency()函數獲得機器內部定時器的時鐘頻率,然後在需要嚴格定時的事件發生之前和發生之後分別調用QueryPerformanceCounter()函數,利用兩次獲得的計數之差及時鐘頻率,計算出事件經歷的精確時間。其過程與clock()方法類似,但這裡的時鐘頻率很高,測試電腦上頻率的QuadPart值為3118031,其精度原高於clocK()。
為了更好地使用這種計時方式,已將其封裝成HpTime類,。使用該類,計時程序如下

<iostream>
  i = ( i-- );
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved