泛型一般效率比較高,因為它的操作並不是裝箱拆箱,也不涉及object型別轉換。
下面的一段程式主要測試泛型列表list與陣列列表araylist之間的效能對比。這兩種都可以建立列表,且都可以面對不同的資料型別。泛型的資料型別程式設計中指定。arraylist型別為object類,會進行資料的裝箱和拆箱。
using system;
using system.collections.generic;
//使用泛型類必須引用空間
using system.linq;
using system.text;
using system.text.regularexpressions;
using system.threading.tasks;
using system.collections;
using system.diagnostics;
//使用時間計時必須引用此空間
namespace testt
sw.stop()
;//計時停止
timespan ts = sw.elapsed;
//獲取計時的時間,用timespan類,timespan類會將計時的毫秒數字轉換為常見的時分秒毫秒等單位
console.
writeline
("time1 is,,,"
,ts.hours,ts.minutes,ts.seconds,ts.milliseconds/10)
;//輸出時間
arraylist al =
newarraylist()
;//宣告乙個arraylist類
sw.restart()
;//計時器重新開始,並把時間值置位0
for(
int i =
0; i <
10000000
; i++
) sw.
stop()
;//計時停止
timespan ts2 = sw.elapsed;
//獲取時間
console.
writeline
("time2 is,,,"
, ts2.hours, ts2.minutes, ts2.seconds, ts2.milliseconds /10)
;}static
void
main
(string
args)
}}
經過上述的執行後可以發現,採用泛型list定義的列表處理的時間大約為16毫秒。
採用arraylist定義的列表處理的時間大約為1秒34毫秒。顯然arraylist處理的結果比較差。
歸根原因是因為arraylist內部採用的是object型別,所以它能面對各種不同資料型別。但這其中涉及到了裝箱和拆箱,所以效率低。
而list泛型,因為已經確定了資料型別就是int,所以操作過程中就按照int型別來處理,不涉及裝箱和拆箱,所以效率相對較高。
C 與C 對比學習 模板,泛型
我們知道有很多不同的物件型別可能有相同的操作,基本型別如數值型別的都有加減乘除,比大小啊.乙個個從現實中抽象出來的類就更是具體很多共性了.如果是同一類事物可以弄個父類出來就ok,比如動物都具體的某些通用操作就搞個animal基類完事.但如果不是同一類事物,就不容易整個繼承關係出來啊.比如人有身高,可...
C 中泛型類,泛型方法,泛型約束實際應用
所謂泛型,即通過引數化型別來實現在同乙份 上操作多種資料型別。泛型程式設計是一種程式設計正規化,它利用 引數化型別 將型別抽象化,從而實現更為靈活的復用。在定義泛型類時,在對客戶端 能夠在例項化類時,可以用型別引數的型別種類施加限制。在搭建底層框架時,是最常見的程式設計方式。泛型類範例 namesp...
C 中 泛型集合。。。。
為什麼要用泛型集合?在c 2.0之前,主要可以通過兩種方式實現集合 a.使用 arraylist 直接將物件放入arraylist,操作直觀,但由於集合中的項是object型別,因此每次使用都必須進行繁瑣的型別轉換。b.使用自定義集合類 比較常見的做法是從collectionbase抽象類繼承乙個自...