您的位置:首页 > 移动开发 > Unity3D

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

2017-02-18 20:02 651 查看
生成控制大量物体考究

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

----------------------------------------------------------准备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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: