如何测量用PHP编写的代码的速度?[已关闭]
我怎么能说哪一类人(它们都做同样的工作)执行得更快?有没有软件来衡量这一点?
我怎么能说哪一类人(它们都做同样的工作)执行得更快?有没有软件来衡量这一点?
您(至少)有两种解决方案:
相当“天真”的是使用microtime(true)在一部分代码之前和之后,获取执行期间经过了多少时间;其他答案也这么说,并且已经给出了例子,所以我不会再说太多了。
如果您想对几个说明进行基准测试,这是一个不错的解决方案 ;例如,比较两种类型的函数 - 最好完成数千次,以确保任何“扰动元素”都被平均。
像这样的东西,所以,如果你想知道序列化一个数组需要多长时间:
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i++) {
serialize($list);
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/serialize\n";
不完美,但很有用,并且不需要花费太多时间来设置。
另一个解决方案,如果你想确定哪个函数在整个脚本中花费大量时间,效果很好,是使用:
要获取分析文件,您必须安装并配置Xdebug ;查看文档的“分析 PHP 脚本”页面。
我通常做的是默认情况下不启用探查器(它会生成相当大的文件,并减慢速度),而是使用发送称为GET数据的参数的可能性,仅为我需要的页面激活分析。
我的php.ini的分析相关部分如下所示:XDEBUG_PROFILE
xdebug.profiler_enable = 0 ; Profiling not activated by default
xdebug.profiler_enable_trigger = 1 ; Profiling activated when requested by the GET parameter
xdebug.profiler_output_dir = /tmp/ouput_directory
xdebug.profiler_output_name = files_names
(有关详细信息,请阅读文档)
这个截图来自KcacheGrind中的一个C++程序:
(来源:sourceforge.net)
你会得到与PHP脚本完全相同的东西;-)
(对于KCacheGrind,我的意思是;WinCacheGrind不如KCacheGrind好...)
这使您可以很好地了解应用程序中需要时间的内容 - 有时它肯定有助于找到减慢一切^^
请注意,Xdebug 计算 PHP 花费的 CPU 时间;当PHP等待来自数据库的答案时(例如),它不起作用;只是等待。所以Xdebug会认为DB请求不需要花费太多时间!
这应该在SQL服务器上进行分析,而不是PHP,所以...
希望这是有帮助的:-)
玩得愉快!
对于快速的东西,我这样做(在PHP中):
$startTime = microtime(true);
doTask(); // whatever you want to time
echo "Time: " . number_format(( microtime(true) - $startTime), 4) . " Seconds\n";
您还可以使用探查器(如 http://xdebug.org/)。