因此,每当我打开 TODO 显示时,Jetbrains PHPStorm 中的文件编辑速度就会明显变慢
如果我将 TODO 显示切换到其他内容,编辑会再次变快
这是因为 PHPStorm 正在扫描已编辑的文件,以查看新的 TODO 是否出现在已编辑的文件中
有没有办法阻止 PHPStorm 一直进行这种扫描,这样我就可以打开 TODO 窗口而不会降低我的编辑速度?
因此,每当我打开 TODO 显示时,Jetbrains PHPStorm 中的文件编辑速度就会明显变慢
如果我将 TODO 显示切换到其他内容,编辑会再次变快
这是因为 PHPStorm 正在扫描已编辑的文件,以查看新的 TODO 是否出现在已编辑的文件中
有没有办法阻止 PHPStorm 一直进行这种扫描,这样我就可以打开 TODO 窗口而不会降低我的编辑速度?
JetBrains TODO 对潜在的大量文本执行 RegEx 搜索,因此如果您的 TODO 中有一个耗时的模式,事情可能会大大减慢,甚至挂起。
问题在于任何可能已定义为识别 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