问题
- 不是所有的用户代码都能展示在分析器中显示性能消耗,而且深度分析会将我的应用的拖慢。
原因
事实上,Unity内置的profiler不会分析所有的方法调用。同时,深度分析会导致很大的性能开销,它会明显降低您应用的计算速度,甚至可能根本不执行分析活动(这时候Unity估计已经耗尽内存了)。
解决方案
Profiler Sample是一个很好的解决方案,它是从调用Profiler.BeginSample()开始到调用 Profiler.EndSample()结束的代码块。就像这样:
using UnityEngine;
public class NeedsProfiling : MonoBehaviour {
void Update() {
Profiler.BeginSample("My Sample");
Debug.Log("This code is being profiled");
Profiler.EndSample();
}
}
你需要把它放在你需要分析的代码块前后。Profiler Sample将会为您记录计算时间并且它不需要深度分析就能显示在“性能分析器”窗口中。
如您所见,在Profiler 层级视图中有一个新的条目。
当然,您可以添加任意数量的Profiler Samples。添加了太多的samples也不用在意。当它们在非开发环境中部署时,这些调用是零开销的。
更多信息