Jetbrains PHPStorm TODO减慢了编辑速度

时间:2013-09-23 23:28:02

标签: php intellij-idea ide phpstorm

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

如果我将TODO显示切换到其他位置,则编辑再次变快

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

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

1 个答案:

答案 0 :(得分:0)

JetBrains TODO预先对可能存在的大量文本进行RegEx搜索,因此如果您的TODO中存在耗时的模式,事情可能会大幅减慢,或even hang

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

  

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

一般情况下,如果您的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