Unity3D教程:如何获取某个方法执行的时间

来源:互联网 发布:matlab矩阵求交集 编辑:程序博客网 时间:2024/05/16 10:07
原文链接:http://gad.qq.com/article/detail/7191163

如何获取某个方法执行的时间?考虑到有些场景需要这个功能,但鉴于有些开发者还不会,下面就给大家介绍下获取的方法,一起来看看吧。
  
  想在一帧内获取某个方法的总执行时间,开始想用Time.time减去之前保存的时间。但是发现在一帧内永远返回的是0,多帧的话可以,看来Time.time只会在每一帧赋值更新一次,所以一帧内的就取不到了。
  
  然后查了一下c#有一个Stopwatch的类可以帮我们记录时间,使用起来也挺便利的。
using UnityEngine;using System.Collections;using System.Diagnostics;  public class NewBehaviourScript : MonoBehaviour {      void Start () {             float t = Time.time;        TestMethod();        UnityEngine.Debug.Log(string.Format("total: {0} ms",Time.time - t));              Stopwatch sw = new Stopwatch();        sw.Start();        TestMethod();        sw.Stop();        UnityEngine.Debug.Log(string.Format("total: {0} ms",sw.ElapsedMilliseconds));            Profiler.BeginSample("TestMethod");        TestMethod();        Profiler.EndSample();    }        void TestMethod()    {        for(int i =0; i < 10000000; i++)        {        }    }  }

Stopwatch就可以正确的取到上一个方法所消耗的时间。如果想同时测试多个方法,可以多次调用 sw.Reset(); 然后sw.Stop取ElapsedMilliseconds毫秒数即可。当然也可以用 Profiler.BeginSample 和Profiler.EndSample 但是就是要打开Profiler界面找到那一帧就可以看了。
0 0
原创粉丝点击