- Today
- Total
프로그래밍 농장
[Unity] 유니티 빌드방식 - il2cpp와 mono의 차이점 본문
1. 유니티 엔진 내부는 C++로 짜여있다. 유저 코드 부분만 C#으로 짜여있다. 따라서 유저 코드 부분에서만 C#사용으로 인해 속도가 느리다.
2. IL2CPP로 빌드하면 유저가 쓴 코드도 CPP로 변환된다.
3. C#을 컴파일하면 IL코드가 생성되고, MONO는 IL코드가 다시 여러 플랫폼에서 돌아갈 수 있게 해준다.
4. Mono는 IL코드를 그때그때 컴파일한다. 즉 JIT방식이다.
5. JIT방식은 인터프리터보다는 빠르다. JIT은 인터프리터와 달리 중간 처리된 코드(IL코드)를 컴파일 하기 때문
6. IL2CPP역시 Mono같은 역할을 수행한다. IL코드를 여러 플랫폼에서 돌아갈 수 있게 해주는 것.
7. IL2CPP는 AOT방식이다. 즉, 미리 모든 코드를 컴파일해둔다. 따라서 성능은 JIT보다 좋지만 빌드가 오래 걸린다.
8. 유니티는 에디터에서는 Mono를 사용한다. 빌드를 할 때는 IL2CPP를 사용한다면 생산성과 성능을 잡을 수 있다.
9. C# 코드를 CPP로 변환하는 과정에서 문제가 몇 개 있는데 대표적인 게 Generic Sharing이다.
10. 일반적으로 제네릭을 사용하면 사용한 타입별로 코드를 다 생성하지만, 레퍼런스 타입에 한하여 하나의 공유 코드를 사용하도록 할 수 있는데 이것이 Generic Sharing이다.
11. JIT은 Generic Sharing이 있어도 그때그때 코드를 만들 수 있는 반면에, AOT방식으로 이걸 하려면 모든 코드를 생성해야 해서 코드 사이즈가 확 늘어난다. IL2CPP 변환 과정을 오래 걸리게 하는 주범.
'Unity' 카테고리의 다른 글
[Unity] mono / il2cpp (0) | 2023.11.24 |
---|---|
Unity Compression Method LZ4 ( VS2019.3 ~) (0) | 2023.11.23 |
How To Fix Flipped Normals In Blender & Unity [ Unity ] (0) | 2022.11.17 |
#0_캐릭터 리깅 / 다이나믹 본 / 레이캐스트 클릭이동 [ Unity ] (0) | 2022.11.15 |
Metalic vs Specular [Unity] (0) | 2022.11.14 |