728x90
반응형
개발하면서 평소 궁금하던 것들을 일기장 형식으로 작성한 것입니다.
참고용으로 봐주시고 피드백이 있다면 언제든지 댓글로 부탁드리겠습니다^^
편의상 본문은 평어로 서술합니다 😇
Q. IL2CPP란?
IL를 C++ 로 변환시켜준다는 뜻!
이처럼 C++로 변환되면 aos와 ios와 같은 멀티 플랫폼에서 빌드가 가능해진다!
번외:)
ios의 경우 Obj-C라는 C가 존재한다.
애플 제품은 C가 돌아가기 때문에 Obj-C에서 C의 바인드를 제공해서 애초에 C/C++을 돌릴 수 있다.
aos의 경우 java를 사용하는 것으로 대부분 알고 있을텐데
이는 virtual machine에서 java를 돌리기 때문에 내부는 native하다.
그래서 aos의 경우 NDK(Native Development Kit)를 제공한다!
NDK는 Native 언어로 개발할 수 있는 Kit이라고 보면 된다.
정리하자면, C++로 변환이 되면 NDK를 통하여 android에서 C++을 사용할 수 있다!
때문에 C++로 변환할 수 있으면 굉장히 다양한 플랫폼에서 멀티 플랫폼을 유지하면서 속도도 빠르게 향상시켜줄 수 있다!
IL2CPP 빌드 변환 과정:)
C# -> mono C# Compiler -> IL -> IL2CPP -> C++ -> 멀티 플랫폼
C# Script를
mono C# Compiler를 통하여 IL로 변환 후
IL2CPP를 통하여 C++로 변환해서
다양한 플랫폼에서 좋은 성능으로 사용할 수 있다!
결론적으로 mono로 빌드시 C#코드가 IL을 탑재하게 되면서 실시간 파싱이 일어나면서 플랫폼에 대응하게 된다! (JIT방식, Unity Editor와 동일)
IL2CPP 백엔드로 빌드하면 'C# -> IL -> C++'단계를 거치게 되고 미리 컴파일 하는 방식인 AOT방식을 사용한다!
즉, 에디터는 JIT방식을 사용하고, Target Device(aos, ios)는 AOT방식을 사용한다!
개발중일 때는 JIT방식을 사용해서 생산성을 높이고, 최종 배포할 때는 AOT방식을 사용하여 성능적 이득도 챙길 수 있다!
반응형
'[Unity] > Unity' 카테고리의 다른 글
[Unity] Awake와 Start 차이 (0) | 2022.10.20 |
---|---|
[Unity] FixedUpdate(), Update(), LateUpdate() 차이 (0) | 2022.10.19 |
[Unity] IL2CPP : IL2CPP의 제한사항 (Generic) (1) | 2022.10.19 |
[Unity] - IL2CPP : mono, JIT, IL이란? (0) | 2022.10.18 |
[Unity] - IL2CPP : C#과 C++의 차이 (0) | 2022.10.18 |