C 中泛型效率對比(ArrayList和List)

2021-10-02 11:50:18 字數 1502 閱讀 2098

泛型一般效率比較高,因為它的操作並不是裝箱拆箱,也不涉及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抽象類繼承乙個自...