2010-10-26 100 views
4

我们都知道锯齿阵列比多维阵列表现更好,但锯齿阵列和平坦阵列呢?锯齿状阵列和展平阵列,哪个性能更好?

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

我对不对?

回答

4

最大的区别是扁平化数组的优点是您只需执行一次内存访问即可获取或设置一个值。在锯齿形数组中,您需要两次内存访问:一次在外部阵列上,另一次在内部阵列上。

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

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