簡體   English   中英

設置“ IList”容量的重要性是什么?

[英]What is the importance of setting `IList` capacity?

在創建時設置列表容量的重要性是什么?

例如,說我肯定知道 ,我的名單將只包含在其整個生命周期n項。

List<T> ,有一個容納您的項目的靜態大小的集合。 一旦達到該集合的容量,則List<T>重新調整其大小,這對性能會產生影響(對您來說可能很重要,也可能不太重要)。

通過設置初始容量,您可以避免執行那些調整大小的操作。

每當列表需要超過其當前容量時,就必須重新分配內存並移動內容,這需要時間和精力。

如果您提前知道列表的大小,則可以避免這種情況。

您會有所提高,因為列表不必增加。 列表的增長是O(n),其中n是當前元素的數量,標准List<>通過將其當前大小加倍來增長。 考慮到所有因素,將元素添加到列表的末尾平均仍然是O(1)操作(這是因為最后要插入n個元素,您平均要在末尾插入n個元素(每個元素都為O(1 )操作)和舊緩沖區與較新緩沖區之間的n個復制操作(每個操作都是O(1)操作),因此每次加法都在溢出O(1)上)

這將稍微提高性能,因為在創建列表時將分配必要的內存,並且在添加更多元素時CLR不必增加列表大小。

請注意,即使您指定列表大小,但如果添加的元素比預期的多,則無論如何都會增加它的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM