铁血霸主 2007-8-1 22:12
PHP程序加速探索之脚本执行速度测试
<p><p>前面有提到,只有找到影响速度的<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B4%FA%C2%EB');" target="_self"><u><strong>代码</strong></u></a>,我们才有可能进行优化。PEAR的benchmark包中的Benchmark_Timer类和Benchmark_Iterate类,可以用来很方便地测试脚本执行的速度。(关于PEAR的安装与配置请自行查看相关资料) 。</p><p> 首先用Benchmark_Iterate类来测试程序中某个函数或类的某个<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B7%BD%B7%A8');" target="_self"><u><strong>方法</strong></u></a>的执行时间。</p><p> benchmark1.php</p><p>require_once('Benchmark/Iterate.php'); <br>$benchmark = new Benchmark_Iterate(); </p><p>$benchmark->run(10, 'myFunction','test'); <br>$result = $benchmark->get(); <br>echo "</p><p>"; print_r($result); echo "<br>"; <br>exit; </p><p>function myFunction($var) { <br>// do something <br>echo 'Hello '; <br>} </p><p>?> </p><p> 建立benchmark Iterate对象$benchmark,这个<a href="http://www.phpchina.com/javascript:;" onClick="javascript:tagshow(event, '%B6%D4%CF%F3');" target="_self"><u><strong>对象</strong></u></a>用来执行myFunction函数10次。</p><p> $argument变量每次都传递给myFunction. 多次运行的分析结果存入$result,然后用benchmark对象的get()方法来获取。这个结果用print_r()输出到屏幕。通常会输出这样的结果:</p><p>Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello </p><p>Array<br>(<br>[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) </p><p> myFunction的每次执行,benchmark对象都会跟踪执行时间。并且会计算平均的执行时间([mean]那一行)。通过多次运行目标函数,你可以得到该函数的平均运行时间。</p><p> 在实际测试中,函数的次数应当至少1000次左右,这样可以得到较客观的结果。</p><div>