일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Firebase authentication android apple login setting
- 주 4일 근무제 경험담
- Spring LocalDateTime response array
- 소개팅앱 만들기 flutter
- Spring boot swagger blank screen
- invite user for supabase project
- 주 4일 근무제
- stable-diffusion-webui local 접속
- Stomp socket connection event
- Firebase authentication apple login 최신
- 소개팅앱 만들기
- Supabase edge function insert data
- supabase edge function deploy error supabaseurl is required
- stable-diffusion-webui local 네트워크에서 접속
- Android apple login
- 주 4일 근무제 log
- 소개팅앱 만들기 stomp
- supabase storage public url not working
- Spring google SMTP settings
- Firebase authentication apple login
- Android apple login identifier
- no such module '__ObjC'
- Stomp user connection event
- supabase storage feature not enabled for this tenant
- DT_TOOLCHAIN_DIR cannot be used
- 로컬 서버 접속
- Supabase edge function
- Android apple login 인증서 설정
- supabase edge function deploy error
- Firebase authentication android apple login
- Today
- Total
꿀맛코딩
String vs StringBuffer vs StringBuilder 본문
String, , Stringbuffer , Stringbuilder 의 성능 차이에 대해서 알아보자
1. String
먼저 String 같은 경우는 immutable 하다.
이는 변하지 않는다는 뜻인데,
예를 들어 우리가 + 연산자를 이용해서 문자열을 더할때
String str1 = "Hello" ;
String str2 = "World";
str 1 = str1 + str2;
를 할경우 실질적으로 str1 의 값이 str1 + str2 로 합쳐진 값이 바로 저장되는 것이 아니라.
new String(str1 + str2 ) 의 형태로 새롭게 인스턴스가 생성되어 저장된다.
따라서 반복문 안에서 String의 값을 변경할때 위처럼 사용하면,
성능이 떨어지게 된다.
2. Stringbuffer, Stringbuilder
Stringbuffer 와 Stringbuilder 는 둘다 mutable 하다.
차이점이 있다면 Stringbuffer는 synchronized(동기화 지원)를 지원하고,
Stringbuilder는 하지 못하는데,
이는 multi thread 환경에서 사용하기 적합하냐 안하냐 차이이다.
Stringbuffer 와 Stringbuilder를 이용해 문자열을 더해주면
.append("Hello").append("world")
실제 같은 메모리 주소상에 문자열값이 변해서 저장이 된다.
참고로 stackoverflow 에서 찾아본 결과
JDK 1.5 이상에서는
1. 처럼 String 의 문자열을 더해도 컴파일러가
Stringbulider 로 변환하여 최적화를 시켜주는데
간단한 연산은 특별히 문제가 없지만
반복 연산에서는 Stringbuilder객체가 계속해서 생성되므로 여전히 성능상으로는
좋지 않으니 환경에 맞게 Stringbuilder 또는 Stringbuffer를 사용하면 되겠다.
참고: https://stackoverflow.com/questions/2971315/string-stringbuffer-and-stringbuilder
'공부방 > 알아두면 좋은 지식' 카테고리의 다른 글
JIT Compiler, AOT Compiler (0) | 2019.07.12 |
---|