์ถ์ฒ
ChatGPT
JIT(Jist-In_Time) ์ปดํ์ผ๋ฌ์ AOT(Ahead-Of-Time) ์ปดํ์ผ๋ฌ๋ ์๋ก ๋ค๋ฅธ ์ฅ์ ๊ณผ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์ปดํ์ผ ๋ฐฉ์์ด ๋ณํํด์ ์ฌ์ฉ๋ ๋ ์๋ก์ ๋จ์ ์ ๋ณด์ํ ์ ์๋ค. ์ด๋ฌํ ๋ณํ ์ฌ์ฉ์ ์ฑ๋ฅ ์ต์ ํ์ ํจ์จ์ ์ธ ์์ ํ์ฉ์ ๋ชฉํ๋ก ํ๋ค.
JIT ์ปดํ์ผ๋ฌ
ํน์ง
1. ๋ฐํ์ ์ต์ ํ
ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์์ ๋ฉ์๋๋ ์ฝ๋ ๋ธ๋ก์ ์ปดํ์ผํ๋ค. ์์ฃผ ์คํ๋๋ ์ฝ๋ ํจ์ค๋ฅผ ์ง์ค์ ์ผ๋ก ์ต์ ํํ ์ ์๋ค.
- ์ฝ๋ ํจ์ค ์ฉ์ด ์ค๋ช [Compiler] ์ฝ๋ ํจ์ค(์ฝ๋ ๊ฒฝ๋ก) + ์ฝ๋ ํจ์ค์ ์ปดํ์ผ๋ฌ ์ต์ ํ
2. ์ ์ํ ์ต์ ํ
ํ๋ก๊ทธ๋จ์ ์ค์ ์คํ ์ํฉ์ ๋ง์ถฐ ์ต์ ํ๋ฅผ ์ํํ๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์กฐ๊ฑด๋ฌธ์ด ํญ์ ์ฐธ์ผ ๊ฒฝ์ฐ, JIT๋ ์ด๋ฌํ ํจํด์ ํ์ตํ๊ณ ์ต์ ํํ ์ ์๋ค.
3. ๋น ๋ฅธ ์คํํธ์
์ด๊ธฐ์๋ ๋ฐ์ดํธ์ฝ๋๋ฅด ํด์(interpreting)ํ์ฌ ์คํํ๋ค๊ฐ, ์ ์ ํ์ํ ๋ถ๋ถ์ ์ปดํ์ผํ์ฌ ์ต์ ํํ๋ค.
๋จ์
์ด๊ธฐ ์คํ ์๋
์ฒ์ ์คํ๋ ๋๋ ํด์ ๋ชจ๋๋ก ์์ํ๊ธฐ ๋๋ฌธ์, JIT ์ปดํ์ผ์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง๋ ์คํ ์๋๊ฐ ๋๋ฆด ์ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
JIT ์ปดํ์ผ ์, ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ, ์คํ ์์ ์ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์ต์ ํํ๋ ๋ฐ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
AOT ์ปดํ์ผ๋ฌ
ํน์ง
1. ๋น ๋ฅธ ์์ ์๊ฐ
ํ๋ก๊ทธ๋จ ์คํ ์ ์ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผ๋์ด ์์ด, ํ๋ก๊ทธ๋จ์ ์์ ์๊ฐ์ด ๋น ๋ฅด๋ค.
2. ๊ธฐ๋ณธ ์ฑ๋ฅ ๋ณด์ฅ
์ฝ๋๊ฐ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋๋ฏ๋ก ์คํ ์์ ์์์ ์ต์ ํ ์์ ์ด ํ์ ์์ด, ์ด๊ธฐ ์ฑ๋ฅ์ด ๋ ์ข๋ค.
์ด ๋ฌธ๋งฅ์์ "์ด๊ธฐ ์ฑ๋ฅ์ด ๋ ์ข๋ค"๋ ์๋ฏธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์์ํ ๋ ๋น ๋ฅด๊ฒ ์๋ตํ๊ณ , ์ด๊ธฐ ์์ ์ ์ ์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ ๋ปํ๋ค. ํ๋ก๊ทธ๋จ์ด ์์ํ ๋, ์ฆ ํ๋ก๊ทธ๋จ์ ์์ ์๊ฐ์ด๋ ์ด๊ธฐ ์คํ ๋จ๊ณ์์ ์ฑ๋ฅ์ด ์ฐ์ํ๋ค๋ ์๋ฏธ์ด๋ค.
๋จ์
1 ์ต์ ํ์ ํ๊ณ
ํ๋ก๊ทธ๋จ์ ์ค์ ๋ฐํ์ ์ ๋ณด(์คํ ํจํด ๋ฑ)๋ฅผ ํ์ฉํ ์ต์ ํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
2. ๋์๋ ฅ ๋ถ์กฑ
๋ค์ํ ์คํ ํ๊ฒฝ์ ๋ํ ์ ์๋ ฅ์ด ๋จ์ด์ง ์ ์๋ค. ๋ชจ๋ ์ํฉ์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์ฌ์ ์ ์ค๋นํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ์ ์๋ค.
JIT์ AOT์ ๋ณํ ์ฌ์ฉ ์ด์
1. ์ฑ๋ฅ ์ต์ ํ
JIT ์ปดํ์ผ๋ฌ๋ ๋ฐํ์์ ํ๋ก๊ทธ๋จ์ ์คํ ํจํด์ ๋ถ์ํ๊ณ , ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋๋ ์ฝ๋ ๊ฒฝ๋ก์ ๋ํ ์ต์ ํ๋ฅผ ์ํํ ์ ์๋ค. AOT ์ปดํ์ผ๋ฌ๋ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ๋น ๋ฅธ ์์ ์๊ฐ์ ์ ๊ณตํ๋ค. ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ณํ ์ฌ์ฉํ๋ฉด, ์ด๊ธฐ ์คํ ์์๋ AOT๋ก ๋น ๋ฅด๊ฒ ์คํํ๊ณ , ์คํ ์ค์๋ JIT๋ก ์ต์ ํ๋ฅผ ํตํด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
2. ๋น ๋ฅธ ์์๊ณผ ์ ์ํ ์ต์ ํ
AOT ์ปดํ์ผ๋ฌ๋ ๋น ๋ฅธ ์์ ์๊ฐ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๋ค. ์ดํ JIT ์ปดํ์ผ๋ฌ๊ฐ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ถ๊ฐ์ ์ธ ์ต์ ํ๋ฅผ ์ํํด ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ ํนํ ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ฆฌํ๋ค.
3. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๊ท ํ
JIT ์ปดํ์ผ๋ฌ๋ ์คํ ์ค์ธ ์ฝ๋์ ์ต์ ํ๋ฅผ ์ํด ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, AOT ์ปดํ์ผ๋ ์ฝ๋๋ ์ด๋ฏธ ์ต์ ํ๋ ์ํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ ์ ์ ์ดํ ์ ์๋ค. ๋ณํ ์ฌ์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
4. ํ๋ซํผ ๋ ๋ฆฝ์ฑ๊ณผ ์ฑ๋ฅ
์๋ฐ์ ๊ฐ์ ์ธ์ด๋ ๋ค์ํ ํ๋ ํผ์์ ์คํ๋ ์ ์๋ค. AOT ์ปดํ์ผ์ ํน์ ํ๋ซํผ์ ๋ง์ถฐ ์ต์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ง๋ง, JIT ์ปดํ์ผ๋ฌ๋ ์คํ ์ค ํ๋ซํผ์ ๋ง์ถฐ ์ถ๊ฐ์ ์ธ ์ต์ ํ๋ฅผ ์ํํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ค์ํ ํ๊ฒฝ์์ ์ผ๊ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์๋ค.
-> AOT ์ปดํ์ผ๋ฌ๊ฐ ํ๋ซํผ์ ์ต์ ํ๋ ์ฝ๋ ์์ฑ + JIT๊ฐ ์คํ ์ํฉ์ ์ต์ ํ ์ํ -> ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด๋ ์ฑ๋ฅ ์ ๊ณต ๋ณด์ฅ
5. ์ฝ๋์ ์์ ์ฑ๊ณผ ์ ์ฐ์ฑ
AOT ์ปดํ์ผ๋ ์ฝ๋๋ ์ด๋ฏธ ์ปดํ์ผ๋ ์ํ๋ก ์ ๊ณต๋๋ฏ๋ก ์์ ์ ์ธ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค. ๊ทธ๋ฌ๋ JIT ์ปดํ์ผ๋ฌ๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ๋ง์ถฐ ์ต์ ํ๋ฅผ ๊ณ์ ์งํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค. ์ด ์กฐํฉ์ ๋ค์ํ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์์ ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์์ ์ ๊ณตํ๋ค.
์๋๋ก์ด๋์์์ ์ : Android Runtime (ART)
Android Runtime(ART)๋ ์๋๋ก์ด๋ 5.0(Lollipop)๋ถํฐ ๋์ ๋ ๋ฐํ์ ํ๊ฒฝ์ด๋ค.
๊ธฐ์กด์ Dalvik VM์ ๋์ฒดํ๋ค. ART๋ JIT์ AOT ์ปดํ์ผ์ ๋ชจ๋ ์ง์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์๋ต์ฑ์ ๊ฐ์ ํ๋๋ฐ ๊ธฐ์ฌํ๊ณ ์๋ค.
ART์ ์ฃผ์ ํน์ง
1. JIT ์ปดํ์ผ๋ฌ
1] ๋ฐํ์ ์ต์ ํ
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋์ JIT ์ปดํ์ผ๋ฌ๋ ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋ ๊ฒฝ๋ก(์ฝ๋ ํจ์ค)๋ฅผ ์ต์ ํํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
2] ์ ์ํ ์ปดํ์ผ
- ๋ฐํ์์ ํ๋ก๊ทธ๋จ์ ์ค์ ์ฌ์ฉ ํจํด์ ๋ถ์ํ์ฌ ์ ์ ํ ์ต์ ํ๋ฅผ ์ ์ฉํ๋ค.
3] ๋น ๋ฅธ ์๋ต์ฑ
- ์ด๊ธฐ์๋ ๋น ๋ฅด๊ฒ ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก JIT ์ปดํ์ผ์ ํตํด ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ์์ํ๊ณ , ์ดํ ์ค์ํ ๊ฒฝ๋ก๋ ์ปดํ์ผํ๋ค.
2. AOT ์ปดํ์ผ๋ฌ
1] ์ ํ๋ฆฌ์ผ์ด์ ์ค์น ์์ ์ ์ปดํ์ผ
- ์ฑ์ ์ค์นํ ๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผํด ์คํ ์๋๋ฅผ ํฅ์์ํจ๋ค.
2] ๋น ๋ฅธ ์์ ์๊ฐ
- ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ฏธ๋ฆฌ ์ปดํ์ผ๋์ด ์์ด ์ฑ์ ์์ ์๊ฐ์ด ๋น ๋ฅด๋ค.
3] ๋ฐฐํฐ๋ฆฌ ํจ์จ์ฑ
- ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์ฌ์ฉํด ์คํํ๊ธฐ ๋๋ฌธ์ CPU ์ฌ์ฉ๋์ด ์ค์ด๋ค์ด ๋ฐฐํฐ๋ฆฌ ํจ์จ์ฑ์ด ์ฆ๊ฐํ๋ค.
3. ํผํฉ ๋ชจ๋
1] ์ฑ๋ฅ
- ART๋ JIT์ AOT ์ปดํ์ผ๋ฌ์ ์ฅ์ ์ ๊ฒนํฉํ์ฌ ์ฑ์ ์ฑ๋ฅ ์ต์ ํํ๋ค. ์ฑ ์ค์น ์ AOT๋ก ์ฃผ์ ์ฝ๋๊ฐ ์ปดํ์ผ๋๊ณ , ๋ฐํ์ ์ JIT๋ก ์คํ ํจํด์ ๋ฐ๋ผ ์ถ๊ฐ ์ต์ ํ๋ฅผ ์ํํ๋ค.
2] ์ ์ฅ ๊ณต๊ฐ ํจ์จ
- AOT๋ก ์ธํด ์ ์ฅ ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์งํ ์ ์๋ ์ ์ ๊ณ ๋ คํ์ฌ, ํ์ํ ๋๋ง JIT๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ๊ณต๊ฐ ์ฌ์ฉ์ ์ต์ ํํ๋ค.
4. ํ๋กํ์ผ ๊ธฐ๋ฐ ์ปดํ์ผ(PGO, Profile-Guided Optimization)
- ํ๋กํ์ผ ๊ธฐ๋ฐ ์ปดํ์ผ์ ๋ฌด์์ธ๊ฐ -> [Android][ART] ART์ ํ๋กํ์ผ ๊ธฐ๋ฐ ์ปดํ์ผ
1] ํ๋กํ์ผ ์์ง
- ์ฑ์ด ์คํ๋ ๋ JIT ์ปดํ์ผ๋ฌ๊ฐ ์ฑ๋ฅ ํ๋กํ์ผ์ ์์งํ๋ค. ์ด ํ๋กํ์ผ์ ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ฝ๋ ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
2] AOT ์ต์ ํ
- ๋ค์์ ์ฑ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋, ์ฅ์น๋ฅผ ์ถฉ์ ํ๋ ๋์, ART๋ ์ด ํ๋กํ์ผ์ ์ฌ์ฉํด AOT ์ปดํ์ผ์ ํตํด ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒฝ๋ก๋ฅผ ๋์ฑ ์ต์ ํํ๋ค.
3] ์ ์ํ ์ฑ๋ฅ ํฅ์
- ์คํ ์ ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฏธ๋์ ์คํ์ ์ํ ์ต์ ํ๋ฅผ ์ํํ๋ค.
Dalvik VM vs ART
์๋๋ก์ด๋ ์ด๊ธฐ ๋ฐํ์ ํ๊ฒฝ์ธ Dalvik VM์ JIT ์ปดํ์ผ์ ์ค์ฌ์ผ๋ก ๋ฑ์ฅํ๋ค. ๊ทธ๋ฌ๋ ART๋ AOT์ JIT๋ฅผ ๊ฒฐํฉํด ๋ ๋์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ์ ๊ณตํ๋ค.
ํน์ง | Dalvik VM | ART |
์ปดํ์ผ ๋ฐฉ์ | JIT ์ค์ฌ | AOT + JIT |
์ฑ ์์ ์๊ฐ | ๋น๊ต์ ๋๋ฆผ | ๋ ๋น ๋ฆ(AOT ์ปดํ์ผ ๋๋ถ) |
๋ฐํ์ ์ฑ๋ฅ | ๋ฐํ์ ์ต์ ํ์ ์ ํ์ | ํ๋กํ์ผ ๊ธฐ๋ฐ ์ต์ ํ๋ก ์ฑ๋ฅ ์ข์ |
๋ฐฐํฐ๋ฆฌ ํจ์จ์ฑ | ๋ฎ์(๋ฐํ์ ์ปดํ์ผ ๋ถ๋ด) | ๋ ์ข์ (AOT๋ก ์ธํ CPU ๋ถ๋ด ๊ฐ์) |
์ ๋ฐ์ดํธ ์๊ฐ | ์ฑ ์ค์น ๋ฐ ์ ๋ฐ์ดํธ ์ ๋น ๋ฅธ | ํ๋กํ์ผ ๊ธฐ๋ฐ ์ต์ ํ๋ก ๋ ๊ธด ์ ๋ฐ์ดํธ ์๊ฐ |
Android N์์์ ๋ณํ
์๋๋ก์ด๋ Nougat(N, 7.0) ๋ถํฐ๋ ART์์์ ์ปดํ์ผ๋ง ์ ๋ต์ด ๋์ฑ ๋ฐ์ ํ๋ค. Nougat์ ART๋ ํ๋กํ์ผ ๊ฐ์ด๋ ์ต์ ํ(PGO)๋ฅผ ์ฌ์ฉํด ์ด๊ธฐ ์ค์น ์ ์์ ํ AOT ์ปดํ์ผ ๋์ , ํ๋กํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ๋ถ๋ถ๋ง AOT ์ปดํ์ผ์ ํ๋ค. ์ดํ, JIT ์ปดํ์ผ๋ฌ๊ฐ ๋ฐํ์ ์ ์์ฃผ ์คํ๋๋ ์ฝ๋ค ์ถ๊ฐ๋ก ์ต์ ํํ๋ค.
์ด ๋ฐฉ์์ ์ด์ ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
1] ๋น ๋ฅธ ์ค์น ์๊ฐ
- ์ฒ์ ์ฑ์ ์ค์นํ ๋, ์์ ํ AOT ์ปดํ์ผ์ ํผํ๊ณ , ํ์ํ ๋ถ๋ถ๋ง ์ปดํ์ผํด ์ค์น ์๊ฐ์ ์ค์ธ๋ค.
2] ์ ์ํ ์ฑ๋ฅ ํฅ์
- ์ฌ์ฉ์ ํจํด์ ๋ฐ๋ผ JIT๊ฐ ํ์ํ ๋ถ๋ถ์ ์ต์ ํํ์ฌ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค.
3] ์ ์ฅ ๊ณต๊ฐ ํจ์จ์ฑ
- ํ๋กํ์ผ ๊ธฐ๋ฐ์ผ๋ก ํ์ํ ๋ถ๋ถ๋ง ์ปดํ์ผํด ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝํ๋ค.
์์ : Android ์ ํ๋ฆฌ์ผ์ด์ ์ค์น ๋ฐ ์คํ ๊ณผ์
1. ์ ํ๋ฆฌ์ผ์ด์ ์ค์น
- ์ค์น ์ AOT ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฃผ ์ฌ์ฉ๋ ์ ์๋ ์ฝ๋ ๋ถ๋ถ์ ๋ค์ดํธ๋ธ๋ก ์ปดํ์ผํ๋ค. ์ด ๊ณผ์ ์ ์๋์ ์ผ๋ก ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋ค.
- ํ๋กํ์ผ ๋ฐ์ดํฐ๊ฐ ์๋ ์๋ก์ด ์ฑ์ ์ต์ํ์ AOT ์ปดํ์ผ์ ํตํด ์ค์น ์๊ฐ์ ๋จ์ถํ๋ค.
2. ์ฑ ์คํ
- ์ฒ์ ์คํ ์ JIT ์ปดํ์ผ๋ฌ๊ฐ ์๋ํ์ฌ ๋ฐํ์ ์ต์ ํ๋ฅผ ์ํํ๋ค.
- ํ๋กํ์ผ ์์ง์ ํตํด ์ฌ์ฉ์์ ์ฌ์ฉ ํจํด์ ํ์ตํ๋ค.
3. ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ์ ์ต์ ํ
- ๊ธฐ๊ธฐ๊ฐ ์ถฉ์ ์ค์ด๊ฑฐ๋ ์ฌ์ฉ๋์ง ์์ ๋, ํ๋กํ์ผ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ AOT ์ปดํ์ผ๋ฌ๊ฐ ์ฑ์ ์ฃผ์ ๊ฒฝ๋ก๋ฅผ ์ต์ ํํ๋ค.
- ํฅํ ์คํ ์ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
Android Runtime(ART) ํํธ ๊ฒฐ๋ก
์๋๋ก์ด๋ JIT์ AOT ์ปดํ์ผ๋ฌ๋ฅผ ๋ณํ ์ฌ์ฉํ๋ ART๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ, ์์ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋ฐฐํฐ๋ฆฌ ํจ์จ์ฑ์ ์ต์ ํํ๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ํจ๊ณผ์ ์ด๋ค.
1] ์ฑ๋ฅ
- AOT๋ก ์ธํ ๋น ๋ฅธ ์คํ๊ณผ JIT๋ก ์ธํ ์ ์ํ ์ต์ ํ๋ฅผ ํตํด ๋ฐ์ด๋ ์ฑ๋ฅ์ ์ ๊ณตํ๋ค.
2] ํจ์จ์ฑ
- ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์ ์ฅ ๊ณต๊ฐ ์ฌ์ฉ์ ํตํด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ค.
3] ์ ์ฐ์ฑ
- ๋ค์ํ ์ฌ์ฉ ํจํด๊ณผ ํ๋์จ์ด ํ๊ฒฝ์ ์ ์ํ์ฌ ์ต์ ์ ์ฑ๋ฅ์ ์ ์งํ๋ค.
ART๋ ์๋๋ก์ด๋ ์ํ๊ณ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๊ทน๋ํํ๊ธฐ ์ํด JIT์ AOT์ ์ฅ์ ์ ๊ฒฐํฉํ ์ค์ํ ๊ธฐ์ ์ด๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๊ณ , ์ฌ์ฉ์๋ค์ ๋์ฑ ๋น ๋ฅด๊ณ ํจ์ก์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋ค.
JIT์ AOT ๋ณํ ์ฌ์ฉ ์ด์ ๊ฒฐ๋ก
JIT์ AOT ์ปดํ์ผ๋ฌ๋ฅผ ๋ณํํด ์ฌ์ฉํ๋ ๊ฒ์ ํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ฑ๋ฅ ์ต์ ํ์ ์์ ๊ด๋ฆฌ์ ์ค์ํ ์ญํ ์ ํ๋ค. ์ด ๋ ์ปดํ์ผ๋ฌ๋ ๊ฐ์์ ์ฅ์ ์ ์ด๋ ค ํ๋ก๊ทธ๋จ์ ๋ค์ํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์ํค๋ฉฐ, ํนํ ๋๊ท๋ชจ ์์คํ ์์ ํฐ ํจ๊ณผ๋ฅผ ๋ฐํํ๋ค.
1. JIT ์ปดํ์ผ๋ฌ๋ ๋ฐํ์ ์ต์ ํ์ ๋คํ์ฑ ์ง์์ ํตํด ํจ์จ์ ์ธ ์คํ์ ์ ๊ณตํ๋ค.
-> ์์ ๊ธ์์ ๋คํ์ฑ์ ๋ํด ์ค๋ช ํ ์ ์ด ์๋ ๋ฐ ๊ฐ์๊ธฐ ๋คํ์ฑ ์ง์์ด๋ ํํ์ด ๋์๋ค. ๐ค ์ด๊ฑฐ ๊ณง ์์๋ณธ๋ค.
2. AOT ์ปดํ์ผ๋ฌ๋ ๋น ๋ฅธ ์๊ฐ ์๊ฐ๊ณผ ์์ ์ ์ธ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ์ปดํ์ผ๋ฌ์ ๋ณํ ์ฌ์ฉ์ ์ต์์ ์ฑ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ค.
ChatGPT์๊ฒ ์ด ๊ธ์ ์ถ์ฒ๋ฅผ ๋ฌผ์๋ค.
JIT ์ปดํ์ผ๋ฌ์ AOT ์ปดํ์ผ๋ฌ ๋ณํ ์ฌ์ฉ์ ๋ํ ์ถ์ฒ
- Oracle's Official Java Documentation
- ๋ด์ฉ: Oracle์ ๊ณต์ ์๋ฐ ๋ฌธ์์์๋ JIT(Just-In-Time) ์ปดํ์ผ๋ฌ์ AOT(Ahead-Of-Time) ์ปดํ์ผ๋ฌ์ ์ฐจ์ด์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ค๋ช ํ๊ณ ์์ต๋๋ค.
- ์ค๋ช
:
- JIT ์ปดํ์ผ๋ฌ๋ ๋ฐํ์์ ์์ฃผ ์คํ๋๋ ์ฝ๋ ํจ์ค๋ฅผ ์ต์ ํํ์ฌ ์คํ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
- AOT ์ปดํ์ผ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๊ฐ์ ๋จ์ถ์ํค๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ฌ์ ์ ์ปดํ์ผํฉ๋๋ค.
- ๋ ์ปดํ์ผ๋ฌ์ ๊ฒฐํฉ์ ๋น ๋ฅธ ์์ ์๊ฐ๊ณผ ๋์ ๋ฐํ์ ์ฑ๋ฅ์ ๋์์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
- ๋งํฌ: Java Performance Documentation
- GraalVM Documentation
- ๋ด์ฉ: GraalVM์ Oracle์์ ์ ๊ณตํ๋ ๋ค๋ชฉ์ ๊ฐ์ ๋จธ์ ์ผ๋ก, JIT์ AOT ์ปดํ์ผ์ ์ง์ํ๋ฉฐ ๋ ์ปดํ์ผ๋ฌ์ ๋ณํ ์ฌ์ฉ์ ๋ํ ์ค๋ช ์ ํฌํจํฉ๋๋ค.
- ์ค๋ช
:
- GraalVM์ AOT๋ก ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ์ฌ ๋น ๋ฅธ ์์ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐํ์ ์ค JIT ์ปดํ์ผ์ ์ฌ์ฉํ์ฌ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
- ์ด ์ ๊ทผ ๋ฐฉ์์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ๋น ๋ฅธ ๋ฐฐํฌ์ ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ณด์ฅํฉ๋๋ค.
- ๋งํฌ: GraalVM Documentation
- "Java Performance: The Definitive Guide" by Scott Oaks
- ๋ด์ฉ: ์ด ์ฑ ์ Java ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ์ฌ์ธต์ ์ธ ํต์ฐฐ์ ์ ๊ณตํ๋ฉฐ, JIT์ AOT ์ปดํ์ผ๋ฌ์ ์ฅ๋จ์ ๊ณผ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ถ์ํฉ๋๋ค.
- ์ค๋ช
:
- JIT ์ปดํ์ผ์ ์์ฃผ ํธ์ถ๋๋ ๋ฉ์๋๋ฅผ ์ต์ ํํ์ฌ ๋ฐํ์ ์ฑ๋ฅ์ ๊ทน๋ํํฉ๋๋ค.
- AOT ์ปดํ์ผ์ ์ฝ๋ ์คํ ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ์ฌ ๋น ๋ฅธ ์์์ ์ง์ํฉ๋๋ค.
- ๋ ๊ธฐ์ ์ ์กฐํฉ์ ๋๊ท๋ชจ ์์คํ ์์์ ์ฑ๋ฅ์ ๊ทน๋ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋งํฌ: Java Performance on Amazon
- "Optimizing Java: Practical Techniques for Improving JVM Application Performance" by Ben Evans, James Gough, Chris Newland
- ๋ด์ฉ: ์ด ์ฑ ์ JVM ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ์ค์ฉ์ ์ธ ๊ธฐ์ ์ ์ ์ํ๋ฉฐ, JIT ๋ฐ AOT ์ปดํ์ผ๋ฌ์ ์ต์ ํ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- ์ค๋ช
:
- JIT ์ปดํ์ผ๋ฌ๋ ๋ฐํ์์ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ์คํ ๋น๋๊ฐ ๋์ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ๋์ ์ผ๋ก ๊ฐ์ ํฉ๋๋ค.
- AOT ์ปดํ์ผ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ฌ์ ์ ์ต์ ํํฉ๋๋ค.
- ์ด ๋ ์ ๊ทผ ๋ฐฉ์์ ํจ๊ป ์ฌ์ฉํ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ฌ์ฉ ์๋๋ฆฌ์ค์์ ์ต์ ์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.
- ๋งํฌ: Optimizing Java on Amazon
- "Compilers: Principles, Techniques, and Tools" by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
- ๋ด์ฉ: ์ปดํ์ผ๋ฌ ์ด๋ก ์ ๊ธฐ์ด์ ํ๋ ์ปดํ์ผ๋ฌ ์ค๊ณ์ ๋ํ ์ด ์ฑ ์ JIT ๋ฐ AOT ์ปดํ์ผ์ ๊ธฐ๋ฒ๊ณผ ์์ฉ์ ์ค๋ช ํฉ๋๋ค.
- ์ค๋ช
:
- JIT ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ์ ์คํ ์์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํ๋ฅผ ์ํํ๋ฉฐ, ๋์ ์ปดํ์ผ์ ํตํด ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- AOT ์ปดํ์ผ๋ฌ๋ ์ฝ๋์ ์ ์ ๋ถ์์ ํตํด ์ฌ์ ์ ์ต์ ํ๋ ์คํ ํ์ผ์ ์์ฑํฉ๋๋ค.
- ๋ณํ ์ฌ์ฉ์ ๋ค์ํ ํ๋ก๊ทธ๋จ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ์ํค๊ธฐ ์ํ ๋ณตํฉ์ ์ธ ์ต์ ํ ์ ๋ต์ ๋๋ค.
- ๋งํฌ: Compilers on Amazon
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JVM] ๋ค์ดํฐ๋ธ ์ฝ๋์ JVM (0) | 2024.07.26 |
---|---|
[Compiler] ์ฝ๋ ํจ์ค(์ฝ๋ ๊ฒฝ๋ก) + ์ฝ๋ ํจ์ค์ ์ปดํ์ผ๋ฌ ์ต์ ํ (0) | 2024.07.26 |
[Android][Flutter] Gemini๊ฐ ์๋ ค์ค ์๋๋ก์ด๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ vs ํ๋ฌํฐ ๊ฐ๋ฐ ๋น๊ต (0) | 2024.07.25 |
[Android][Flutter] ํ๋ฌํฐ์ ๋ ๋๋ง ๋ฐฉ์ (0) | 2024.07.25 |
[Java] ๋ฉ์๋ ์๊ทธ๋์ฒ Method Signature (0) | 2024.07.25 |