長度動態增加的集合類,例如 arraylist、queue等,無需在初始化時指定其容量,集合本身能夠根據需求自動增加集合大小,為程式設計帶來方便。然而,過分依賴這種特性對程式的效能提高並非好的選擇,因為集合動態增加的過程是乙個記憶體重新分配和集合元素複製的過程,會對效能造成一定的影響,所以有必要在集合初始化時指定乙個適當的容量。
下面分三種情況來測試指定集合容量對程式效能的影響。
(感謝zhenway的意見,下面是本人修改後的測試碼)
修改後的**
1執行結果如下:using
system;
2using
system.collections.generic;
3using
system.text;
4using
system.collections;
5using
system.diagnostics;67
namespace
test_console827
}2829sw.stop();
30console.writeline(sw.elapsedmilliseconds +"
毫秒");31
sw.reset();
3233
//情況二:初始化時為集合物件指定合適的大小................
3435
sw.start();
3637
for(
inti =0
; i
<
10000
; i++)38
45}4647
sw.stop();
48console.writeline(sw.elapsedmilliseconds +"
毫秒");49
sw.reset();
5051
//情況三:初始化時為集合物件指定容量,容量不足時需重新分配
5253
sw.start();
5455
for(
inti =0
; i
<
10000
; i++)56
63}6465
sw.stop();
66console.writeline(sw.elapsedmilliseconds +"
毫秒");67}68
}69}
由以上執行結果不難發現:
1. 指定乙個適當的容量對效能提高來說是最好的選擇;
2. 在不容易確定集合的容量時,如果設定的容量太小,反而對程式的執行效率產生負面影響。
C 效能簡析 泛型集合的使用
泛型實現了一種型別安全的演算法重用,其最直接的應用正是在集合類中的效能與安全的良好體現,因此建議以泛型集合來代替非泛型集合。下面以 list來說明,針對不同的資料型別 class,string,int 使用非泛型集合與使用泛型集合的程式效能差別。由於非泛型集合支援的引數型別為object,因此為了保...
集合的初始容量與效能
沒事隨便寫寫 你知道當你寫下下面這兩句時這些資料結構的實際長度嗎?arraylist list new arraylist hashtable table new hastable 你知道初始容量對今後的操作有什麼效能上的影響嗎?如果你不知道,讓我來告訴你,因為我研究過了。arraylist與lis...
python 中基本運算的效能簡析
運算的效能分析有乙個高深的詞彙 演算法分析,主要研究的是執行時間和空間的需求。對計算時間的描述一般通過增長量級,增長量級是一套函式,其漸進增長行為是等價的,用大o來表示。o 1 o logb n o n o n logb n o n o n2 3 n 對數演算法中的基數並不重要,指數演算法只適用於小...