在c++程式的效能分析中,其中重要的一項就是程式的執行時間。雖然程式的執行速度與計算機的配置、計算機的當前狀態等有很大關係,但在相對一致的外部環境下,程式執行時間的長短在很大程度上是可以反映程式效率的。
1.一般計時方法
在ctime標頭檔案中,c++提供了計時函式 clock() ,其返回資料型別為 clock_t。
typedef long clock_t;clock()函式返回從「開啟程式程序」到「程式中呼叫clock()函式」這段時間裡,cpu時鐘計時單元(clock tick)的數目,在msdn中稱之為掛鐘時間(wal-clock)。
在ctime檔案中,還定義了乙個常量clocks_per_sec,它用來表示一秒內有多少個cpu時鐘計時單元。
通過clock()/clocks_per_sec便可以得到程序的執行時間,一般clocks_per_sec的值為1000,可見計時精度可達小數點後3位(毫秒級)。
#define clk_tck clocks_per_sec計時的簡單示例如下
/*2.精確計時方法*說明:clock()計時函式
*日期:2013-6-6
*/#include //計時用的標頭檔案
#include using namespace std;
int main()
這裡精確的含義是計時的精度更高,為了達到更高的計時精度,需要使用精確時間函式queryperformancecounter()和queryperformancefrequency(),它們需要計算機從硬體上支援精確定時器。當然,現在計算機一般都是支援的。
queryperformancecounter()函式返回高精確度計數器的脈衝數目(計時數),queryperformancefrequency()函式提供了高精度計時器的頻率值,即每秒脈衝數。
bool queryperformancefrequency (large_integer *lpfrequency);其中,資料型別large_integer既可以是乙個8位元組長的整型數,也可以是兩個4位元組長的整型數的聯合結構, 其具體用法根據編譯器是否支援64位而定。該型別的定義如下:bool queryperformancecounter (large_integer *lpcount);
typedef union _large_integer; longlong quadpart ;// 8位元組整型數
}large_integer ;
/**說明:hptime類高精度計時
*日期:2013-6-6
*/#include "hptime.h"
#include using namespace std;
int main()
程式執行時間
要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock 函式,可以捕捉從程式開始執行到clock 被呼叫時所 耗費的時間。這個時間單位是clock tick,即 時鐘打點 同時還有乙個常數clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲 得乙個函式f...
程式執行時間
時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock 函式,可以捕捉從程式開始執行到clock 被呼叫時所 耗費的時間。這個時間單位是cloc...
程式執行時間
要獲得乙個c語言程式的執行時間,常用的方法是呼叫標頭檔案time.h,其中提供了clock 函式,可以捕捉從程式開始執行到clock 被呼叫時所 耗費的時間。這個時間單位是clock tick,即 時鐘打點 同時還有乙個常數clk tck,給出了機器時鐘每秒所走的時鐘打點數。於是為了獲 得乙個函式f...