有一次聽到同事A跟同事B說,這裡不要用List,
用Array效能比較好,因為是直接存取記憶體。
當下覺得有點怪怪的,因為就我所知,
該程式是宣告固定長度的List,那跟宣告為Array不是一樣嗎?
從list.cs的Source code可以看到:
宣告固定長度的List,內部的確是用Array宣告。
正確的說,使用List其實就是在操作Array,
所以資料都是在記憶體上。
照這樣看來,宣告固定長度的List跟宣告Array,
在搜尋效能上,應該是一樣的?
簡單來測試一下:
結果跟我想的不一樣...
使用Array「大量」存取時,執行時間少了一半,
推測是因為List在存取Count跟使用indexer取得元素時,有做了一些檢查,
即使時間複雜度一樣,但step count多了一些,
這樣看來,如果是固定長度還是直接用Array,
會變動元素,當然就是List的強項了。
參考資料:
沒有留言:
張貼留言