【问题标题】:GameObject.name vs new GameObject(name)GameObject.name 与新的 GameObject(name)
【发布时间】:2020-02-17 00:27:19
【问题描述】:

使用

有没有区别性能方面

示例 1

var myObject = new GameObject();
myObject.name = "myObjectName";

示例 2

var myObject = new GameObject("myObjectName");

this 等一些文章建议避免使用示例 1,因为调用的是原生代码,会损害性能。

出于好奇,我检查了GameObject 类的the documentation,并没有说明任何构造函数可能如何影响性能。

我目前的理论是,示例 2 类似于 instantiating an object and immediately specifying a parent,因为这应该比实例化对象并稍后指定父对象更好。

【问题讨论】:

  • 可能值得只测试每一个,看看一个是否比另一个表现更好
  • 我看了统一源码,example1和example2也叫native code。所以也许你可以写一些测试来检查它?
  • 第一个例子需要更多的属性访问,所以可能第二个更快。但老实说,除非您对 10.000 个对象执行此操作,否则我认为这并不重要,与实例化本身所需的时间相比,设置名称的影响应该很小。
  • 纯粹出于好奇,您这样做了多少次才如此关心性能?
  • 一次可能有 100 个左右的电话。它有助于识别场景中的对象,但这仅在编辑器中有用,我发现我并没有真正依赖它太多。许多其他事情同时发生,因此我可以消除的开销越多越好。我也在低端移动设备上测试!

标签: c# unity3d gameobject


【解决方案1】:

我已经回答了我自己的问题。

第二个示例运行速度快 0.41 毫秒,但分配的内存量与第一个相同。

【讨论】:

  • 你能打电话100次吗?因为时间太有限了。
猜你喜欢
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多