최적화 hierarchy
최적화 전 측정. 대부분 정규식 성능 "문제" 가 사실 의상 입은 정확성 문제. 그 caveat 와 함께, 영향 순서로 기법:
1. 재사용 패턴 컴파일
컴파일이 패턴 한 번 파싱. 런타임이 컴파일된 state machine 사용. 루프 또는 반복 호출 함수에 사용된 어떤 패턴이든 모듈 레벨의 re.compile.
2. 패턴 anchor
^pattern 이 엔진이 모든 위치에서 재시도 막음. 검증 패턴에 거대한 speedup.
3. Alternation 을 character class 로 교체
[abc] 가 (a|b|c) 보다 극적 빠름. 엔진이 specialized character class machinery 가짐.
4. Atomic 그룹 / negated class 로 backtracking 회피
"X 까지 모든 거" 위한 [^X]+ 가 .*?X 를 속도와 정확성 모두 이김. Backtrack 안 해야 한다 아는 run 엔 atomic 그룹.
5. 패턴을 왼쪽부터 specific 하게
엔진이 왼쪽에서 오른쪽 읽음. \d 시작 패턴이 비-숫자 텍스트 즉시 거부. .* 시작 패턴이 포기 전 모든 위치 시도.
6. 옳은 엔진 사용
거대 파일에 bulk 텍스트 처리엔 ripgrep (RE2) 가 어떤 backtracking 기반 거든 outperform. One-off 작업엔 re OK.
7. 현실적 입력에 테스트
테스트 데이터에 빠르게 도는 패턴이 production 데이터에 crawl 가능. 대표 샘플로 프로파일.