以下の内容はhttps://baba-s.hatenablog.com/entry/2020/10/15/090000より取得しました。


【Unity】Debug.Log でスタックトレースを非表示にした時の GC Alloc と処理時間の検証

はじめに

f:id:baba_s:20200908111707p:plain

  • Unity では Debug.Log する時にスタックトレースの情報も出力するかどうか設定できる
    • エディタの Project Settings > Player > Other Settings から設定可能
    • エディタ拡張のスクリプトから PlayerSettings.SetStackTraceLogType で設定可能
    • ランタイムのスクリプトから Application.SetStackTraceLogType で設定可能
  • Debug.Log でスタックトレースを表示するかどうかでどのくらい
    GC Alloc や処理時間が変わるか1フレームに1万回 Debug.Log して検証

検証用スクリプト

using UnityEngine;
using UnityEngine.Profiling;

public class Example : MonoBehaviour
{
    public int m_count = 10000;

    private void Update()
    {
        if ( Input.GetKeyDown( KeyCode.Space ) )
        {
            {
                Application.SetStackTraceLogType
                ( 
                    LogType.Log, 
                    StackTraceLogType.ScriptOnly 
                );

                var sampler = CustomSampler.Create( "# スタックトレースあり" );
                sampler.Begin();

                for ( int i = 0; i < m_count; i++ )
                {
                    Debug.Log( "ピカチュウ" );
                }

                sampler.End();
            }
            
            {
                Application.SetStackTraceLogType
                ( 
                    LogType.Log, 
                    StackTraceLogType.None 
                );

                var sampler = CustomSampler.Create( "# スタックトレースなし" );
                sampler.Begin();

                for ( int i = 0; i < m_count; i++ )
                {
                    Debug.Log( "ピカチュウ" );
                }

                sampler.End();
            }
        }
    }
}

検証結果

f:id:baba_s:20200908112502p:plain

項目 GC Alloc 処理時間
スタックトレースあり 40.1 MB 1.14 秒
スタックトレースなし 0.7 MB 0.14 秒



以上の内容はhttps://baba-s.hatenablog.com/entry/2020/10/15/090000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14