2010-10-26 99 views
4

我們都知道鋸齒陣列比多維陣列表現更好,但鋸齒陣列和平坦陣列呢?鋸齒狀陣列和展平陣列,哪個性能更好?

我的直覺是他們應該表現得差不多。這是因爲兩者都是直接訪問,不像多維數組,在你到達元素之前你必須做一些操作。

我對不對?

回答

4

最大的區別是扁平化數組的優點是您只需執行一次內存訪問即可獲取或設置一個值。在鋸齒形數組中,您需要兩次內存訪問:一次在外部陣列上,另一次在內部陣列上。

扁平陣列可能也比鋸齒狀的更好,因爲它將以連續的方式分配在內存中。這意味着參考和CPU緩存的位置可能有助於提高性能。在一個鋸齒狀的數組中,不能保證每個子數組都分配在內存附近,並且會限制緩存局部性的好處。

在實踐中,回答性能問題的唯一方法是嘗試兩種方法並測量結果。