确定PHP代码的性能后果

时间:2020-03-05 18:49:45  来源:igfitidea点击:

如果我们不熟悉内部原理,如何确定PHP代码的性能后果?有没有办法弄清楚代码是如何执行的(除了简单地对其进行负载测试之外)?我正在寻找诸如内存使用率,算法执行时间之类的东西。

也许乔尔会说:"学习C,然后阅读内在知识",但是我现在真的没有时间学习C(尽管我很乐意)。

解决方案

回答

使用Xdebug扩展来分析PHP代码。

回答

如果我们不熟悉valgrind或者类似工具,请添加到@Jordi Bunster的答案中...

在Xdebug中进行概要分析后,可以在KCacheGrind或者WinCacheGrind中打开转储的配置文件,以图形方式查看花费在代码上的时间。

幸运的是,xdebug文档还详细解释了这一点以及如何解释结果:http://xdebug.org/docs/profiler

回答

即使我们熟悉内部结构,也应该对假设进行负载测试。我喜欢使用PEAR Benchmark包来比较不同的代码。

如果可以隔离代码,则可以简化负载测试。一种典型的技术是多次运行每个选项,然后查看哪个更快。例如,如果我们有一个类,则可以编写一个测试用例,然后逐步进行测试并运行几次。

回答

我们可以使用低级方法,例如将microtime()memory_get_usage()调用粘贴到代码中,或者可以使用现有的概要分析解决方案之一:

  • Xdebug(免费,开源)
  • Zend Studio / Debugger分析(商业)
  • Zend服务器代码跟踪(商业)
  • xhprof(免费,开源)

像往常一样,商业工具具有漂亮的GUI和漂亮的图片,但是要花钱,免费的是免费的,但是我们可能必须花费更多的时间。

另外,PHP CGI二进制文件具有带有-T选项的基准测试模式,我们可以尝试运行php-cgi -T 100 yourscript.php来进行穷人基准测试。

回答

请参阅SD PHP Profiler,以了解如何以图形方式显示PHP应用程序花费时间的工具。