NGEN.exe, CrossGen.exe (Native Image Generator)

.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๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•˜๋Š”๋ฐโ€ฆ์ด๊ฒƒ์€ ๋ฌด์Šจ๋ง์ธ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋•Œ

  1. NGEN์˜ ์›๋ฆฌ๊ฐ€ ์‚ฌ์ „์— JIT์œผ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋“ค์„ ๋ฏธ๋ฆฌ JITing ํ•˜๋“ฏ ํ˜ธ์ถœํ•ด์ฃผ์–ด์„œ ์ด๋Ÿฐ ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€๊ฐ€ ๋˜๋Š” ๊ฒƒ์ธ์ง€
  2. ๋นŒ๋“œ ํ›„ ๋งค๋ฒˆ NGEN-MPGO๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ž๋™ํ™”๋Š” ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€, ์•„๋‹ˆ๋ฉด VS2019์—์„œ ๋นŒ๋“œ ํ›„ ์ž๋™์œผ๋กœ ํ•˜๊ฒŒ ํ•œ๋‹ค๊ฑฐ๋‚˜)

์œ„ ๋‘ ๊ฐ€์ง€๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋…ธํ•˜์šฐ๋ฅผ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
์ด์ƒ์ž…๋‹ˆ๋‹ค.

2๊ฐœ์˜ ์ข‹์•„์š”