C# vs C++
: GC ์์ ์์ ์ฐจ์ด. C#์ GC(Garbage Collector)๊ฐ ์๊ฒจ์ ์์ฐ์ฑ์ด ๋ ์ข๋ค.
Mono, IL2CPP, Burst
: ์ฝ๋๋ฅผ ์คํ๊ฐ๋ฅํ ํํ๋ก ๋ฐ๊ฟ์ฃผ๋ ์ปดํ์ผ๋ฌ์ธ Scripting Backend์ ์ข ๋ฅ
Mono๋ IL2CPP ๋ณด๋ค ๋น ๋ฅด๊ณ ํ๋ซํผ์ ๋ ๋ฆฝ์ ์. IL2CPP๊ฐ ๋ ๋ณด์์ฑ์ด ๋๊ณ Android/iOS ํธํ๊ฐ๋ฅ.
cf) Unity ์์ฒด ์์ง์ C++์ด๊ณ Script ๋ C#์ผ๋ก ์์ฑํ๋ ๊ตฌ์กฐ.
Mono
: Mono๋ JIT(Just-In-Time) ์ปดํ์ผ์ ์ฌ์ฉํ๊ณ ๋ฐํ์ ์์ ์ ์์ฒญ์ ์ฝ๋๋ฅผ ์ปดํ์ผ ํจ
: 64bit ์ง์ ์ํจ.
IL2CPP
: IL2CPP๋ AOT(Ahead-of-Time) ์ปดํ์ผ์ ์ฌ์ฉํ๊ณ ์คํ ์ ์ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปดํ์ผ ํจ.
: iOS ๋ 64bit ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ 64bit ๋ฅผ ์ง์ํ๋ IL2CPP ๋ฅผ ์ฌ์ฉํด์ผ๋ง ํ๋ค.
* C#: .Net ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ค๊ณ C++์์ ํ์๋ ๊ฒ.
C++ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์ด๋ ค์์ Garbage Collector๋ก ํด๊ฒฐํ๋ค.
C#์ Android/iOS์์ ๋๋ฆด ์ ์๋ ์ด์ ๋ mono ํ๋ ์์ํฌ ๋๋ถ.
(์ฆ, Mono Framework๋ฅผ ๋์์ผ ๋๋ฆด ์ ์๋ ๊ฒ)
C#์ IL(.Net Assembly)์ด๋ผ๋ ์ธ์ด๋ก ๋ณ๊ฒฝํ ๋ค Mono Framework์์ ๋๋ฆฌ๋ ๊ฒ์ด๋ค.
์ด๊ฑธ JIT(Just In Time) ๋ฐฉ์์ด๋ผ๊ณ ๋ถ๋ฆ. ๊ทธ๋ ๊ทธ๋ ์ปดํ์ผ~
IL์ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ธฐ๊ณ์ด๋ ์๋ ์ด์ ๋ธ๋ฆฌ์ด๋ ์๋ ์ค๊ฐ์ธ์ด์ด๋ค.
Call By Value(struct, int, char, bool, ...)์ Call By Reference(Class, string, array, ...)๋ฅผ ์๋์ผ๋ก ์ ์ฉํด์ค๋ค.
* IL2CPP: IL์ CPP๋ก ๋ณํํด์ฃผ๋ ๊ฒ.
C++๋ก ๋ณํํ๋ฉด Andorid(NDK)/iOS(Object-C) ๋๋ค ๋์๊ฐ ์ ์๋ค.
์ฐธ๊ณ ๋ก Unity ๋ด๋ถ๋ CPP๋ก ๋์ด ์์.
* IL2CPP Code Generation
Faster runtime: ๊ธฐ์กด๋ฐฉ์ ๊ทธ๋๋ก ์น ํ์ด์ผ ํด์ ์ฝ๋๊ฐ ๊ธธ์ด์ง.
Faster(smaller) builds: ํฌ์ธํฐ๋ก ํ๊ฒน ๋ ์ธ์ ์ ํ์ด๋ ๋ผ์ ์ฝ๋๊ฐ ์ค์ด๋ฌ. Runtime ์ฑ๋ฅ์ ์ข ๋จ์ด์ง.
Conversion Time๊ณผ Code Size ๋น๊ตํ ์ฐจํธ
* ์ฐธ๊ณ ์์
https://www.youtube.com/watch?v=-9X965jXrn8
'๐ฎ Unity Study > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity Associate Programmer ์๊ฒฉ์ฆ ์ค๋น] 1๊ฐ. 3D ์๋์ฐจ ์ฅ์ ๋ฌผ ํผํ๊ธฐ ๊ฒ์ ๋ง๋ค๊ธฐ (0) | 2023.05.09 |
---|---|
[Unity] ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ ์์ ๊ด๋ฆฌ (2) | 2023.04.17 |
[Unity] Texture Compression ๋ฐฉ์ (0) | 2023.04.13 |
[Unity] Scriptable Object ์ฌ์ฉ๋ฒ, ์ฅ์ (0) | 2023.04.12 |
[Unity] Editor Programming (0) | 2023.03.28 |