测试PHP代码性能的最佳方法是什么?
答案 0 :(得分:12)
您应该考虑使用ab (apache benchmark tool)来运行大量查询,并使用xhprof来分析/分析您的代码。在我看来,这些只是基础知识,但效果很好。
答案 1 :(得分:7)
您可以使用 microtime()来衡量代码的执行时间。 以下是该基本代码段:
$start_timestamp = microtime(true);
...
---your Code---
...
$end_timestamp = microtime(true);
$duration = $end_timestamp - $start_timestamp;
error_log("Execution took ".$duration." milliseconds.");
答案 2 :(得分:7)
xDEBUG(参见Neil Aitken的回答)对于识别PHP代码中的不良性能问题非常有用 - 但它只能在非常严格控制和限制条件下使用 - 尤其是很难看出concurency对性能的影响。
正如帕特里克·马里建议的那样,你可以使用ab - 如果你试图测量的事务跨度超过页面(例如登录到应用程序并创建会话,将随机产品添加到购物篮,重复添加),则它不是一种可行的方法随机产品N次......)。
AFAIK没有基于PHP的录制/脚本交互解决方案 - 但有Perl + WWW:Mechanize + HTTP:recorder。或者,如果你非常富有,你可以购买HP的loadrunner产品。
但是很难实现真正代表应用程序使用方式的测试 - 而且应用程序的性能(至少与数据相关的部分)会随着时间的推移而变化 - 因此您需要在您的应用程序中构建适当的性能指标代码。
...即便如此,PHP生成HTML页面所花费的时间只是一个页面在浏览器上呈现所需时间的故事的一小部分。
HTH
下进行。
答案 3 :(得分:4)
xDebug内置了一个探查器,一旦配置它会转储一些你可以用kCacheGrind或WinCacheGrind等程序读取的文件
这将允许您查看所有函数调用,平均和累计调用时间以及脚本执行总时间。非常有助于找到代码中的瓶颈。
答案 4 :(得分:2)
如果要测试代码的特定部分,请考虑使用PHP PEAR库中的Benchmark包。
$timer = new Benchmark_Timer();
$timer->start();
// Code to test here
$timer->stop();
$timer->display();
答案 5 :(得分:1)
作为旧问题的新视图,请考虑使用NewRelic等商业工具来协助分析。我个人只是使用它们来获取免费或名义价格的小样本数据。我确实充分利用了他们的全功能产品试用版。
答案 6 :(得分:0)
此外,您可以使用APD(高级PHP调试器)。
很容易让它发挥作用。
有一个很好的教程,如何编译APD并使用它进行分析:http://martinsikora.com/compiling-apd-for-php-54