集合的初始容量與效能

2022-02-07 15:15:54 字數 590 閱讀 2437

沒事隨便寫寫 :)

你知道當你寫下下面這兩句時這些資料結構的實際長度嗎?

arraylist list 

=new

arraylist();

hashtable table 

=new

hastable();

你知道初始容量對今後的操作有什麼效能上的影響嗎?如果你不知道,讓我來告訴你,因為我研究過了。

arraylist與list

也就是說,容量越大,需要resize的次數越少,效能也就越高,占用的空間也相對的大。建議你用平均資料量來設定初始容量。所謂平均資料量指在一次一般性操作中會有多少資料插入進list。

hashtable與dictionary

同樣,容量越大,需要resize的次數越小,效能也就越高,占用的空間也相對的大。像hashtable與dictionary這種map型的資料結構與list這種結構不同,resize需要做的事情比較多,也就是效能消耗要比list的高,所以初始容量通常設的大一點會比較好。

dictionary因為在處理collision上要比hashtable的高明,所以在檢索效能上要比hashtable高,建議在.net 2.0下使用。

C 效能簡析 集合容量的指定

長度動態增加的集合類,例如 arraylist queue等,無需在初始化時指定其容量,集合本身能夠根據需求自動增加集合大小,為程式設計帶來方便。然而,過分依賴這種特性對程式的效能提高並非好的選擇,因為集合動態增加的過程是乙個記憶體重新分配和集合元素複製的過程,會對效能造成一定的影響,所以有必要在集...

集合的預設初始容量 載入因子 擴容增量

集合的初始容量很簡單,集合在建立時有乙個預設的大小。當程式集合的初始容量不夠使用時,就需要去擴容。擴容就是增加容量。而載入因子是雜湊表在其容量自動增加之前可以達到多滿的一種尺度。什麼意思呢?當集合的條目數超出了載入因子與當前容量的乘積時,通過呼叫 rehash 方法將容量翻倍。比如,將初始容量設定為...

集合的預設初始容量 載入因子 擴容增量

常用集合的預設初始容量和擴容的原因 當底層實現涉及到擴容時,容器或重新分配一段更大的連續記憶體 如果是離散分配則不需要重新分配,離散分配都是插入新元素時動態分配記憶體 要將容器原來的資料全部複製到新的記憶體上,這無疑使效率大大降低。載入因子的係數小於等於1,意指 即當 元素個數 超過 容量長度 載入...