본문 바로가기
Language/Java

자바 Concat / + / StringBuilder 성능 차이 정리

by wakestand 2022. 7. 6.
반응형

자바에서 String에 값을 붙여주는 경우에는

 

String.concat("값", "값")

String + String

StringBuilder.append("값")

 

이렇게 3 방법이 대표적인데

바로 결론부터 가자면

 

StringBuilder가 가장 빠르고

concat이 가장 느리다

 

먼저 가장 느린 concat의 경우에는

메소드 호출시마다

String 객체를 새로 만들어서

합친 뒤 반환하기 때문에

메모리를 가장 많이 소모해서 속도가 느리고

 

+ 의 경우에는

JDK 5 이전에는 concat 방식과 동일했다가

JDK 9 부터는 StringBuilder를 사용하도록 바뀌었는데

 

StringBuilder에서

makeConcatWithConstants 메소드를 호출하여

내장된 6가지 전략 중에

컴파일러가 가장 빠른 방법으로 문자열을 붙여준다

 

마지막으로 가장 빠른 StringBuilder의 경우에는

StringBuilder에 신규 값을 붙여서

바로 return하기 때문에 가장 속도가 빠르지만

 

+ 와 비교해서

몇만~몇십만개의 문자열을 붙이지 않는 이상에야

성능 차이는 체감하기 힘든 수준이기 때문에

 

대부분의 경우에는 concat을 지양하고

+를 사용하면 충분하다

반응형

댓글