通过第二个对象引用对象还是保留本地副本?

时间:2014-06-14 20:25:55

标签: c# performance reference

我正在使用C#开发一款游戏,并且想知道每帧引用对象的性能如何:

object1.object2.object3

或者我应该在本地保留对object3的引用?有明显的速度差异吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

对某人来说,重要的是对其他人来说可能是微不足道的。拥有更多的对象取消引用操作肯定会花费更多,但这可能无关紧要。我假设它确实:

添加解除引用操作有两个成本:

  1. object2所在的缓存行必须从内存中获取(如果尚未存在)。如果它可能已经存在,则此成本为零。
  2. 如果我们获得了指向它的指针,我们只能加载object3的缓存行。因此,一系列解除引用操作强制顺序执行并防止无序执行(在一定程度上)。尽管时钟速率不高,但OOO执行是现代CPU变得越来越快的一个重要部分。
  3. 如果您不能直观地了解这些成本有多大,那么您别无选择,只能进行衡量。

答案 1 :(得分:0)

在本地保持对object3的引用肯定会提高性能。