<?php require_once('Benchmark/Iterate.php'); define('MAX_RUN',100); $data = array(1, 2, 3, 4, 5); doBenchmark('v1', $data); doBenchmark('v2', $data); doBenchmark('v3', $data); function doBenchmark($functionName = null, $arr = null) { reset($arr); $benchmark = new Benchmark_Iterate; $benchmark->run(MAX_RUN, $functionName, $arr); $result = $benchmark->get(); echo '<br>'; printf("%s ran %d times where average exec time %.5f ms",$functionName,$result['iterations'],$result['mean'] * 1000); } function v1($myArray = null) { // 效率很差的循环 for ($i =0; $i < sizeof($myArray); $i++) { echo '<!--' . $myArray[$i] . ' --> '; } } function v2($myArray = null) { // 效率略有提高 $max = sizeof($myArray); for ($i =0; $i < $max ; $i++) { echo '<!--' . $myArray[$i] . ' --> '; } } function v3($myArray = null){ //最佳效率 echo "<!--", implode(" --> <!--", $myArray), " --> "; } ?> |
程序输出的结果大概是这样的:
v1 ran 100 times where average exec time 0.18400 ms
v2 ran 100 times where average exec time 0.15500 ms
v3 ran 100 times where average exec time 0.09100 ms
可以看到,函数的执行时间变少,效率上升。
函数v1有个很明显的错误,每一次循环的时间,都需要调用sizeof()函数来计算。