久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

『性能』List 和 HashSet 查找性能比較

 印度阿三17 2019-03-30

結(jié)論:

總數(shù) 50000 (5萬): List 檢索 5W次 耗時 23秒, HashSet 檢索 5W次 耗時 0.01秒,。

總數(shù) 5000   (5千): List 檢索 5K次 耗時 0.16秒, HashSet 檢索 5K次 耗時 0.001秒。

總數(shù) 500     (5百): List 檢索 500次 耗時 0.004秒,, HashSet 檢索 500次 耗時 0.000秒。

總數(shù) 50                    : List 檢索 50次  耗時 0.002秒,, HashSet 檢索 500次 耗時 0.000秒,。

集合查找元素,

當(dāng)總數(shù)超過 10 時,       HashSet<T>  的檢索性能 就會比 List<T> 快,。

當(dāng)總數(shù)超過 1000 時,,   List<T> 的檢索性能 會 急速下降。

當(dāng)總數(shù)超過 10000 時,, List<T> 將會以 秒 為單位 的損失性能,。

換言之:無論怎樣的數(shù)據(jù)量, HashSet<T> 的檢索速度 都要比 List<T> 快,。(不存在那種: 多少數(shù)據(jù)量以下,,List 有優(yōu)勢,多少數(shù)據(jù)量以上,,HashSet 有優(yōu)勢

背景:

今天在項目中,,需要用到一個 檢索功能,只需要判斷 指定的關(guān)鍵字 是否存在,。

第一本能就想到了 HashSet<T> 對象,。

但,HashSet<T> 是 .Net 4.0 的東西,,我希望自己的代碼 無限兼容 .Net 2.0 —— 所以想避開這個東西,。

其實,我的關(guān)鍵字 最多不過 20個,,但是檢索次數(shù)比較多 —— 所以,,我就想看一下 List 和 HashSet 查找的 分水嶺 在哪里。

測試代碼:

 1         static void Main(string[] args)
 2         {
 3             List<string> list = new List<string>();
 4             HashSet<string> hash = new HashSet<string>();
 5 
 6             //數(shù)據(jù)準(zhǔn)備
 7             for (int i = 0; i < 5000; i  )
 8             {
 9                 string str = Guid.NewGuid().ToString();
10                 list.Add(str);
11                 hash.Add(str);
12             }
13             Console.WriteLine("數(shù)據(jù)準(zhǔn)備完成");
14 
15 
16             //list 的查找性能
17             DateTime time0 = DateTime.Now;
18             bool result0 = true;
19             foreach (string str in list)
20             {
21                 bool v = list.Contains(str); //list 的查找性能
22                 result0 = result0 && v;
23             }
24             DateTime time1 = DateTime.Now;
25             Console.WriteLine("從 {0} 的 List<string> 中, 判斷數(shù)據(jù)是否存在, 耗時: {1}", list.Count, (time1 - time0).TotalSeconds);
26 
27 
28 
29             //hash 的查找性能
30             DateTime time2 = DateTime.Now;
31             bool result1 = true;
32             foreach (string str in list)
33             {
34                 bool v = hash.Contains(str); //hash 的查找性能
35                 result1 = result1 && v;
36             }
37             DateTime time3 = DateTime.Now;
38             Console.WriteLine("從 {0} 的 HashSet<string> 中, 判斷數(shù)據(jù)是否存在, 耗時: {1}", hash.Count, (time3 - time2).TotalSeconds);
39 
40 
41             Console.ReadKey();
42         }

運行截圖:

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多