xdebug - XDebug Speed - 为什么这么慢 (v2.6.2 -> 2.8.0b2)
问题描述
最近 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 是测试版),它就无法使用了。
这是我用于测试的配置
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 这些天变慢了?
解决方案
首先,不要禁用 OPcache。这是一个很好的性能提升。
至于 Xdebug 会减慢速度,在不了解完整应用程序的情况下很难说它为什么会这样做。如果您不使用代码覆盖率,那么设置xdebug.coverage_enable=0
是一个好主意。
您为“取消一些事情”而显示的许多设置基本上是默认设置,因此它们不会做很多事情。如果您可以轻松地提供可重现的案例,那么我建议您在https://bugs.xdebug.org提交错误,以便 Xdebug 的作者可以查看它,但前提是它很容易重现。
Xdebug 确实禁用了一些 OPcache 设置。这取决于 PHP 版本。仅对于 7.3.0 和 7.3.1,我们始终关闭特定优化,对于更高版本,OPcache优化(但不是 OPcache 本身)在以下情况下关闭xdebug.remote_enable=1
:https ://github.com/xdebug/xdebug/blob/ master/xdebug.c#L1086-L1103——这应该会产生一些影响,但没有你说的那么大。
不过我很想知道,因为我想让事情变得更快,而不是更慢:-)
推荐阅读
- django - Django ORM 时间增量返回 firld 未定义
- python-3.x - 在 InceptionV3 微调中获取每个类的概率
- angular - 组件 HomeComponent 的模板中出现 Angular 10 错误
- css - 在 Blazor 中动态加载下拉内容后,Bootstrap 下拉对齐关闭
- reactjs - 加载我的应用程序后,赛普拉斯存根函数丢失
- vb.net - Vb.net表单允许文本框值小于程序中的派生值
- google-cloud-platform - Cloud SQL 将表导出到云存储
- sql-server - SSRS - 无法连接到数据源
- mysql - MySQL 5.7.24 -- 服务器请求客户端未知的身份验证方法 [caching_sha2_password]
- android - 更改 Android 音量条