前面有提到,只有找到影響速度的程式碼,我們才有可能進行最佳化。 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.0070. 00070 [9 ] => 0.000074 [10] => 0.000072 [mean] => 0.000108 [iterations] => 10)
myFunction的每次執行,benchmark物件都會追蹤執行時間。並且會計算平均的執行時間([mean]那一行)。透過多次執行目標函數,你可以得到該函數的平均運行時間。
在實際測試中,函數的次數應至少1000次左右,這樣可以得到較客觀的結果。