Unity/잡학 사전

[Unity] Unity Korea Youtube - IL2CPP, Mono, AOT, JIT 개념 파헤치기

sorry0101 2023. 4. 28. 18:51

mono : .net 프레임워크 대응(리눅스 기반)
- C# 이 .net 프레임워크 기반인데 최종적으로 우리는 안드로이드, 애플에 배포를 해야하기 때문에 mono 프레임워크를 사용해서 변환해서 함.

IL : 중간 언어
- C#에서 IL로 변환되고 mono가 런타임상에서 파싱하면서 돌게 함
- C# -> IL -> mono => JIT (Just it time) 그때 그때 돈다는 말
- Lua, python 을 인터프리터 언어라고 불림
> 생언어를 인터프리터가 실시간 파싱하면서 돌림, 그래서 굉장히 느림
- JIT 방식은 한번 변환된 어셈블리를 가지고 타겟 디바이스에 맞게 컴파일러 하므로 인터프리터보다는 빠름(제일 빠른건 아님)
- mono가 C#을 IL로 바꿔주는 것까지 지원, unity는 IL을 C++ 로 만들어주는 중간 단계를 만듦(이게 IL2cpp)
- 유저코드도 IL2cpp를 통해 cpp로 변환한 다음 다양한 플랫폼에 띄울 수 있는 것임

결론!
C#으로 작성 -> IL로 변환
-> (mono 프레임워크로 띄운다면) mono가 그때그때 파싱해서 사용
(JIT 기반은 미리 컴파일 X, 그때그때 컴파일해서 사용하는 방식)
(그래서 에디터는 mono JIT 방식을 사용, 에디터는 바로바로 사용할 수 있도록)

-> (IL2cpp로 빌드하게 된다면) IL를 cpp 로 읽게 되고 미리 컴파일
(기본적인 AOT 컴파일 방식으로 돌아가게 됨)
(타겟 디바이스는 AOT로 돌아감)

=> 개발할때는 JIT 방식으로 하게 되기 때문에 생산성이 높고
빌드할때는 AOT방식으로 하기 때문에 성능을 잡을 수 있으므로
두마리 토끼를 잡음


참고

https://youtu.be/-9X965jXrn8

 

 

'Unity > 잡학 사전' 카테고리의 다른 글

[Unity/데이터] Platform 별 JSON.parse  (0) 2023.05.24
Serialization  (0) 2023.05.15
[Unity] Text mesh Pro  (0) 2023.04.12
[Unity/데이터] Json  (0) 2023.04.03
[Unity/Animator] RuntimeAnimatorController, AnimatorOverrideController  (1) 2023.02.24