.NET์ CLS(Common Language Specification)์ ์ค์ํ๋ ์ธ์ด๋ค(C#, VB etcโฆ)์ ์ปดํ์ผ ํ๊ฒ๋๋ฉด MSIL(IL, CIL)๋ก ๋ณํ๋๋ฉฐ ์ด IL ๋ฉ์ด๋ฆฌ๋ค์ด .NET ์ Assembly๋ผ๊ณ ์๊ณ ์์ต๋๋ค.
์ด ๋ .NET Assembly๋ฅผ ์คํํ์ฌ ํ๋ก์ธ์ค๋ก ๋ง๋ค๋ฉด ์ด ๋๋ถํฐ JIT Compiler๊ฐ ๋์ํ๋ฉด์ ํธ์ถ๋๋ ๋ฉ์๋๋ค์ ํ๋์ฉ ๋น๋ํ์ฌ ์ฌ์ฉํ๋ค๊ณ ์๊ณ ์์ต๋๋ค. JIT๊ฐ ์ด๋ฐ ๋ฐฉ์์ด๋ค๋ณด๋, ๊ทธ๋ ๊ทธ๋ JITingํ์ฌ ์ต์ด ์คํ ์์๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.(์ฒด๊ฐ๋๋ ์์ค์ ์๋.)
์ ์ด๊ฒ ์ซ์ผ๋ฉด AOTํ์์ผ๋ก ์ฒ์๋ถํฐ ๋ค ๋น๋ํด๋ฒ๋ฆฌ๋ ๊ฒ์ด ๋ค๋ฅธ ๋ฐฉ์์ ๋์ฒด ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ์, ์ด๊ฑฐ ๋ง๊ณ ๋ NGEN์ด๋ผ๋๊ฒ ์๋๊ตฐ์. .NET Framework์ฉ์ด NGEN์ด๊ณ .NET Core์ฉ์ CrossGen ์ด๋ผ๊ณ MSDN์์ ๋ดค์ต๋๋ค.
์ ๊ฐ ๋์ถฉ ์๊ธฐ๋ก ์ด๋ฏธ ILํ ๋ .NET Assembly์ ๋ํ์ฌ NGEN์ผ๋ก ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง๋ก ๋ง๋ค๋ฉด, JITing์ ํ์ง ์์ ์ ์๋๋ก ์ ๋ถ ์ฌ์ ์ NGEN์ผ๋ก ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด, .NET ํ๋ก์ธ์ค์์๋ AOT์ฒ๋ผ ๋ณ๋์ ์ค๋ฒํค๋ ์์ด ๋์ํ๋ค๊ณ ์ดํดํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ NGEN์ผ๋ก .NET Assembly๋ฅผ ์์ ํ ๋ค์๋ ์ฌ์ ํ CLR์์ ๋์ํ์ฌ, ๊ด๋ฆฌ์ฝ๋๋ก ๋์ํ๋ค๊ณ ํฉ๋๋ค. ๋ฌผ๋ก NGEN์ผ๋ก .NET Assempbly๋ฅผ ์์ ํ์ ๋๋ ์ฐธ์กฐ์ง์ญ์ฑ(Locality of reference)์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ํ๋ผ๊ณ ํ๊ธด ํ๋๊ตฐ์. ์ฐธ์กฐ ์ง์ญ์ฑ์ MPGO๋ก ํด๊ฒฐํ ์ ์๋ค๊ณ ํ๋๋ฐโฆ์ด๊ฒ์ ๋ฌด์จ๋ง์ธ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด ๋
- NGEN์ ์๋ฆฌ๊ฐ ์ฌ์ ์ JIT์ผ๋ก ๋ฐ์ํ ์ ์๋ ์ผ๋ค์ ๋ฏธ๋ฆฌ JITing ํ๋ฏ ํธ์ถํด์ฃผ์ด์ ์ด๋ฐ ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง๊ฐ ๋๋ ๊ฒ์ธ์ง
- ๋น๋ ํ ๋งค๋ฒ NGEN-MPGO๋ฅผ ํด์ฃผ์ด์ผ ํ๋์ง ๊ถ๊ธํฉ๋๋ค. (ํ์ดํ๋ผ์ธ ๊ฐ์ ๊ฒ์ผ๋ก ์๋ํ๋ ๋ถ๊ฐ๋ฅํ์ง, ์๋๋ฉด VS2019์์ ๋น๋ ํ ์๋์ผ๋ก ํ๊ฒ ํ๋ค๊ฑฐ๋)
์ ๋ ๊ฐ์ง๊ฐ ๊ถ๊ธํฉ๋๋ค. ๋
ธํ์ฐ๋ฅผ ๋ถํ๋๋ฆฝ๋๋ค!
์ด์์
๋๋ค.