728x90
๐ฅ Dart web
- Dart Web์ JavaScript๋ก ๊ตฌ๋๋๋ ์น ํ๋ซํผ์์ Dart ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํด ์ค๋ค
- ๊ฐ๋ฐ์๊ฐ ์์ฑํ Dart ์ฝ๋๋ฅผ ์น ์คํ ํ๊ฒฝ์ธ javascript๋ก ์ปดํ์ผํ๊ณ , ์ด ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ค(์: Chrome ๋ด๋ถ์ V8 )
- ์น ์ปดํ์ผ๋ฌ๋ Dart๋ฅผ JavaScript ๋๋ WebAssembly๋ก ๋ณํํ๋ค
๐ฅ Dart ์น์๋ ์ธ ๊ฐ์ง ์ปดํ์ผ ๋ชจ๋๊ฐ ์๋ค
- ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ฆ๋ถํ JavaScript ๊ฐ๋ฐ ์ปดํ์ผ๋ฌ์ด๋ค
- Dart ์ฝ๋๋ฅผ ๋น ๋ฅด๊ณ , ์ปดํฉํธํ๊ณ , ๋ฐฐํฌ ๊ฐ๋ฅํ JavaScript๋ก ์ปดํ์ผํ๋ ์ต์ ํ JavaScript ํ๋ก๋์ ์ปดํ์ผ๋ฌ. ์ด๋ฌํ ํจ์จ์ฑ์ dead-code ์ ๊ฑฐ์ ๊ฐ์ ๊ธฐ์ ์์ ๋์จ๋ค
- Dart ์ฝ๋๋ฅผ ์ด๊ณ ์ ๋ฐฐํฌ ๊ฐ๋ฅํ WebAssembly GC ์ฝ๋๋ก ์ปดํ์ผํ๋ ์ต์ ํ WebAssembly(WasmGC) ํ๋ก๋์ ์ปดํ์ผ๋ฌ์ด๋ค
๐ฅ Dart Native
- ๊ฐ๋ฐ์๊ฐ ์์ฑํ Dart ์ฝ๋๋ฅผ ์ฌ๋ฌ CPU์ ์ํคํ ์ฒ์ ๋ง๊ฒ ๋ณํํด ์ค๋ค
- ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํฑ ๊ธฐ๊ธฐ๋ฅผ ํ๊ฒ์ผ๋ก ํ๋ ์ฑ์ ๊ฒฝ์ฐ JIT(Just-In-Time) ์ปดํ์ผ์ ๊ฐ์ถ Dart VM๊ณผ ๋จธ์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ AOT(Ahead-Of-Time) ์ปดํ์ผ๋ฌ๊ฐ ๋ชจ๋ ํฌํจ๋์ด ์์ด ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ค
- ๊ฐ๋ฐ ์ค์ ๋น ๋ฅธ ๊ฐ๋ฐ์ ์ฃผ๊ธฐ๋ ๋ฐ๋ณต์ ํ์์ ์ด๋ค. Dart VM์ ์ฆ๋ถ ์ฌ์ปดํ์ผ(ํซ ๋ฆฌ๋ก๋ ๊ฐ๋ฅ), ๋ผ์ด๋ธ ๋ฉํธ๋ฆญ ์ปฌ๋ ์ ( DevTools ๊ตฌ๋ ) ๋ฐ ํ๋ถํ ๋๋ฒ๊น ์ง์์ ๊ฐ์ถ Just-in-Time ์ปดํ์ผ๋ฌ(JIT)๋ฅผ ์ ๊ณตํ๋ค
๐ฅ just-in-time(JIT)
- ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ค
- DartVM(Virtual Machine)์ ์ด์ฉํด ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์ฌ์ดํด์ด ๋น ๋ฅด๊ณ UI๋ฅผ ๊ฐ๋ฐํ ๋ ์ ์ฉํ๋ค
- ๋ฐํ์์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ๊ธฐ๊ณ ์ฝ๋๋ก ์ปดํ์ผํ๋ ์ปดํ์ผ๋ฌ์ด๋ฉฐ, Flutter๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๊ณ ์๋ Hot-reload๋ JIT ์ปดํ์ผ๋ฌ ๋๋ถ์ ๊ฐ๋ฅํ๋ค
- ๊ฐ๋ฐ์์ ์ฝ๋๊ฐ ๊ฐ์๋จธ์ ์์ ์๋ํ๊ณ ์์ด์ ์กฐ๊ธ ๋๋ฆฌ๋ค
- JIT๋ ํจ์ฌ ๋น ๋ฅธ ๊ฐ๋ฐ ์๋๋ฅผ ์ ๊ณตํ์ง๋ง, ์คํ ์๋๋ ๋ ๋๋ ค์ง๋ค. ํนํ JIT ์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์ฝ๋ ๋ถ์๊ณผ ์ปดํ์ผ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ์คํ ์๋๋ฅผ ๋๋ฆฌ๊ฒ ํ๊ธฐ ๋๋ฌธ์ ์ฑ์ ๋ฐฐํฌ(๋น๋) ํ ๋๋ ์ข์ง ์๋ค
๐ฅ ahead-of-time (AOT)
- ๊ฐ๋ฐ์ด ๋๋๊ณ ์ฑ์ ๋ฐฐํฌ(๋น๋)ํ ๋ ์ฌ์ฉ ํ๋ค
- ์ปดํ์ผ์ ๋จผ์ ํ๊ณ , ๊ฒฐ๊ณผ๋ก ๋ฐ์ด๋๋ฆฌ(CPU ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด)๋ฅผ ๋ฐฐํฌํ๋ค
- AOT๋ก ์ปดํ์ผ๋ ์ฑ์ ์ผ๊ด๋๊ณ ์งง์ ์์ ์๊ฐ์ผ๋ก ์คํ๋๋ค(์ด๋ฏธ ์ปดํ์ผ์ด ๋์๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค)
- ๊ฐ๊ฐ์ ์ํคํ ์ณ(iOS, Android, Window, Mac..) ๋ฐ๋ก๋ฐ๋ก ์ปดํ์ผ์ ์งํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค
- ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ค๋ฉด ์ ์ฒด ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์ปดํ์ผํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋๋ฆฌ๊ฒ ํด ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ข์ง ์๋ค
๊ฒฐ๋ก
๊ฐ๋ฐ ํ๊ฒฝ์์๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ก๋ฐ๋ก ํ์ธ/์์ ํ๋ฉฐ ๊ฐ๋ฐํ๊ณ ,
์ฑ์ ๋ฐฐํฌ(๋น๋) ํ ๋๋ AOT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฐ์ CPU์ ๋ฐ์ด๋๋ฆฌ๋ก ๋ณํ์์ผ์ ๋ฐฐํฌ(๋น๋) ํด์ค๋ค
โป Reference
https://nomadcoders.co/ [๋ ธ๋ง๋์ฝ๋ ๊ฐ์ ์ฐธ๊ณ ]
728x90
'Dart > ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dart ๊ธฐ์ด] List, Map, Set (0) | 2024.07.31 |
---|---|
[Dart ๊ธฐ์ด] DATA TYPE (0) | 2024.07.31 |
[Dart ๊ธฐ์ด] null safety (0) | 2024.07.31 |
[Dart ๊ธฐ์ด] ๋ณ์ (0) | 2024.07.31 |
Flutter SDK ๋? (0) | 2024.07.30 |