我正在使用C#开发一个游戏,我想知道每帧引用这样的对象的性能:
object1.object2.object3
还是应该在本地保留对object3的引用?是否存在显著的速度差异?
谢谢!
对某人来说重要的东西对其他人来说可能无关紧要。有更多的对象取消引用操作肯定会花费更多,但这可能无关紧要。我假设它是这样的:
进行添加-取消引用操作有两个成本:
- 如果
object2
所在的缓存行不存在,则必须从内存中提取。如果它可能已经存在,则此成本为零 - 只有当我们获得了指向
object3
的指针时,我们才能加载它的缓存行。因此,一系列的去引用操作强制顺序执行,并在一定程度上防止无序执行。OOO执行是现代CPU变得更快的重要原因,尽管时钟速率没有
如果你对这些成本有多大没有直观的了解,你别无选择,只能衡量。
在本地保留对object3的引用肯定会提高性能。