본문 바로가기
Unity 끄적임

Unity IL2CPP, JIT, AOT

by Dev_Cat 2024. 5. 5.
728x90
반응형

"최근에 동료가 Mono.JIT 사용이 90% 이상인데 이거 잘못된거 아니에요?" 라는 질문을 받고 대답해주면서 내 스스로 돌아볼겸 글을 남깁니다.

* 정말 간단하게 적어놨으니 중간 중간 더 자세히 알고싶은 용어는 직접 찾아보면서 공부하고 댓글로 저한테도 공유하면서본인걸로 만들어 갑시다!  

 

먼저 간단하게 JIT이 뭔지 AOT가 뭔지 적어보면 다음과 같다. 더 자세한건 조금만 검색해도 나온다.

Just In Time (JIT) Ahead Of Time (AOT)
필요할 때 그때 그때 컴파일 미리 컴파일

 

Unity 엔진 내부는 C++로 짜여있다. 그러나 프로그래머는 C#으로 기능을 구현한다.

어쨋든 우리는 C#으로 코드를 작성하고 하나의 프로그램을 만드는데 이 과정에서 컴파일과 빌드는 필수다.

컴파일, 빌드가 뭔지 정확히 몰라도 하나만 기억하자. 우리가 작성한 코드는 소스 코드고 이를 실행 가능한 프로그램으로 만드는게 목표다.

 

전체 흐름: 소스 코드 -> 컴퓨터가 읽을 수 있는 바이너리 코드 -> (링크 과정) -> 실행 가능한 프로그램 (결과)

이 흐름 속 바이너리 코드로 변환을 컴파일한다. 그리고 프로그램까지 가면 빌드한다고 한다.

 

그럼 결국 우리가 원하는 프로그램을 만들기 위해선 기본적으로 C#을 C++로 변환하기 위해 IL(닷넷 어셈블리)을 만들고 이 IL이 C++로 변환될 수 있게 중간에 도와주는 친구들이 필요한데 이 스크립팅 벡엔드 친구들 종류중 하나가 MONO와 IL2CPP가 있는거다.

 

빌드는 설정에따라 IL2CPP말고 여러종류를 쓸 수 있지만 에디터는 MONO에서 IL을 JIT방식으로 사용하기에 에디터 실행하면 프로파일러에 MONO.JIT이 찍히는거다.

728x90
반응형

'Unity 끄적임' 카테고리의 다른 글

Array와 List 그리고 IList  (0) 2024.07.20
fake null 관련한 이야기  (0) 2024.06.14
코루틴(Coroutine)  (0) 2023.11.20
[게임수학] 내적, 외적 이야기  (0) 2023.11.17
월드 공간과 UI 공간  (0) 2023.10.17