2013年4月23日 星期二

C# 的多維陣列和不規則陣列

最近在學 C#,發現 C# 的陣列除了一維陣列外,還有多維陣列、不規則陣列這兩種。
多維陣列 (C# 程式設計手冊)
不規則陣列 (C# 程式設計手冊)
看了 MSDN 的 C# 程式設計手冊,

多維陣列:
  • 同一維度下元素的大小都一樣。
不規則陣列:
  • 子元素大小可以不一樣。
  • 子元素也是陣列,所以又稱「陣列中的陣列」。

再來是兩者的宣告、使用方式也不一樣。
不規則陣列初始化時,對一個子元素都要分別 new 一次陣列,感覺較麻煩。
但我又比較喜歡不規則陣列的操作方式和特性。
所以就找了一下「多維陣列」和「不規則陣列」效能的比較。
http://stackoverflow.com/questions/597720/what-is-differences-between-multidimensional-array-and-array-of-arrays-in-c
http://stackoverflow.com/questions/4648914/why-we-have-both-jagged-array-and-multidimentional-array
以上兩篇都提到「不規則陣列」的效能比較好,老實說,跟我猜的不一樣。
後來又找到一篇文章
以嵌套數組(Jagged Array)取代多維數組(Multi-Dimensional Array)
很詳細的說明為什麼 C# 的「不規則陣列」的效能比「多維陣列」好

主要是因為 CLR 最佳化的影響。
所以雖然不規則陣列在一開始要宣告子元素數量較麻煩外,
但比較使用方式和性能,如沒特殊需求,我應該也會選擇用不規則陣列。

沒有留言:

張貼留言