锯齿状阵列和扁平阵列,表现更好?

时间:2010-10-26 02:10:34

标签: c# arrays

我们都知道锯齿状阵列比多维阵列表现更好,但锯齿状阵列和扁平阵列呢?

我的直觉是他们应该表现相同。这是因为两者都是直接访问,不像多维数组,你必须在到达元素之前进行一些操作。

我是对的吗?

1 个答案:

答案 0 :(得分:4)

最大的区别在于,扁平阵列的好处是您只需要执行单个内存访问即可获取或设置值。在锯齿状阵列中,您需要两次内存访问:一个在外部数组,以及内部数组中的一个。

扁平数组可能也比锯齿状数据表现更好,因为它将以连续的方式分配在内存中。这意味着它可能是参考位置和CPU缓存可能有助于提高性能。在锯齿状数组中,不能保证每个子数组都在内存中附近分配,并且会限制缓存局部性的好处。

在实践中,回答性能问题的唯一方法是尝试两种方式并测量结果。