-
[매일읽기] Micro optimizations in Java. String.replaceAll개발자 라이프/매일읽기 2020. 9. 7. 11:14반응형
원문: medium.com/javarevisited/micro-optimizations-in-java-string-replaceall-c6d0edf2ef6
이번 글은 흔히 사용되는 String.replaceAll과 String.replace 메서드 사용법에 대해 다루며 자바 11 버전에서 이것들의 성능을 확인하고 어떻게 최적화할 수 있을지 알아본다.
String.replaceAll
- String.replaceAll의 첫 번째 인자는 정규 표현식이 들어감
- 문자열 치환의 대부분은 특정한 패턴을 확인할 필요가 없다
- String.replace로 성능 향상
- 자바 8까지도 String.replace 안에는 Pattern 객체가 사용됨
- 자바 9부터 최적화 됨
- String.replace로 성능 향상
- replace가 replaceAll 보다 빠름
- 성능 비교 부분은 원문 참고
- replaceAll을 할 경우, 미리 컴파일한 Pattern 객체를 사용하여 성능 최적화
StringUtils.replace
- 자바 11 버전 이전에선 제3의 라이브러리를 사용하기도 함
- Apache Commons StringUtils.replace 메서드가 가장 대표적
- char 타입을 이용한 변환 메서드(String.replace(char, char))를 사용하면 String.replace보다 더욱 빠른 성능을 얻을 수 있음
String.remove
- 자바에선 아직 문자열을 삭제하는 메서드가 없음
- 빈칸('')으로 치환
- StringUtils.remove(String, char) 메서드를 사용
- 기존 String.replace 보다 빠른 성능
- 코드는 본문 참고
결론
- 자바 11을 사용하자
- String.replace를 사용할 수 있을 땐 최대한 사용하자 (굳이 String.replaceAll을 사용하지 말자)
- String.replaceAll을 사용해야만 할 땐, 미리 컴파일한 정규식을 사용하자
- String.replace(char, char)가 지원되는 버전이면 그것을 사용하자
- String.replace(value, "") 같은 패턴 대신에 제3의 라이브러리를 사용하자
읽고 나서
- 카프카 관련 작업으로 String.replaceAll을 사용하고 있는데, 좋은 참고 자료가 됨
반응형