【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
最好不要使用List 来装 GameObject 物体,而是Transform ,
----------------------------------------------------------开始测试 Test Begin
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.3 获得Get 10,000个物体GameObject所花时间Time
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考资料:
1.
Unity3D C# List数据类型使用
3.
4.
5.
如果要控制大量的物体,这些物体所花的时间为多少
----------------------------------------------------------准备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.
相关文章推荐
- [Unity&精灵&对象]使用Instantiate,Resource.Load动态生成物体
- 【Unity&精灵】如何通过已知道的坐标获取物体&动态生成墙壁
- [Unity&对象]如何把大量GameObject 物体 快速的放入 一个 GameObject 数组中
- 【Unity&UGUI&Shader】创建材质球Material&代码控制更换物体材质球
- 面向组件编程之Unity 7.怎样脚本控制物体旋转和移动 关键字:画圆&&Translate/transform.Translate,transform.Rotate
- [Unity&接口]建立管理时间速度tiemSpeed的控制脚本
- unity 按下鼠标左键随机生成物体Instantiate
- Unity 3D 控制物体上下左右均匀移动脚本
- 【转载】Unity3D&nbsp;控制物体移…
- Unity之一天一个技术点(十四)---通过鼠标控制镜头绕着某物体旋转
- Unity 编辑模式下自定义快捷控制场景物体的显隐状态
- Unity鼠标自由查看3D物体之控制摄相机Camera
- Unity中根据角度和距离生成物体
- 在执行 COMMIT 和 ROLLBACK 操作时, 等待 "日志文件同步" 事件消耗了大量数据库时间。
- Unity 控制摄像机跟随运动物体
- Unity 碰撞检测,触发检测,方向键控制物体移动
- <Unity>鼠标拖动物体、按下鼠标左键旋转观察物体、鼠标滚轮缩放视野
- unity 控制物体移动和旋转
- Unity 3D 控制物体前后左右均匀移动脚本
- unity 点击鼠标左键控制物体360展示