-
Notifications
You must be signed in to change notification settings - Fork 4
Description
- ์ง๋ฌธ 1) JDK 6์์ ์ด๋ค ๋ถ๋ถ์ด ๊ฐ์ ๋์๊น์?
- ์ง๋ฌธ 2) ์ด๋ ๊ฒ ๊ฐ์ ๋๋๋ฐ ์ ์์ง๋ String '+' ์ฐ์ฐ์ ์์ฒญ ๋๋ฆด๊น์?
์ง๋ฌธ 1) JDK 6์์ ์ด๋ค ๋ถ๋ถ์ด ๊ฐ์ ๋์๊น์?
366p ๋ง์ง๋ง ๋ฌธ๋จ
์๋ฐ 6 ์ดํ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฑ๋ฅ์ ๋ค๋ฐฉ๋ฉด์ผ๋ก ๊ฐ์ ํ์ง๋ง, โฆ
์ฑ ์๋ ์๋ฐ6 ์ดํ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค๊ณ ๋์ด์์ง๋ง ์๋ฌด๋ฆฌ ์ฐพ์๋ด๋ ์๋ฐ5 ๋ถํฐ String โ+โ operator๋ ์ปดํ์ผ ์ StringBuilder(๋๋ StringBuffer)๋ก ๋ณํ๋๋๋ก ๋ณ๊ฒฝ๋ ๋ด์ฉ ๋ฐ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
์๋ฐ6์์ ์ด๋ค ๋ถ๋ถ์ด ๊ฐ์ ๋๋์ง ๊ถ๊ธํฉ๋๋ค ๐ญ
์ถ์ฒ : JDK 5 docs : String
์ด๊ฒ๋ง์ ๋ String โ+โ ์ฐ์ฐ๋ณด๋ค ๊ฐ์ฒด ์์ฑ ๋น์ฉ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์์์ง๋ง, ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง๋ ์์์ต๋๋ค.
- StringBuilder์ String Buffer๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๊ธฐ capacity๊ฐ 16 characters๋ก ์ค์ ๋๊ณ , ์ด๋ ์ฌ์ด์ฆ๊ฐ ์์์ ์ฌํ ๋น์ผ๋ก ์ธํ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
- loop๋ฅผ ๋ ๋ StringBuilder ๊ฐ์ฒด๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ ๋๋ค.
์ถ๊ฐ์ ์ผ๋ก, JDK 9 ๋ฒ์ ๋ถํฐ๋ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด StringConcatFactory ๋ฅผ ๋์
ํ์ต๋๋ค.
- ์ฐธ๊ณ : JDK 9 docs : StringConcatFactory
JDK8 ๋ฒ์ ๊ณผ JDK 11๋ฒ์ ์ผ๋ก ๊ฐ๊ฐ ์ปดํ์ผํ์ฌ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ถ์ํ ๊ธ์ ์ฐธ๊ณ ํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ถ์ฒ : https://jerry92k.tistory.com/50
์ข์ธก JDK8 ๋ฒ์ ์ ๋ฐ๋ณต๋ฌธ(L5) ์์์ NEW java/lang/StringBuilder๋ฅผ ํตํด ์๋ก์ด StringBuilder ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , JDK11 ๋ฒ์ ์ StringConcatFatory.makeConcatWithConstants ๋ฉ์๋๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ง๋ฌธ 2) ์ด๋ ๊ฒ ๊ฐ์ ๋๋๋ฐ ์ ์์ง๋ String '+' ์ฐ์ฐ์ ์์ฒญ ๋๋ฆด๊น์?
JDK ๋ฒ์ ์ด ์ฌ๋ผ๊ฐ๋ฉด์ String โ+โ ์ฐ์ฐ์ด ๊ฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋์ด์ StringBuilder๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๋ ์๊ฒฌ์ ์ด๋ ต์ง ์๊ฒ ์ฐพ์๋ณผ ์ ์์ต๋๋ค.
- https://dzone.com/articles/string-concatenation-performacne-improvement-in-ja
- https://choichumji.tistory.com/135
๊ทธ๋ฐ๋ฐ ์ ๊ฐ JDK 18 ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํ ์คํธํด๋ณด๋ ์ฌ์ ํ ํฐ ์ฑ๋ฅ ์ฐจ์ด๋ฅผ ํ์ธํ ์ ์์์ต๋๋ค.
(10๋ฒ ์ฐ์ฐ) (1,000๋ฒ ์ฐ์ฐ) (50,000๋ฒ ์ฐ์ฐ)1,000๋ฒ 50,000๋ฒ ์ฐ์ฐ์ ๋น์ฐํ ๋๋ ค์ง๊ฒ ์ง๋ง, ์ ์ด๋ 10๋ฒ ์ฐ์ฐ์์๋ โ+โ ์ฐ์ฐ์์๋ ๋ด๋ถ์ ์ผ๋ก StringBuilder๋ฅผ ์์ฑํด์ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ด์ผ ํ ๊ฒ ๊ฐ์๋ฐ.. (์คํํ ๋๋ง๋ค ์ฐจ์ด๋ ์์ง๋ง) 200๋ฐฐ ์ด์ ๋๋ฆฐ๊ฒ ์ด์ํฉ๋๋ค.
(String โ+โ ์ฐ์ฐ๊ณผ StringBuilder์ Bytecode ๋น๊ต)
ํน์๋ ํ์ฌ ByteCode๋ฅผ ํ์ธํด๋ณด์๋ JDK 9 ๋ฒ์ ์ ์ถ๊ฐ๋ makeConcatWithConstants ๋ฉ์๋๋ก โ+โ์ฐ์ฐ์ ์ฒ๋ฆฌํ๊ณ ์์์ต๋๋ค.
์ด์ ๋ฅผ ์์๋ ๋ถ์ด ์๋ค๋ฉด ๋์์ฃผ์ธ์!





