検証用スクリプト
using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var count = 1000000; { Debug.logger.logEnabled = false; var startTime = Time.realtimeSinceStartup; for ( int i = 0; i < count; i++ ) { Debug.Log( i ); } var elapsedTime = Time.realtimeSinceStartup - startTime; Debug.logger.logEnabled = true; Debug.Log( elapsedTime ); } { var startTime = Time.realtimeSinceStartup; for ( int i = 0; i < count; i++ ) { Log( i ); } var elapsedTime = Time.realtimeSinceStartup - startTime; Debug.Log( elapsedTime ); } } [System.Diagnostics.Conditional( "DISABLE_RELEASE" )] private void Log( object message ) { Debug.Log( message ); } }
検証結果
項目 | 処理時間 |
---|---|
Debug.logger.logEnabled | 0.13631110 秒 |
System.Diagnostics.Conditional | 0.00304985 秒 |
まとめ
Conditional
属性は引数の評価がスキップされるため logEnabled
プロパティよりも高速
リリース版のアプリでログ出力を無効化する場合は Conditional
属性の方が良い