我正在使用C#开发一款游戏,并且想知道每帧引用对象的性能如何:
object1.object2.object3
或者我应该在本地保留对object3的引用?有明显的速度差异吗?
谢谢!
答案 0 :(得分:1)
对某人来说,重要的是对其他人来说可能是微不足道的。拥有更多的对象取消引用操作肯定会花费更多,但这可能无关紧要。我假设它确实:
添加解除引用操作有两个成本:
object2
所在的缓存行必须从内存中获取(如果尚未存在)。如果它可能已经存在,则此成本为零。object3
的缓存行。因此,一系列解除引用操作强制顺序执行并防止无序执行(在一定程度上)。尽管时钟速率不高,但OOO执行是现代CPU变得越来越快的一个重要部分。如果您不能直观地了解这些成本有多大,那么您别无选择,只能进行衡量。
答案 1 :(得分:0)
在本地保持对object3的引用肯定会提高性能。