Let's Girin!

[Unity] 최적화 - System.Diagnostics.Conditional 본문

Unity

[Unity] 최적화 - System.Diagnostics.Conditional

window= 2023. 11. 22. 11:32

1. System.Diagnostics.Conditional ?

System.Diagnostics.Conditional은 조건부 컴파일을 수행할 때 사용되는 Attribute이다. 

주로 디버깅 및 컴파일 시 특정 조건을 제외할 때 유용하게 사용할 수 있는 방법이다. 

 

2. 사용 이유

유니티는 릴리즈 모드(게임 배포에 사용되는 최종 빌드 모드)의 디버그 함수들을 자동으로 삭제시켜 주지 않는다. 

따라서 디버그 함수가 코드 내에 많을 경우 해당 코드에 소비되는 메모리 및 연산 비용이 증가한다. 특히 반복문 내에 불필요하게 계산되는 디버그 함수로 메모리 할당이 늘어나게 된다면 성능에 영향을 미칠 수 있다. 따라서 디버깅에 필요한 검증 로그는 디버깅 중에만 활성화하고 릴리즈 모드에서는 비활성화하여 불필요한 오버헤드를 줄여 성능을 최적화하는 방법으로 코드를 작성하는 것이 좋다. 

 

3. 사용 방법

디버그 함수 위에 Attribute로 특정 조건을 선언한다.

[System.Dianostics.Conditional("Debug")]
public static void Log(Object message)
{
   Debug.Log(message);
}

 

4. 디파인 사용

유니티 내에 자체적으로 제공하는 UNITY_EDITOR를 사용하여 디버그 함수를 작성해도 릴리즈 모드에서는 여전히 코드가 유지된다. 따라서 릴리즈 모드에서 디버그 코드가 실행되지 않게 하려면, #if와 DEBUG 디파인을 사용하여 코드블록을 감싸서 디버그 모드에서만 사용되도록 하는 것이 좋다.  

#if DEBUG
   Debug.Log("message");
#endif

 

5. 결론

디버깅 관련된 코드를 최소화하여 성능 부분을 최적화시키는 것이 좋다. 

반응형

'Unity' 카테고리의 다른 글

[Unity] Photon 연결하기 (2)  (1) 2023.12.08
[Unity] Photon 연결하기 (1)  (1) 2023.12.06
[Unity] 최적화 - Yield return new  (1) 2023.11.02
[Unity] 2D 쉐이더  (0) 2023.10.13
[Unity] 쉐이더와 비주얼 이펙트  (1) 2023.10.12