コードをプロファイリングするために Profiler.BeginSample
Profiler.EndSample
が用意されている
Unity - Scripting API: Profiling.Profiler.BeginSample
コードのプロファイリングするには以下のように記述すればいけますが
private void Awake() { Profiler.BeginSample("BeginSample"); // Profiling Code Profiler.EndSample(); }
using で利用できたほうが便利なので、IDisposable
を継承し using で利用できるクラスを作成
public class ProfilingSampleScope : IDisposable { public ProfilingSampleScope(string name) { UnityEngine.Profiling.Profiler.BeginSample(name); } public void Dispose() { UnityEngine.Profiling.Profiler.EndSample(); } }
サンプルコード
using System; using System.Linq; using UnityEngine; public class SampleMonoBehaviour : MonoBehaviour { private void Start() { using (new ProfilingSampleScope("For Loop From Start")) { Enumerable.Range(0, 100); } } private void Update() { using (new ProfilingSampleScope("For Loop From Update")) { for (int i = 0; i < 100000; i++) ; } } }
プロファイリング
Window/Analisys/Profiler
より Profiler Window が開くので
これを開いた状態で実行すると先程のサンプルで指定した名前で検索することで実行時間等を知ることができます
なぜか Update が2回呼ばれていますが、速度やGCなどを見ることができました
起動が遅い等あれば調べてみるとなにか発見があるかもしれません