商業軟件包往往價格昂貴,並且需要一個過程之後才能有效地使用它們。針對這一點,本文擬實現一個簡單有效的類,它能自動計算並報告函數、循環和代碼塊執行的時間。
自動化與簡易性設計
利用類對象構造函數和析構函數的執行特性(它們分別在聲明和銷毀時執行),性能測試類的計時是在構造函數開始的,計算與報告某個操作的執行時間是在析構函數中進行的。測試儀提供毫秒級的結果。實現過程中將使用clock()返回程序開始後的處理器時鐘時間(與平台相關的時間單位)。宏CLK_TCK表示特定機器每秒時鐘數。
性能測試類定義如下:
#include <time.h>
class stopwatch
{
public:
stopwatch() : start(clock()){} //開始計時
~stopwatch();
private:
clock_t start;
};
構造函數將成員start初始化為當前的時鐘。除了析構函數外沒有定義其它的成員函數。析構函數再次調用clock(),計算構造對象後經過的時間並顯示結果:
#include <iostream>
using namespace std;
stopwatch::~stopwatch()
{
clock_t total = clock()-start; //獲得所用時間
cout<<"此操作所用
根據上面的代碼段,當代碼開始執行時,計時也開始,當代碼退出時,析構函數便顯示結果:
此操作所用