본문 바로가기
dev

[Unity] IL2CPP vs Mono

by #### 2022. 9. 1.
반응형

Mono

ECMA에 등록된 .Net Framework의 스펙을 분석하여, 크로스 플랫폼을 지원하도록 만든 프로젝트입니다. Unity에서 채택하기 딱 좋은 시스템이었던 거죠.

 위 그림을 보면, .Net Framework와 동작 방식이 동일합니다. .Net Framework를 크로스 플랫폼을 제공하도록 만든 것이기 때문에 JIT컴파일로 작동합니다.

 

IL2CPP

모바일 플랫폼이 64bit 아키텍처를 지원하면서, 이제는 Mono방식으로만 빌드할 수 없다고 합니다. 엔진에서 소스코드를 실행할 때는 Mono방식으로 진행되며, 빌드 시에는 32bit 아키텍처만 지원합니다. 이제는 .Net또한 크로스 플랫폼을 제공하며 Unity에서도 64bit 아키텍처를 지원하는 Mono 라이선스를 취득할 필요도 없기에 il2cpp이라는 빌드 시스템을 지원합니다.

cpp코드로 바뀜으로써 기존 Mono와는 다르게 JIT컴파일 방식이 아닌 AOT(Ahead-of-Time)컴파일방식으로 진행됩니다. 이는 플랫폼에 맞는 네이티브 바이너리(실행할 소스코드를 미리 빌드)를 제작하고, 이를 실행하는 방식입니다. 그렇기 때문에, JIT컴파일 방식의 Mono에 비하여 빌드 시간이 길고 실행 성능이 더욱 좋습니다.

 

참고

https://blog.unity.com/kr/technology/feature-highlight-il2cpp-runtime-performance-improvements-in-unity-20212

 

기능 하이라이트: Unity 2021.2의 IL2CPP 런타임 성능 개선 | Unity Blog

델리게이트 호출(delegate invocation) 메커니즘은 C#의 강점이지만, CreateDelegate API는 다소 복잡합니다. 델리게이트는 열거나 닫을 수 있으며, 가상 호출이나 인터페이스 호출을 통해 인스턴스 또는

blog.unity.com

 

https://youtu.be/-9X965jXrn8

 

https://velog.io/@minjujuu/Unity-IL2CPP

 

[Unity] IL2CPP가 뭐지

Steam API인 Facepunch.Steamworks를 보다가Unity IL2CPP 를 지원한다고 해서IL2CPP가 뭔지 궁금해 찾아보았다C++로 변환하는 중간 언어Unity에서 개발한 스크립팅 백엔드여러 플랫폼용 프로젝트를 빌드할 때 Mo

velog.io

 

반응형

'dev' 카테고리의 다른 글

[Unity] Batch Breaking Cause  (1) 2022.09.05
[Unity] 게임 수학 - 내적 (Dot Product)  (0) 2022.09.02
[Unity] Dictionary의 Key에 Enum을 사용했을 때의 Boxing 이슈  (0) 2022.08.31
[Unity] UniTask  (0) 2022.08.29
[Unity] GuardLayerImage  (0) 2022.08.29

댓글