2024 02 28
2024-02-27¶
Scala replace vs replaceAll¶
replace,replaceAll모두java.lang.String의 것을 사용-
replace- 특정한 캐릭터, 혹은 문자열이 타겟에 포함되어 있다면, 전부 대체
- regex를 지원하진 않음
- 시간복잡도 O(n) - n: 문자열 길이
replaceAll- 첫번째 아규먼트로 regex를 가질 수 있음
- 정규표현식을 사용하다보니 강력하지만, 느리게 만들 수 있음
- 보통 O(n), 백트래킹 등이 들어가면 O(n)보다 느려질 수도
- 성능 차이
- 그냥 간단한 문자열 대체라면 비슷한 성능
- 하지만
replaceAll의 빡센 정규표현식을 입힌다면, 훨씬 느릴 수 있음 - 다만 타겟 문자열이 엄청 커야 티가 날 듯
- 그냥 퍼포먼스 생각하면 replace가 나을 듯
- 정규표현식이 느린이유
- 계산이 많이 필요함 : 더 복잡한 패턴일수록, 더 많은 계산 필요
- 백트래킹 : 특정 패턴 시도 -> 실패 -> 시도 사이클을 반복할수도
- 정규표현식 컴파일 : 정규표현식 자체가 작은 프로그래밍 언어, 돌리기 전에 컴피일 대상임. 계속 컴파일을 해야한다면 오버헤드임