【问题标题】:Jetbrains PHPStorm TODO slows down editingJetbrains PHPStorm TODO 减慢编辑速度
【发布时间】:2013-09-23 23:28:01
【问题描述】:

所以每当我打开 TODO 显示时,Jetbrains PHPStorm 中文件的编辑速度就会明显变慢

如果我将 TODO 显示切换到其他内容,编辑会再次变快

这是因为 PHPStorm 正在扫描已编辑的文件以检查已编辑的文件中是否出现新的 TODO

有没有办法阻止 PHPStorm 一直进行这种扫描,这样我就可以打开 TODO 窗口而不会降低我的编辑速度?

【问题讨论】:

  • 在任何情况下都可以扫描 TODO(因为它具有单独的颜色样式......您甚至可以为不同的 TODO 图案着色不同)。我强烈建议向 Issue Tracker 提交票证并提供 Performance logs

标签: php intellij-idea ide phpstorm


【解决方案1】:

JetBrains TODO 对潜在的大量文本执行 RegEx 搜索,因此如果您的 TODO 中有一个耗时的模式,事情可能会大大减慢,或者even hang

问题在于任何可能已定义为识别 TODO 项的正则表达式匹配。 JetBrains IDE 用于匹配这些项目的 Java 标准正则表达式库使用指数复杂度的算法来搜索 '*.a' 和类似模式。

理论上,可以非常快速地匹配任何正则表达式(存在线性算法),> 但是许多正则表达式库的开发人员根本不费心去实现它。

一般来说,如果您的 TODO 降低了性能,请查看您的 TODO 项中的 RegEx,看看您是否可以缩小匹配范围以提高性能。


顺便说一句,Python re 模块也存在同样的问题:

>>> from timeit import timeit
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 10000))", number=1)
0.6927990913391113
>>> timeit("import re; list(re.finditer('.*a', 'foo' * 50000))", number=1)
17.076900005340576

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2013-04-16
    相关资源
    最近更新 更多