XDebug Speed-为什么这么慢(v2.6.2-> 2.8.0b2)

时间:2019-10-14 12:28:50

标签: xdebug

最近XDebug的速度如何?我已经对以下版本进行了基准测试-所有版本都运行同一页面(成熟的Symfony 2应用程序,因此无论如何都不是一个简单的请求),而且看来从2.7版开始,情况变得更糟,甚至在禁用了ZendOPCache时,情况甚至更糟。 2.7.2。

  • 2.8.0b2-22.3秒
  • 2.7.2-6.9秒
  • 2.7.0-4.8秒
  • 2.6.1-2.3秒

(全部在同一硬件上,只需切换使用的XDebug版本即可完成

自然地,没有启用XDebug的页面可以正常运行(0.7秒),但是使用最新版本(我很欣赏2.8.0是一个beta),该页面无法使用。

这是我用于测试的配置

xdebug.remote_enable=1
xdebug.remote_mode=req
xdebug.idekey=default
xdebug.remote_host=127.0.0.1
xdebug.remote_autostart=0
xdebug.var_display_max_children=512
xdebug.var_display_max_data=32000
xdebug.var_display_max_depth=8
xdebug.remote_log=/tmp/xdbg.log

然后,我发现了更多提示,并且这些提示有些不合时宜,但是我们在所有版本中都聊了几毫秒。

[xdebug]
xdebug.remote_enable=1
xdebug.remote_mode=req
xdebug.idekey=default
xdebug.remote_host=127.0.0.1
xdebug.remote_autostart=1
xdebug.var_display_max_children=512
xdebug.var_display_max_data=32000
xdebug.var_display_max_depth=12
xdebug.remote_log=/tmp/xdbg.log
xdebug.profiler_enable=0

xdebug.collect_includes = 0
xdebug.collect_params = 0
xdebug.collect_return = 0
xdebug.collect_vars = 0


xdebug.overload_var_dump = 2

xdebug.coverage_enable = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1

我只是错过了一些东西吗?或者仅仅是XDebug最近几天变得越来越慢?

2 个答案:

答案 0 :(得分:0)

首先,不要禁用OPcache。这是极大的性能提升。

对于Xdebug放慢速度,很难说为什么不知道完整的应用程序就这么做。如果您不使用代码覆盖率,则设置xdebug.coverage_enable=0是个好主意。

您显示的许多“取消一些设置”设置基本上都是默认设置,因此它们不会做很多事情。如果您可以轻松地提供可重现的案例,那么我建议您在https://bugs.xdebug.org处提交一个bug,以便Xdebug的作者可以查看一下,但前提是要易于复制。

Xdebug确实禁用了某些OPcache设置。而这取决于PHP版本。仅对于7.3.0和7.3.1,我们总是会关闭特定的优化,而对于更高版本,则在xdebug.remote_enable=1时,OPcache optimations (而不是OPcache本身)会被关闭:{{ 3}}-这应该会产生一些影响,但程度不如您指示的那样。

我很好奇地发现了,因为我想让事情进展得更快,而不是更慢:-)

答案 1 :(得分:0)

我也无法通过以下代码调试机智Xdebug 2.8.0:

<?php
phpinfo();
die;

调试器永远不会获得“ die”命令。似乎它以无休止的方式调试“ phpinfo()”。 intelliJidea screenshot

这是一个真正的问题,因为Xdebug 2.6.0构建无法应用于php 7.2和更高版本。