前面有提到,只有找到影響速度的代碼,我們才有可能進行優化。PEAR的benchmark包中的Benchmark_Timer類和Benchmark_Iterate類,可以用來很方便地測試腳本執行的速度。(關於PEAR的安裝與配置請自行查看相關資料) 。
首先用Benchmark_Iterate類來測試程序中某個函數或類的某個方法的執行時間。
benchmark1.php(做為現在的主流開發語言)
require_once(Benchmark/Iterate.php(做為現在的主流開發語言));
$benchmark = new Benchmark_Iterate();
$benchmark->run(10, myFunction,test);
$result = $benchmark->get();
echo "
"; print_r($result); echo "
";
exit;
function myFunction($var) {
// do something
echo Hello ;
}
?>
建立benchmark Iterate對象$benchmark,這個對象用來執行myFunction函數10次。
$argument變量每次都傳遞給myFunction. 多次運行的分析結果存入$result,然後用benchmark對象的get()方法來獲取。這個結果用print_r()輸出到屏幕。通常會輸出這樣的結果:
Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello
Array
(
[1] => 0.000427 [2] => 0.000079 [3] => 0.000072 [4] => 0.000071 [5] => 0.000076 [6] => 0.000070 [7] => 0.000073 [8] => 0.000070 [9] => 0.000074 [10] => 0.000072 [mean] => 0.000108 [iterations] => 10)
myFunction的每次執行,benchmark對象都會跟蹤執行時間。並且會計算平均的執行時間([mean]那一行)。通過多次運行目標函數,你可以得到該函數的平均運行時間。
在實際測試中,函數的次數應當至少1000次左右,這樣可以得到較客觀的結果。