我想知道对PHP脚本进行基准测试的最佳方法是什么。不管是cron作业,还是网页或web服务。
我知道我可以使用微时间,但它真的能给我提供PHP脚本的实时时间吗?
我想在PHP中测试和基准测试不同的函数,它们做同样的事情。例如,preg_match与strpos或domdocument与preg_match或preg_replace与str_replace`
网页示例:
<?php
// login.php
$start_time = microtime(TRUE);
session_start();
// do all my logic etc...
$end_time = microtime(TRUE);
echo $end_time - $start_time;这将输出: 0.0146126717 (一直在变化-但这是我得到的最后一个)。这意味着执行PHP脚本需要0.015左右的时间。
有没有更好的方法?
发布于 2011-12-04 10:16:49
如果你真的想对真实世界的代码进行基准测试,那么可以使用Xdebug和XHProf这样的工具。
Xdebug非常适合在开发/登台时使用,而XHProf是一个很棒的生产工具,在那里运行它是安全的(只要您阅读了说明)。任何一个页面加载的结果都不会像查看代码的执行情况那样重要,而服务器也要做大量的其他工作,资源变得稀缺。这就引出了另一个问题:你是否在CPU上遇到了瓶颈?拉姆?I/O?
您还需要关注脚本中运行的代码以外的内容,了解脚本/页面是如何提供服务的。您使用的是什么web服务器?举个例子,我可以让nginx + PHP-FPM的性能远远超过mod_php + Apache,而后者由于使用好的CDN提供静态内容而遭受重创。
下一件要考虑的事情是你试图优化的是什么?
前者可以通过away压缩发送给浏览器的所有资源来帮助实现,但这样做(在某些情况下)可能会使您进一步远离实现后者。
希望以上所有内容都能帮助表明,仔细隔离的“实验室”测试不会反映出你在生产中会遇到的变量和问题,并且在开始进行微/过早优化route to hell之前,你必须确定你的高级目标是什么,然后你可以做些什么来实现这个目标。
发布于 2011-12-04 10:35:33
要对完整脚本在服务器上的运行速度进行基准测试,您可以使用很多工具。首先,确保您的脚本(例如,preg_match与strpos )必须输出相同的结果,才能使您的测试合格。
您可以使用:
您使用的
发布于 2011-12-04 10:17:18
您将希望了解Xdebug,更具体地说,是Xdebug's profiling capabilities。
基本上,您启用分析器,每次加载网页时,它都会创建一个可以使用WinCacheGrind或KCacheGrind读取的缓存研磨文件。
Xdebug的配置可能有点棘手,因此下面是我的php.ini的相关部分以供参考:
[XDebug]
zend_extension = h:\xampp\php\ext\php_xdebug-2.1.1-5.3-vc6.dll
xdebug.remote_enable=true
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=h:\xampp\cachegrind
xdebug.profiler_output_name=callgrind.%t_%R.out下面是WinCacheGrind中一个.out文件的屏幕截图

这应该提供了有关PHP脚本效率的充分细节。你想要针对那些花费时间最多的事情。例如,您可以将一个函数优化为所需时间的一半,但优化一个在页面加载期间被调用数十次(如果不是数百次)的函数会更好。
如果你很好奇,这只是我自己写的CMS的一个旧版本。
https://stackoverflow.com/questions/8291366
复制相似问题