2013-09-23 1 views
0

그래서, 파일의 편집 JetBrains의 PHPStormJetBrains의 PHPStorm TODO 내가 열어 TODO 표시가있을 때마다 내가 뭔가에 TODO 디스플레이를 전환하면

에 느리게 눈에 띄는되고, 편집 다시 빠른

하게 아래로 편집 속도가 느려집니다

이것은 PHPStorm이 편집 된 파일을 스캔하여 편집 된 파일에 새 TODO가 나타나는지 여부를 확인하기 때문입니다.

PHPStorm이 항상이 검사를 수행하지 못하게하는 방법이 있습니까? TODO 편집 속도가 저하되지 않고 창이 열립니다.

+0

스캔 (어떤 경우에 이루어집니다 그것을 별도의 색상 스타일 ..을 가지고 할 수 있습니다 심지어 색 다른 TODO 패턴 때문에 다르게). ** [이슈 트래커] (http://youtrack.jetbrains.com/issues/WI) **에 티켓을 제출하고 ** [성능 로그] (http://devnet.jetbrains.com/)를 제공하는 것이 좋습니다. docs/DOC-1253) ** – LazyOne

답변

0

JetBrains TODO는 잠재적으로 대량의 텍스트를 RegEx 검색하기 때문에 TODO에 시간이 많이 걸리는 패턴이있는 경우 상당히 느려질 수 있습니다 (even hang).

문제는 TODO 항목을 식별하기 위해 정의되었을 수있는 정규 표현식 일치에 있습니다. JetBrains IDE가 이러한 항목을 일치시키기 위해 사용하는 Java 표준 정규 표현식 라이브러리는 지수 복잡성 알고리즘을 사용하여 '*.a' 및 유사한 패턴을 검색합니다.

이론적으로 모든 정규 표현식을 매우 빠르게 일치시킬 수 있습니다 (선형 알고리즘 있음). 그러나 정규 표현식 라이브러리의 많은 개발자는 간단히 구현하지 않습니다.

일반적으로 TODO에 문제가있는 경우 TODO 항목의 RegEx를보고 성능 향상을 위해 일치 범위를 좁힐 수 있는지 확인하십시오.


은 BTW, 같은 문제는 파이썬 모듈 다시 존재 : 수행 할 작업에 대한

>>> 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