๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

 

 

์ปดํŒŒ์ผ

 

์ปดํŒŒ์ผ๋Ÿฌ: ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๋กœ ๋ฐ”๊พธ์–ด์ฃผ๋Š” ๋ฒˆ์—ญ ํ”„๋กœ๊ทธ๋žจ or ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์œผ๋กœ C์–ธ์–ด ๊ณ„์—ด ์–ธ์–ด๊ฐ€ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ดˆ๊ธฐ์—” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปดํ“จํ„ฐ ์œ„์—์„œ ๋ฐ”๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ธฐ๊ณ„์–ด๋ฅผ ํ†ตํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ ๊ณผ์ •์€ ์ƒ์‚ฐ์„ฑ, ๊ธฐ๊ธฐ ๊ฐ„ ํ˜ธํ™˜์„ฑ, ๋””๋ฒ„๊น…๋“ฑ ๋ชจ๋“  ๋ฉด์—์„œ ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํ“จํ„ฐ๊ณตํ•™์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ๋งŽ์€ ๋ถ€๋ถ„ ์ถ”์ƒํ™”๋œ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ฒˆ์—ญ๊ธฐ๋ฅผ ํ†ตํ•ด ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ์ด ๋ฒˆ์—ญ๊ธฐ๊ฐ€ ๋ฐ”๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.

(ํฐ๋…ธ์ด๋งŒ์ด ์ œ์ž๋“ค์—๊ฒŒ ์ž”๋จธ๋ฆฌ ๊ตด๋ฆฐ๋‹ค๊ณ  ๋‚˜๋ฌด๋ผ ์นœ ๊ฒƒ์ด ํ˜„์žฌ์˜ ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.)

 

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

  • ์›์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ •์  ์ปดํŒŒ์ผ(Static Compilation)

  • ๋ฐ”์ดํŠธ ๋“ฑ์˜ ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” AOT ์ปดํŒŒ์ผ(Ahead-Of-Time Compilation)

  • ์‹คํ–‰์‹œ ์ตœ์ดˆ ํ•œ ๋ฒˆ์— ํ•œํ•ด ์ปดํŒŒ์ผ์„ ๊ฑฐ์น˜๋Š” JIT ์ปดํŒŒ์ผ(Just-In-Time Compilation)

์ปดํŒŒ์ผ์„ ํ•˜๋Š” ๋Œ€์‹ , ์†Œ์Šค๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋ฒˆ์—ญํ•˜์ง€ ์•Š๊ณ  ๋ช…๋ น ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ํ•ด์„ํ•˜์—ฌ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋Š”๋ฐ, ์ด ํ•ด์„๊ธฐ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค.

 

 

์ธํ„ฐํ”„๋ฆฌํ„ฐ

 

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฒˆ์—ญ๊ธฐ๋ผ๋ฉด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ํ†ต์—ญ๊ธฐ์ด๋‹ค. 

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด์ธ SQL, ์ž์ฒด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘ Python, Ruby๋“ฑ์ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์žฅ์ 

 

1.  ์ˆ˜์ •์ด ๊ฐ„๋‹จํ•˜๋‹ค.

 

์ปดํŒŒ์ผ ์–ธ์–ด์˜ ๋‹จ์ ์€ ์ˆ˜์ •์ด ์šฉ์ดํ•˜์ง€ ์•Š์•„, ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์‹œ ์ปดํŒŒ์ผ์„ ํ•ด์•ผ ๋˜๋Š”๋ฐ, ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์ผ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ์ปดํŒŒ์ผ์ด ๋ช‡ ์‹œ๊ฐ„์”ฉ ๊ฑธ๋ฆฌ๋Š” ๋ฉ์น˜ ํฐ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์†๋„๋Š” ๋А๋ฆฌ์ง€๋งŒ๋Š” ์ˆ˜์ •์ด ๊ฐ„๋‹จํ•˜๋‹ค.

 

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฒˆ์—ญํ•ด์„œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์— ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๊ณ  ๊ฐ„๋‹จํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ ๋ฉ์น˜๊ฐ€ ์ปค์ง€๋ฉด ์ปดํŒŒ์ผ์ด ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ๋˜๋Š” ์ผ์ด ๋งŽ์•„์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋. ์ด ์žฅ์  ๋•Œ๋ฌธ์— ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์ˆ˜์ •์ด ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•˜๋Š” ์šฉ๋„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ์‚ด๋ ค์„œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์ฑ„์šฉํ•œ ๊ฒƒ์ด ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋‹ค.

 

๋””๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์›”ํ•˜๋‹ค. ๊ตฌ๋ฌธ ์˜ค๋ฅ˜์˜ ๊ฒฝ์šฐ ์˜ˆ์ „ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๊ฒฝ์šฐ์—๋Š” ์ •๋ง๋กœ ํ•œ์ค„์”ฉ ์ฝ์–ด์„œ ์‹คํ–‰ํ–ˆ๊ธฐ์— ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ค๋Š” ๋ถ€๋ถ„ ์ „๊นŒ์ง€๋Š” ๋ฉ€์ฉกํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์–ด๋„ ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ตœ๊ทผ์—๋Š” ์„ฑ๋Šฅ ๋“ฑ์˜ ์ด์œ ๋กœ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ฉด ํŒŒ์ผ ์ „์ฒด๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ์ „๋ถ€ ์žก์•„์ฃผ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋„ ๋งŽ์•„์ง€๊ณ  ์žˆ๋‹ค.

 

2. ์„ค๊ณ„๊ฐ€ ์‰ฝ๋‹ค.

 

๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘์— ๋Œ€๋ถ€๋ถ„์ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋‹ค.  ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์ž์ฒด์ ์œผ๋กœ ์‹คํ–‰๊ธฐ๋Šฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋ชฉ์  ํ”„๋กœ๊ทธ๋žจ(.exe)์„ ๋งŒ๋“œ๋Š” ๊ณณ๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„ ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋กœ ์งœ๋Š” ์‹์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๊ฐ€ ๋งŽ์•„์ง€๋Š” ์ด์œ ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์„ค๊ณ„๊ฐ€ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ฐจ์›์—์„œ ๋™์ ์ธ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ธฐ ์œ ๋ฆฌํ•˜๋‹ค. ์–ด๋–ค ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋˜๊ฐ€ ์‹ฌ์ง€์–ด ์ด๋ฏธ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋ฉฐ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

 

 

๋‹จ์ 

 

1. ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‰ฝ๊ฒŒ ๊ณต๊ฐœ๋œ๋‹ค.

 

์ปดํŒŒ์ผ๋˜๋Š” ์–ธ์–ด๋„ ๊ธฐ๊ณ„์–ด๋ฅผ ์ฝ์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋””์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›๋ณธ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅ์€ ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋“ฑ์œผ๋กœ ์ปดํŒŒ์ผํ•ด์„œ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์ž˜ ์—†์„ ๋ฟ๋”๋Ÿฌ, ์ปดํŒŒ์ผ ์ „/ํ›„ ์–ธ์–ด๊ฐ€ ๋น„๊ต์  ๋‹จ์ˆœํ•œ ํŽธ์ด๋ผ์„œ ์‰ฝ๊ฒŒ ๋””์ปดํŒŒ์ผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์•”ํ˜ธํ™”๋ฅผ ํ•ด๋„ ์–ด์ฐจํ”ผ ์‹คํ–‰๋  ๋•Œ๋Š” ๋ณตํ˜ธํ™”๋˜๋‹ˆ ๋ฌด์šฉ์ง€๋ฌผ์ด๋‹ค. ๊ทธ๋‚˜๋งˆ ์‹๋ณ„์ž๋“ค์„ ์ „๋ถ€ ์ด์ƒํ•˜๊ฒŒ ๋ฐ”๊พธ๊ณ  ํ•ด์„ํ•˜๊ธฐ ํž˜๋“ค๊ฒŒ ๋‚œ๋…ํ™”ํ•˜๋Š” ์ •๋„ ์™ธ์— ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.


2.  ๋ฌธ์ž๋ฅผ ์ฝ๋Š” ํŠน์„ฑ์ƒ, ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ•จ์ˆ˜์—์„œ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ ์†Œ์Šค์ฝ”๋“œ์˜ ์‰ฌ์šด ์œ ์ถœ ๊ฐ€๋Šฅ์„ฑ์ด ์˜คํžˆ๋ ค ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ณ„์—ด ์–ธ์–ด๋“ค์˜ ๊ฐ•์ ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ์˜จ๊ฐ– ๋ถˆ๋ฒ• ๋ณต์ œ๋‚˜ ํ•ดํ‚น์˜ ํ‘œ์ ์ด๋˜๊ธฐ ์‰ฝ๊ณ , ํŽธ๋ฆฌํ•œ ์ ‘๊ทผ์„ฑ ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์ด ๋ชฐ๋ ค, ์ „ ์„ธ๊ณ„์ ์ธ ์—ฐ๊ตฌ๊ฐœ๋ฐœ ์„ฑ๊ณผ ๊ณต์œ ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์‹คํ–‰ ์‹œ๋งˆ๋‹ค ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ์†๋„๋Š” ์ •์  ์ปดํŒŒ์ผ ์–ธ์–ด๋ณด๋‹ค ๋А๋ฆฌ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ƒ๋จธ์‹  ํƒ€๊ฒŸ์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, ๋ฐ˜๋ณต์ ์œผ๋กœ ์“ฐ์ด๋Š” ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค ๋“ฑ์˜ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•˜๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ๋‚ด์žฅํ•˜๋Š” ๋ฐฉ์‹์ด ๋„์ž…๋˜์—ˆ๋‹ค.

 

 

JIT

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์ ์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ์ฆ‰์„์œผ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ๋™์ ๋ฒˆ์—ญ์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

C๋‚˜ C++์—์„œ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ฒ˜์Œ ํ•œ ๋ฒˆ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ๊ณผ ๋Œ€์กฐ์ ์ด๋‹ค.

๋ณดํ†ต ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฐฉ์‹์˜ ์–ธ์–ด ๊ตฌํ˜„๋“ค์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ๋„์ž…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

 

JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋งค๋ฒˆ ํ•ด์„ํ•˜๋Š” ๋Œ€์‹  ์ฒ˜์Œ ์‹คํ–‰๋  ๋•Œ ์ธํ„ฐํ”„๋ฆฌํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ์ฝ”๋“œ๋ฅผ ์บ์‹ฑํ•œ ๋’ค, ์ดํ›„์—๋Š” ์บ์‹ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๋А๋ฆฐ ์‹คํ–‰ ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์‹ค JIT '์ปดํŒŒ์ผ๋Ÿฌ'๋ณด๋‹ค๋Š” JIT '์ธํ„ฐํ”„๋ฆฌํ„ฐ'๊ฐ€ ๋” ์ •ํ™•ํ•œ ํ‘œํ˜„์ด๋‹ค. ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ปดํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” Java๋„ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•  ๋•Œ JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 


๋‹จ์ 

 

1. ์ •์  ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ์— ๋น„ํ•ด ์‹คํ–‰ ์†๋„ ๋ฉด์—์„œ ์†ํ•ด๋ฅผ ๋ณธ๋‹ค.

 

์ดˆ๊ธฐ ๊ตฌ๋™ ์‹œ์—๋Š” ์†Œ์Šค ์ฝ”๋“œ(ํ˜น์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ)๋ฅผ ์‹คํ–‰ ๋‹จ๊ณ„์—์„œ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐ์— ์‹œ๊ฐ„๊ณผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋ชจํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํŠนํžˆ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋งค์šฐ ์งง์€ ๊ฒฝ์šฐ์—๋Š” ์• ์จ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์ œ๋Œ€๋กœ ์šธ๊ถˆ๋จน๊ธฐ๋„ ์ „์— ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚˜๋Š” ๋ฐฐ๋ณด๋‹ค ๋ฐฐ๊ผฝ์ด ๋” ํฐ ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง€๊ธฐ๋„ ํ•œ๋‹ค.

ํฌ๊ฒŒ ๋‚˜๋ˆ ์„œ HotSpot VM๊ณผ ๊ฐ™์ด ๋ฉ”์†Œ๋“œ(ํ•จ์ˆ˜) ๋‹จ์œ„๋กœ JIT ์ปดํŒŒ์ผ์„ ํ•˜๋Š” ๋ฐฉ์‹๊ณผ, ๊ทธ๋ณด๋‹ค ๋” ์ž‘์€ ๋‹จ์œ„์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ๋ฆ„์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๋ฉฐ ์ปดํŒŒ์ผํ•  ์ฝ”๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” Tracing JIT ๋ฐฉ์‹์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ Tracing JIT์˜ ๊ฒฝ์šฐ์—๋Š” ์‹คํ–‰ ์‹œ์ ์—๋งŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ปดํŒŒ์ผ์— ์ ๊ทน์ ์œผ๋กœ ๋ฐ˜์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ก ์ ์œผ๋กœ๋Š” ์ •์  ์ปดํŒŒ์ผ ๋ฐฉ์‹๋ณด๋‹ค ์ปดํŒŒ์ผ ์†๋„๊ฐ€ ๋” ๋นจ๋ผ์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.



2. JIT ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž ์žฌ์ ์œผ๋กœ ์ƒ๋‹นํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค๋Š” ํŠน์ง• ๋•Œ๋ฌธ์—ํŠนํžˆ JIT ์ปดํŒŒ์ผ๋Ÿฌ ์ž์ฒด์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณง๋ฐ”๋กœ ๋ณด์•ˆ์ทจ์•ฝ์ ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ์ธํ…” CPU๊ฒŒ์ดํŠธ๋กœ ์œ ๋ช…ํ•œ ์ŠคํŽ™ํ„ฐ ๋ณด์•ˆ์ทจ์•ฝ์ ์€ JIT์— ์˜์กดํ•˜๋Š” JavaScript ์—”์ง„์„ ๊ฐ€์ง„ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ๋ฐœ์ƒํ–ˆ๋‹ค. ์˜ค๋ผํด์˜ HotSpot VM ๋˜ํ•œ JIT ์ปดํŒŒ์ผ๋Ÿฌ ๋ฒ„๊ทธ๋กœ ์ธํ•œ ๋‹ค์ˆ˜์˜ ๋ณด์•ˆ์ทจ์•ฝ์ ์ด ์žˆ์—ˆ๋‹ค.

์ฐธ๊ณ ๋กœ iOS์—์„œ๋Š” ์ƒ๊ธฐํ•œ ๋ณด์•ˆ๋ฌธ์ œ๋ฅผ ์ด์œ ๋กœ ๋„คํŠธ์›Œํฌ๋กœ ๋ฐ”์ด๋„ˆ๋ฆฌ๋‚˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•˜๊ณ  ์žˆ๋‹ค. ๊ตฌ๊ธ€ ํฌ๋กฌ์ด๋‚˜ ํŒŒ์ด์–ดํญ์Šค์˜ iOS ๋ฒ„์ „์ด ์ž์ฒด ์—”์ง„์„ ์“ฐ์ง€ ๋ชปํ•˜๊ณ  ์• ํ”Œ์ด ์ œ๊ณตํ•˜๋Š” WebKit์˜ ์›น๋ทฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ์ฃผ์š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋‹ค.[5] ์š”์ฆ˜ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ JavaScript ์—”์ง„์œผ๋กœ JIT๋ฅผ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. iOS๋„ ํŽธ๋ฒ•์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‚˜ ์ •์ฑ…์ด ์ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„ ์Šคํ† ์–ด์— ์˜ฌ๋ฆด๋•Œ reject๋œ๋‹ค.

 

์ถœ์ฒ˜:๋‚˜๋ฌด์œ„ํ‚ค

 

 

๋ฐ˜์‘ํ˜•