所以每当我打开TODO显示器时,Jetbrains PHPStorm中文件的编辑速度会变得明显
如果我将TODO显示切换到其他位置,则编辑再次变快
这是因为PHPStorm正在扫描已编辑的文件,以确定新TODO是否出现在已编辑的文件中
有没有办法阻止PHPStorm一直进行扫描,这样我可以打开TODO窗口,而不会让编辑速度变慢?
答案 0 :(得分:0)
JetBrains TODO预先对可能存在的大量文本进行RegEx搜索,因此如果您的TODO中存在耗时的模式,事情可能会大幅减慢,或even hang。
问题在于可能已定义用于标识TODO项目的任何正则表达式匹配。 JetBrains IDE用于匹配这些项的Java标准正则表达式库使用指数复杂性算法来搜索'*.a'
和类似模式。
理论上,可以非常快速地匹配任何正则表达式(存在线性算法),>但是regexp libs的许多开发人员根本不打算实现它。
一般情况下,如果您的TODO正在降低成本,请查看TODO项目中的RegEx,看看是否可以缩小匹配范围以提高性能。
>>> 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