0

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

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

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

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

4

1 回答 1

0

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
于 2014-02-09T14:54:23.400 回答