String, StringBuffer, StringBuilder 장단점

yun yun·2021년 8월 3일
0

String의 장단점

String 객체는 불변성을 가지기 때문에, 변하지 않는 문자열을 자주 읽어들이는 경우 String을 사용하면 좋은 성능을 기대할 수 있습니다. 설명을 덧붙여, StringBuffer나 StringBuilder에서 문자열 수정을 할 경우 버퍼의 크기를 늘리고 줄이고 명칭을 변경해야하는 내부적인 연산이 필요하므로 많은 양의 문자열 수정이 아니라면 String객체를 사용하는 것이 오히려 나을 수 있다.
그러나 문자열 추가, 수정, 삭제 등의 연산이 빈번하게 발생하는 알고리즘에 String 클래스를 사용하면 힙 메모리에 많은 임시 가비지가 생성되어 힙메모리의 부족으로 어플리케이션 성능에 치명적인 영향을 줄 수 있습니다.

String test = "ABC";
test += "EF";



StringBuffer 장단점

동기화 키워드를 지원하여 멀티쓰레드 환경(thread-safe)에서 안전합니다.

멀티스레드 환경에서 안전하다??

  • 멀티스레드란 하나의 애플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
  • 그런데 멀티스레드가 있는 프로그램의 경우, 프로세스가 가지는 자원(resource)를 공유한다.
    프로세스와 스레드
  • 자원을 공유하기 때문에 동기화를 지원하면, 그 만큼 안전하다는 것이다.
    동기화
  • 그러나 동기화 지원이라는 장점이 있지만, 처리 속도가 StringBuilder에 비해 느리다.

StringBuilder 장단점

동기화를 지원하지 않기 때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않지만, 동기화를 고려하지 않는 만큼 단일 쓰레드에서의 성능은 StringBuffer보다 뛰어납니다.

StringBuilder는 동기화를 고려하지 않은 만큼 StringBuffer 보다 뛰어납니다?





참고사이트

profile
같이 일 하고 싶은 개발자가 목표!

0개의 댓글