์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํ์ํ๊ณ , ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ด์ฅํ๊ณ ์๋ค.
๋ธ๋ผ์ฐ์ ๋ง๋ค ์์ง์ ์ข ๋ฅ๊ฐ ๋ค๋ฅด์ง๋ง, ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐฉ์์ ๋น์ทํ๋ค. (V8, SpiderMonkey, Javascript core ๋ฑ์ ๊ตฌํ์ด ๊ฐ๊ฐ ๋ค๋ฅด๋ค.)
1. ์์ค์ฝ๋๋ฅผ ๋ง๋๋ฉด ํ์ฑํ์ฌ AST(Abstract Syntax Tree)๋ก ๋ณํํ๋ค.
2. ์ธํฐํ๋ฆฌํฐ(Interpreter)๋ AST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํธ์ฝ๋(Bytecode)๋ฅผ ์์ฑํ๋ค.
3. ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ ๋, ์์ฃผ ์ฌ์ฉ๋๋ ํจ์ ๋ฐ ํ์ ์ ๋ณด ๋ฑ์ด ์๋ ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ(Profiling data)์ ๊ฐ์ด ์ต์ ํ ์ปดํ์ผ๋ฌ(Optimizing compiler)์๊ฒ ๋ณด๋ธ๋ค.
4. ์ต์ ํ ์ปดํ์ผ๋ฌ๋ ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ํ๋ ์ฝ๋(Optimized code)๋ฅผ ์์ฑํ๋ค.
5. ํ์ง๋ง, ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ ์ค์ ์๋ชป๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ต์ ํ ํด์ (Deoptimize)๋ฅผ ํ๊ณ ๋ค์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํด์ ์ด์ ๋์์ ๋ฐ๋ณตํ๋ค.
์ฐธ๊ณ
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/engine.md
'elice > study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] ๋ชจ๋ ๋ฒ๋ค๋ฌ์ ํธ๋์คํ์ผ๋ฌ (0) | 2022.02.01 |
---|---|
[CS] BOM๊ณผ DOM (0) | 2022.01.29 |
[CS] ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์๋ฆฌ (0) | 2022.01.27 |
[BE] DML(Data Manipulation Language) (0) | 2022.01.26 |
[CS] CSR(Client Side Rendering)๊ณผ SSR(Server Side Rendering) (0) | 2022.01.24 |