-
[매일읽기] Micro optimizations in Java. String.replaceAll개발자 라이프/매일읽기 2020. 9. 7. 11:14반응형
원문: medium.com/javarevisited/micro-optimizations-in-java-string-replaceall-c6d0edf2ef6
Micro optimizations in Java. String.replaceAll
In this post, we will discuss the usage of another prevalent code constructions, the String.replaceAll and String.replace methods, and we…
medium.com
이번 글은 흔히 사용되는 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을 사용하고 있는데, 좋은 참고 자료가 됨
반응형