确定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应用程序花费时间的工具。