빌드 셋팅하다보면 IL2CPP나 Mono, Burst 등 생소한 용어들이 있어서 유니티 코리아에서 찾아봄
유니티 엔진 자체는 C++
유저 스크립팅만 C#으로 작성
C++은 메모리 관리를 직접하기 때문에 성능이 좋음, 대신 생산성이 떨어짐
C#은 MS닷넷 프레임 워크를 사용하고 메모리 관리를 직접 안함, 대신 생산성이 좋음
C#은 닷넷 프레임워크에서 돌아가는데 MS제품이 아닌데에서는 돌아가지 않음(안드로이드,IOS 이식 불가)
그래서 다른 플랫폼에 가능한건 Mono프레임워크를 사용하기때문
Mono프레임워크는 다른 플랫폼에서도 돌아감(리눅스 기반)
IL(intermediate language) = 중간언어 = 닷넷 어셈블리
C# -> IL -> Mono ->MS가 아닌 다른 플랫폼
이러한 방식을 JIT(Just-in-time)이라고 함(그때그때 컴파일 하는 방식)
IL2CPP라는건 IL을 CPP로 변환 한다는거(C#을 중간언어 IL로 바꾸고, IL을 C++로 바꿈)
C++로 변환이 되면 애플(Object-C를 사용하는데 C++도 돌아가게 되어있음), 안드로이드 호환 가능
이러한 방식은 AOT(Ahead of time 플랫폼에 따라 기계어로 변환)
유니티에서는 2가지 컴파일을 지원
-Mono(JIT방식)
-IL2CPP(AOT방식)
Burst는 컴파일러(유니티에서 사용하기 위해 만들어진 컴파일러)
Burst 컴파일러는 IL2CPP처럼 AOT방식이고 최적화에 이점이 있음
Burst의 이점 중 하나가 SIMD(Single Instruction Multiple Data) - 하나의 연산을 데이터를 여러개 처리
'툴 > 유니티' 카테고리의 다른 글
텍스쳐 압축/최적화 (0) | 2023.01.24 |
---|---|
병목(Bottleneck) 간단 정리 (0) | 2023.01.24 |
빌드 없이 모바일 테스트 [유니티 리모트 / Unity Remote] (0) | 2022.12.22 |
OSC 한글 문자열(string) 전송, 텍스트 인코딩(Unicode,Base64) (0) | 2022.12.03 |
유니티 + 립모션 (Unity + LeapMotion) 연결 및 위치값 받기 (1) | 2022.09.23 |