가든_ 2023. 9. 30. 14:09
IL 코드를 C++로 변경하는 프로그램

Unity는 C#이라 느리다?

  • 아니다.
  • Unity는 외부는 C#으로 이루어져 있지만 내부는 C++로 이루어져 있다.

이유

  • C#은 C++과 반대로 메모리 관리를 자동으로 해줘서 생산성은 높지만
  • C#은 managed memory를 사용해서 GC를 관리하기 때문에 C++보다 성능과 속도가 느릴 수 있다.

원리

  • 프로그래머들은 C#을 사용한 스크립팅을 해서 메모리 관리를 자동으로 하고 생산성을 높힐 수 있다.
  • 유니티 내부에서 C#을 Mono를 통해서 IL(Intermediatee Language)로 바꾸고 IL2CPP를 사용해서 C++로 바꾼다.

주의사항

  • Generic을 사용했을때 주의해야함
  • ProjectSetting의 IL2CPP Compiler Generation 수정을 통해 해결 가능
    • Faster Runtime : 알 수 없는 제너릭 값 타입은 코드 확장, 알 수 있다면 공유 코드 사용 -> 기존 방식
    • Faster (Smaller) Build : 모두 공유 코드 사용 -> 빌드 시간 & 사이즈 감소

참고 자료

https://www.youtube.com/watch?v=-9X965jXrn8