2013-09-23 51 views
0

所以每當我有TODO顯示屏打開,文件的編輯在Jetbrains的PHPStormJetbrains的PHPStorm TODO減慢編輯

變得明顯較慢。如果我切換TODO顯示別的東西,編輯再次變快

這是由於PHPStorm正在掃描編輯的文件,以確定是否在編輯的文件中出現新的TODO

有沒有一種方法可以防止PHPStorm始終執行此掃描,以便我可以將TODO沒有我的編輯速度減慢窗口打開?

+0

正在掃描TODOS在任何情況下完成的(因爲它有單獨的顏色風格..你可以均勻膚色不同TODO模式不同)。我強烈建議您向** [問題跟蹤器](http://youtrack.jetbrains.com/issues/WI)**提交一張票並提供** [性能日誌](http://devnet.jetbrains.com/文檔/ DOC-1253)** – LazyOne

回答

0

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