C 效能簡析 泛型集合的使用

2022-02-11 07:04:36 字數 965 閱讀 4491

泛型實現了一種型別安全的演算法重用,其最直接的應用正是在集合類中的效能與安全的良好體現,因此建議以泛型集合來代替非泛型集合。

下面以 list來說明,針對不同的資料型別(class,string,int)使用非泛型集合與使用泛型集合的程式效能差別。

(由於非泛型集合支援的引數型別為object,因此為了保證可比性,本文以list來代替非泛型集合。)

using system;

using system.collections.generic;

using system.text;

using system.collections;

using system.diagnostics;

namespace test_console

}class perf34

sw.stop();

ms = sw.elapsedmilliseconds;

sw.reset();

sw.start();

for (int i = 0; i < 1000000; i++)

sw.stop();

console.writeline("compare between and :", "object", testobj.gettype());

console.writeline(ms + " : " + sw.elapsedmilliseconds);

console.writeline();}}

class testclass}}

執行結果如下:

由於testclass和string型別均為引用型別,因此,使用非泛型集合不需經過裝箱過程,程式執行差別不大;

而對於int型別,若使用非泛型集合則需要經過裝箱拆箱過程,故使用泛行集合會大大提高執行效率。

泛型簡析 一 泛型是什麼?

泛型,即 不確定的引數型別 使 可應用於多種不同的型別,而不再是僅限於一種確定的型別。泛型使我們可以通過引數確定類要使用的型別。泛型類泛型類的定義需要將型別引數列表放在類名的後面 class classname 例 public class test public void sett t t pub...

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

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

C 集合 泛型集合

非泛型集合的類和介面位於system.collections命名空間。泛型集合的類和介面位於system.collections.generic命名空間。普通集合 arraylist 值 有序不唯一 hashtable key 必須唯一 可為空 不能為null value 可重複 能為空和null ...