关注

该如何分析一个特定代码块的性能

问题
  • 不是所有的用户代码都能展示在分析器中显示性能消耗,而且深度分析会将我的应用的拖慢。
原因
 
事实上,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也不用在意。当它们在非开发环境中部署时,这些调用是零开销的。

更多信息
这篇文章有帮助吗?
1 人中有 1 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。