【编者按】网学网PHP频道为大家收集整理了“PHP性能优化工具篇Benchmark类调试执行时间“提供大家参考,希望对大家有所帮助!
这是PHP性能优化系列第二期,如何使用PEAR工具类Benchmark逐行获取代码或函数的执行时间。
工欲善其事,必先利其器!
如何安装PEAR和Benchmark
请参考PHP性能优化系列第一期 [PHP性能优化准备篇图解PEAR安装]
Benchmark工具类包说明
直接下载:/uploadfile/201306/20/00163457682.png">
另外一种是手动var_dump或print_r打印,$timer->getProfiling();,print_r函数打印如下图
array0 =>array''name'' => string ''Start'' (length=5)''time'' => string ''1265942405.31334800'' (length=19)''diff'' => string ''-'' (length=1)''total'' => string ''-'' (length=1)1 =>array''name'' => string ''marker 01'' (length=9)''time'' => string ''1265942405.31374400'' (length=19)''diff'' => string ''0.000396'' (length=8)''total'' => string ''0.000396'' (length=8)2 =>array''name'' => string ''marker 02'' (length=9)''time'' => string ''1265942405.31423000'' (length=19)''diff'' => string ''0.000486'' (length=8)''total'' => string ''0.000882'' (length=8)3 =>array''name'' => string ''marker 03'' (length=9)''time'' => string ''1265942405.31519200'' (length=19)''diff'' => string ''0.000962'' (length=8)''total'' => string ''0.001844'' (length=8)4 =>array''name'' => string ''Stop'' (length=4)''time'' => string ''1265942405.31623800'' (length=19)''diff'' => string ''0.001046'' (length=8)''total'' => string ''0.002890'' (length=8)
结果说明
1,name表示标注名称,如上 包含两个特殊标注start和stop表示开始和结束,其次是自定义标注 marker 01 marker 02等
2,time表示当前的微秒时间
3,diff表示上一个标记到当前标记的执行时间,这个就是我们需要获取的时间差,没错,看的就是这个值。
4,total表示执行到当前的整个时间
如何使用Benchmark_Iterate类
Benchmark_Iterate类用于调试函数执行的平均时间,与Benchmark_Timer类不同在于可以多次调用同一个函数获取其执行时间的平均值,实例如下:
require_once "Benchmark/Iterate.php";$bench = new Benchmark_Iterate;function test($i){ echo $i;}$bench->run(100,"test",10);var_dump($bench->get());
通过调用test函数100次获取平均执行时间,结果如下
array1 => string ''0.000486'' (length=8)2 => string ''0.000466'' (length=8).............................(中间省略)99 => string ''0.000479'' (length=8)100 => string ''0.000467'' (length=8)''mean'' => string ''0.000476'' (length=8)''iterations'' => int 100
结果说明
1,每个数字表示每次调用的时间
2,mean表示函数执行的平均时间,如上调用100次test函数的平均时间为0.000476
3,iterations表示函数调用的次数
如何使用Benchmark_Profiler类
Benchmark_Profiler类用于统计函数的执行次数和执行时间等,实例如下:
require_once ''Benchmark/Profiler.php'';$profiler = new Benchmark_Profiler(TRUE);function myFunction() { global $profiler; $profiler->enterSection(''myFunction''); //do something $profiler->leaveSection(''myFunction''); return;}//do somethingmyFunction();//do more
结果如下
Benchmark_Profiler类在实际性能调试中使用并不多,因为还有比这个更好的工具,如xDebuger等,因此可直接忽略!
Benchmark 工具类在使用调试中针对逐行调试来分析程序性能问题非常实用,主要使用Benchmark_Timer类调试各代码段的时