【问题标题】:Jetbrains PHPStorm TODO slows down editingJetbrains PHPStorm TODO 减慢编辑速度
【发布时间】:2013-09-23 23:28:01
【问题描述】:
所以每当我打开 TODO 显示时,Jetbrains PHPStorm 中文件的编辑速度就会明显变慢
如果我将 TODO 显示切换到其他内容,编辑会再次变快
这是因为 PHPStorm 正在扫描已编辑的文件以检查已编辑的文件中是否出现新的 TODO
有没有办法阻止 PHPStorm 一直进行这种扫描,这样我就可以打开 TODO 窗口而不会降低我的编辑速度?
【问题讨论】:
标签:
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