[Unity] Unity Performance Tuning Bible 훑어보기 (15)

ChangBeom·2024년 8월 25일

[제 11 장] Tuning Practice - Player Settings

 이 장에서는 퍼포먼스에 영향을 미치는 Project Settings의 Player 항목에 대해 소개한다.

[11.1 Scripting Backend]

 Unity에서는 Android, Standalone (Windows, macOS, Linux) 등의 플랫폼에서 Scripting Backend를 Mono 또는 IL2CPP 중 하나를 선택할 수 있다. [제 2 장] 기본 지식의 [IL2CPP]에서 설명한 바와 같이 성능 향상을 위해 IL2CPP를 선택하는 것을 권장한다.

 또한, Scripting Backend를 IL2CPP로 변경하면, 일부 플랫폼을 제외하고는 C++ Compiler Configuration을 선택할 수 있게 된다.

 여기서 Debug, Release, Master를 선택할 수 있는데, 각각 빌드 시간과 최적화 정도에 따라 트레이드오프가 있으므로 빌드 목적에 따라 적절히 사용하면 좋다.

[11.1.1 Debug]

 최적화가 이루어지지 않기 때문에 런타임 성능은 좋지 않지만, 다른 설정에 비해 빌드 시간이 가장 짧다.

[Release]

 최적화를 통해 런타임 성능이 향상되고 빌드된 바이너리의 크기가 작아지지만, 빌드 시간은 길어진다.

[11.1.3 Master]

 해당 플랫폼에서 사용할 수 있는 모든 최적화가 활성화된다. 예를 들어, Windows용 빌드에서는 링크 시 코드 생성(LTCG)을 사용하는 등 보다 공격적인 최적화가 이루어진다. 대신 빌드 시간은 Release 설정보다 더 길어진다. Unity는 허용 가능한 경우 제품 버전 빌드 시 Master 설정을 사용하는 것을 권장한다.

[11.2 Strip Engine Code / Managed Stripping Level]

 Strip Engine Code는 Unity의 기능 중 하나이다. Managed Stripping Level은 C#을 컴파일하여 생성되는 CIL 바이트 코드에서 각각 사용되지 않는 코드를 제거함으로써 빌드된 바이너리의 크기를 줄이는 효과를 기대할 수 있다.
 그러나 특정 코드가 사용되었는지 여부의 판단은 정적 분석에 의존하기 때문에 코드에서 직접 참조되지 않는 타입이나 리플렉션으로 동적으로 호출되는 코드가 잘못 제거되는 경우가 있다.
 이 경우 link.xml 파일이나 Preserve 속성을 지정하여 제거되는 것을 방지할 수 있다.

[11.3 Accelerometer Frequency (iOS)]

 iOS 전용 설정으로 가속도 센서의 샘플링 주파수를 변경할 수 있다. 기본값은 60Hz로 설정되어 있으므로 적절한 주파수로 설정하자. 특히 가속도 센서를 사용하지 않는다면 반드시 설정을 비활성화하자.

0개의 댓글