【Unity&IUnity精灵&Unity物体】生成&控制大量物体的时间考究

来源:互联网 发布:淘宝店铺模板装修教程 编辑:程序博客网 时间:2024/04/30 00:59

生成控制大量物体考究

如果要控制大量的物体,这些物体所花的时间为多少


----------------------------------------------------------准备Preparb

根据 参考资料1 获得代码执行时间的函数为

sw.Start();和sw.Stop();之间进行生成物体的函数,就可以获得当前函数代码执行的时间

Stopwatch sw = new Stopwatch();
        sw.Start();
        //TestMethod();
        InitGO(GO_num);
        sw.Stop();
        UnityEngine.Debug.Log(string.Format( "生成物体数量 Init GO num:" + GO_num + "   所花时间total time: {0} ms", sw.ElapsedMilliseconds));

一个是空物体GO,另外一个是单位立体方块TestCube






using UnityEngine;using System.Collections;using System.Diagnostics;public class TestGO : MonoBehaviour {    public GameObject GO;    public int GO_num = 1;    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();        InitGO(GO_num);        sw.Stop();        UnityEngine.Debug.Log(string.Format( "生成物体数量 Init GO num:" + GO_num + "   所花时间total time: {0} ms", sw.ElapsedMilliseconds));        //Profiler.BeginSample("TestMethod");        TestMethod();        //Profiler.EndSample();    }    void InitGO(int num)    {        for (int i=0; i<num ;i++)        {            Instantiate(GO, new Vector3(0, 0, 0), Quaternion.identity);        }    }    void TestMethod()    {        for (int i = 0; i < 10000000; i++)        {        }    }}

最好不要使用List 来装 GameObject 物体,而是Transform ,

----------------------------------------------------------开始测试 Test Begin

1 生成空物体GO所花时间

1.1 获得Get 1个物体GameObject所花时间Time

1.1.1生成 1个 空物体GO所花时间 < 1ms


1.1.2生成 1个物体Cube所花时间< 1ms

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


1.2 获得Get 1,000个物体GameObject所花时间Time

1.2.1生成 1,000 个空物体GO所花时间:5ms


1.2.2生成 1,000 个物体Cube所花时间:16ms


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.3 获得Get 10,000个物体GameObject所花时间Time

1.3.1生成 10,000 个空物体GO所花时间:54ms




1.3.2生成 10,000 个物体Cube所花时间:164ms


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.4 获得Get 100,000 个物体GameObject所花时间Time

1.4.1生成 100,000 个空物体GO所花时间:590ms


1.4.2生成 100,000 个物体Cube所花时间:1916ms




-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



参考资料:

1.

Unity3D研究院之获取某个方法执行的时间

2.

Unity3D C# List数据类型使用

3.

4.

5.

0 0
原创粉丝点击