精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#集合數據去重的五種方式及其性能對比測試分析

開發 前端
BenchmarkDotNet是一個基于.NET開源、功能全面、易于使用的性能基準測試框架,它為.NET開發者提供了強大的性能評估和優化能力。

前言

今天我們一起來討論一下關于C#集合數據去重的5種方式并且使用BenchmarkDotNet對這5種方式進行性能基準對比測試分析,每種方法都有其特點和適用場景,我們可以根據具體需求和執行效率選擇一種進行使用。

BenchmarkDotNet介紹

BenchmarkDotNet是一個基于.NET開源、功能全面、易于使用的性能基準測試框架,它為.NET開發者提供了強大的性能評估和優化能力。通過自動化測試、多平臺支持、高級統計分析和自定義配置等特性,BenchmarkDotNet幫助開發者更好地理解和優化軟件系統的性能表現。

  • 使用詳細介紹:https://mp.weixin.qq.com/s/6mpHS1OVuIlBgdU71OIIOw

使用HashSet去重

C# 中的 HashSet 是一種集合類型,它確保其中的元素是唯一的,不允許重復值的存在。當你嘗試向 HashSet 中添加一個重復的元素時,HashSet 會忽略重復的值,而不會引發錯誤。這使得 HashSet 成為一個非常方便的數據結構,用于存儲一組唯一的元素,并且在需要時可以高效地進行查找、插入和刪除操作,注意HashSet中的元素是無序的。

/// <summary>
        /// 使用HashSet去重
        /// TODO:HashSet是一個集合類,它的特點是不允許重復元素,可以方便地實現去重功能。
        /// </summary>
        public static void HashSetDuplicate()
        {
            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };
            HashSet<int> uniqueData = new HashSet<int>(dataSource);

            Console.WriteLine(string.Join(", ", uniqueData));
        }

使用循環遍歷去重

/// <summary>
        /// 直接循環遍歷去重
        /// </summary>
        public static void LoopTraversalDuplicate()
        {
            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };
            var uniqueData = new List<int>();
            foreach (var item in dataSource)
            {
                //if (!uniqueData.Any(x => x == item))
                //if (!uniqueData.Exists(x => x == item))
                if (!uniqueData.Contains(item))
                {
                    uniqueData.Add(item);
                }
            }
            Console.WriteLine(string.Join(", ", uniqueData));
        }

使用Linq的Distinct()方法去重

Linq中的Distinct()方法用于從集合中篩選出不重復的元素。Distinct()方法基于元素的相等性來進行篩選,并返回一個包含不重復元素的新序列。底層實現還是使用到了HashSet。

/// <summary>
        /// 使用Linq的Distinct()方法去重
        /// </summary>
        public static void DistinctDuplicate()
        {
            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };
            var uniqueData = dataSource.Distinct().ToList();

            Console.WriteLine(string.Join(", ", uniqueData));
        }

使用Linq的GroupBy()方法去重

GroupBy()方法將原始集合中的元素進行分組,根據指定的鍵或條件進行分組。每個分組都會有一個唯一的鍵,通過將原始集合分組并選擇每個分組中的第一個元素,實現了去重的效果。

/// <summary>
        /// 使用Linq的GroupBy()方法去重
        /// </summary>
        public static void GroupByDuplicate()
        {
            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };

            //GroupBy()方法將原始集合中的元素進行分組,根據指定的鍵或條件進行分組。每個分組都會有一個唯一的鍵,通過將原始集合分組并選擇每個分組中的第一個元素,實現了去重的效果。
            var uniqueData = dataSource.GroupBy(item => item).Select(group => group.First()).ToList();

            Console.WriteLine(string.Join(", ", uniqueData));
        }

使用自定義的比較器和循環遍歷

/// <summary>
        /// 使用自定義的比較器和循環遍歷
        /// </summary>
        public static void CustomEqualityComparerDuplicate()
        {
            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };
            var uniqueData = new List<int>();
            foreach (var item in dataSource)
            {
                if (!uniqueData.Contains(item, new CustomEqualityComparer()))
                {
                    uniqueData.Add(item);
                }
            }
            Console.WriteLine(string.Join(", ", uniqueData));
        }

        /// <summary>
        /// 自定義的比較器
        /// </summary>
        public class CustomEqualityComparer : IEqualityComparer<int>
        {
            public bool Equals(int x, int y)
            {
                return x == y;
            }

            public int GetHashCode(int obj)
            {
                return obj.GetHashCode();
            }
        }

性能基準對比測試分析

接下來我們使用BenchmarkDotNet對這5種集合去重的方式進行性能基準對比測試分析。

測試代碼

using BenchmarkDotNet.Attributes;

namespace BenchmarkDotNetExercise
{
    [MemoryDiagnoser]//記錄內存分配情況
    public class DataSetDeduplicationBenchmark
    {
        private List<int> dataSource;

        public DataSetDeduplicationBenchmark()
        {
            // 生成大量重復數據  
            dataSource = Enumerable.Repeat(Enumerable.Range(1, 100), 10000).SelectMany(x => x).ToList();
        }

        /// <summary>
        /// 使用HashSet去重
        /// TODO:HashSet是一個集合類,它的特點是不允許重復元素,可以方便地實現去重功能。
        /// </summary>
        [Benchmark]
        public void HashSetDuplicate()
        {
            HashSet<int> uniqueData = new HashSet<int>(dataSource);
        }

        /// <summary>
        /// 直接循環遍歷去重
        /// </summary>
        [Benchmark]
        public void LoopTraversalDuplicate()
        {
            var uniqueData = new List<int>();
            foreach (var item in dataSource)
            {
                //if (!uniqueData.Any(x => x == item))
                //if (!uniqueData.Exists(x => x == item))
                if (!uniqueData.Contains(item))
                {
                    uniqueData.Add(item);
                }
            }
        }

        /// <summary>
        /// 使用Linq的Distinct()方法去重
        /// </summary>
        [Benchmark]
        public void DistinctDuplicate()
        {
            var uniqueData = dataSource.Distinct().ToList();
        }

        /// <summary>
        /// 使用Linq的GroupBy()方法去重
        /// </summary>
        [Benchmark]
        public void GroupByDuplicate()
        {
            //GroupBy()方法將原始集合中的元素進行分組,根據指定的鍵或條件進行分組。每個分組都會有一個唯一的鍵,通過將原始集合分組并選擇每個分組中的第一個元素,實現了去重的效果。
            var uniqueData = dataSource.GroupBy(item => item).Select(group => group.First()).ToList();
        }

        /// <summary>
        /// 使用自定義的比較器和循環遍歷
        /// </summary>
        [Benchmark]
        public void CustomEqualityComparerDuplicate()
        {
            var uniqueData = new List<int>();
            foreach (var item in dataSource)
            {
                if (!uniqueData.Contains(item, new CustomEqualityComparer()))
                {
                    uniqueData.Add(item);
                }
            }
        }

        /// <summary>
        /// 自定義的比較器
        /// </summary>
        public class CustomEqualityComparer : IEqualityComparer<int>
        {
            public bool Equals(int x, int y)
            {
                return x == y;
            }

            public int GetHashCode(int obj)
            {
                return obj.GetHashCode();
            }
        }
    }
}

分析生成的報告

圖片圖片

Method

Mean

Error

StdDev

Gen0

Gen1

Gen2

Allocated

HashSetDuplicate

7.043 ms

0.0546 ms

0.0511 ms

343.7500

343.7500

343.7500

18169.63 KB

LoopTraversalDuplicate

7.385 ms

0.0309 ms

0.0274 ms

-

-

-

1.16 KB

DistinctDuplicate

7.034 ms

0.0497 ms

0.0465 ms

343.7500

343.7500

343.7500

18170.1 KB

GroupByDuplicate

12.685 ms

0.1025 ms

0.0958 ms

2265.6250

1781.2500

515.6250

12843.65 KB

CustomEqualityComparerDuplicate

25.608 ms

0.1826 ms

0.1708 ms

3812.5000

-

-

23438.68 KB

說明:

  • Mean: 所有測量值的算術平均值。
  • Error: 99.9% 置信區間的一半。
  • StdDev: 所有測量值的標準差。
  • Gen0: 第 0 代 GC 每 1000 次操作收集一次。
  • Gen1: 第 1 代 GC 每 1000 次操作收集一次。
  • Gen2: 第 2 代 GC 每 1000 次操作收集一次。
  • Allocated: 每次操作分配的內存(僅托管內存,包含所有內容,1KB = 1024B)。
  • 1 ms: 1 毫秒(0.001 秒)。
責任編輯:武曉燕 來源: 追逐時光者
相關推薦

2020-11-08 14:43:25

Python列表去重編程

2024-04-24 11:24:43

C#數據去重

2025-02-13 08:13:29

C#字符串拼接

2024-12-23 07:38:20

2024-12-20 12:10:19

2009-08-18 14:14:45

C#擴展方法性能測試

2019-12-25 09:53:01

虛擬機技術固態硬盤

2025-07-29 04:11:00

SpringJSON數據

2024-06-20 11:52:44

C#占位符代碼

2009-07-24 13:17:43

世紀互聯至強CloudEx

2010-01-16 11:02:12

Ubuntu性能測試

2024-09-13 08:27:00

2016-09-13 16:51:09

JavaScriptJava數據處理

2025-04-16 08:40:00

2018-03-01 15:20:59

iOS開發多線程

2010-03-15 14:01:26

JavaScript

2021-08-25 10:51:53

數據分析大數據首席數據官

2009-09-17 18:56:22

CLR Via C#

2023-10-26 08:28:31

Python數據去重

2018-07-30 09:06:46

大數據Hadoop數據架構
點贊
收藏

51CTO技術棧公眾號

亚洲aaa视频| 欧美 日韩 国产在线观看| 亚洲AV无码久久精品国产一区| 888av在线| 国产乱子轮精品视频| 久久91精品国产91久久跳| 中文视频在线观看| 日本天堂在线观看| 成人黄页毛片网站| 国产成人自拍视频在线观看| 成人手机在线免费视频| 欧美二三四区| 综合在线观看色| 国产极品jizzhd欧美| 91高清免费观看| 欧美一区二区三区久久| 欧美片网站yy| 久久成人免费观看| 在线中文字幕电影| 欧美国产1区2区| 国产不卡视频在线| 免费一级片视频| 免费精品一区二区三区在线观看| 婷婷成人综合网| 国产免费xxx| 国模精品一区二区| 成人av一区二区三区| 国产在线观看一区二区三区 | 国产福利第一页| 久久精品五月| 性色av一区二区三区免费| 九九热视频在线免费观看| 嫩草影视亚洲| 亚洲精品国产美女| 久久久久久久久久影视| 亚洲热av色在线播放| 91国在线观看| 天天夜碰日日摸日日澡性色av| 麻豆视频在线播放| 中文字幕免费一区| 欧美性天天影院| 日韩黄色影片| 99精品视频中文字幕| 成人在线资源网址| 99在线精品视频免费观看20| 美女视频黄 久久| 中文国产亚洲喷潮| 在线视频 日韩| 哺乳一区二区三区中文视频| 宅男在线国产精品| 欧美在线aaa| 国产激情小视频在线| 日本一区二区三区免费乱视频| 久久99欧美| 无码国产伦一区二区三区视频 | av在线网站观看| 欧美韩一区二区| 亚洲激情国产精品| 亚洲一级av无码毛片精品| 国产乱人伦丫前精品视频| 精品少妇一区二区三区日产乱码 | www.国产在线播放| 手机在线免费av| 亚洲一卡二卡三卡四卡五卡| a级黄色小视频| 黄毛片在线观看| 欧美性少妇18aaaa视频| 久久久久久久久久久免费视频| 五月天av在线| 日本二三区不卡| 男女视频在线看| 欧美性生活一级| 91精品国产综合久久久久久| 国产精品久久久久久久99| 在线播放一区二区精品视频| 精品少妇一区二区三区视频免付费| 日本人妻一区二区三区| 欧美日韩一本| 在线观看日韩av| 国产精品老熟女一区二区| 在线观看一区视频| 欧洲亚洲免费在线| 在线免费a视频| 国产大陆a不卡| 91国产视频在线| 日韩综合在线观看| 蜜臀精品一区二区三区在线观看| 91精品视频专区| 丰满少妇一级片| 26uuu精品一区二区在线观看| 91香蕉亚洲精品| 亚洲av永久纯肉无码精品动漫| av一区二区三区在线| 日本一区网站| www视频在线看| 高跟丝袜欧美一区| 中文字幕在线综合| 都市激情亚洲欧美| 伊人青青综合网站| 久久成人国产精品入口| 久久精品91| 亚洲影院污污.| 欧美老女人性开放| 亚洲天堂中文字幕| 日韩免费视频播放| 亚洲精品一区av| 日韩电影免费观看中文字幕| 干b视频在线观看| 欧美激情影院| 色老头一区二区三区| 午夜影院在线看| 精品一区二区三区视频在线观看 | 亚洲亚洲人成综合网络| 女人另类性混交zo| 日韩一区二区三区精品| 亚洲丝袜一区在线| www.99re7.com| 久久精品国产久精国产| 精品久久久久久中文字幕动漫| 免费资源在线观看| 亚洲一本大道在线| 三级av免费看| 欧美国产偷国产精品三区| 97在线日本国产| av在线免费在线观看| 欧美国产精品中文字幕| 国产精品50p| 丁香5月婷婷久久| 欧美成人精品h版在线观看| 免费又黄又爽又猛大片午夜| av爱爱亚洲一区| 日本大片免费看| 黄页网站在线| 4438x亚洲最大成人网| 91成人破解版| 香蕉久久久久久久av网站| av免费观看久久| 三级外国片在线观看视频| 一本久久综合亚洲鲁鲁五月天| 丰满少妇xbxb毛片日本| 欧美日韩福利| 成人在线精品视频| 老司机在线永久免费观看| 欧美无砖专区一中文字| 国产又大又粗又爽的毛片| 久久夜色精品| 日本一区不卡| 成人天堂yy6080亚洲高清| 亚洲欧美制服丝袜| 日韩在线视频不卡| 国产亚洲一区二区三区四区| 日韩精品一区二区三区久久| 亚洲人成网站77777在线观看| 68精品久久久久久欧美 | 国产91精品在线观看| 国产亚洲欧美一区二区| www欧美xxxx| 亚洲第五色综合网| 天天插天天操天天干| 91视视频在线观看入口直接观看www | 亚洲精品成人a在线观看| 久久久久无码精品| 欧美日韩午夜| av免费观看久久| 国产精品偷拍| 日韩麻豆第一页| 999视频在线| 国产精品高清亚洲| 日本高清一区二区视频| 国产综合色产| 另类欧美小说| 日韩国产大片| 欧美激情啊啊啊| 五月激情丁香婷婷| 在线精品视频免费播放| 久久99久久99精品免费看小说| 国内精品伊人久久久久影院对白| 国产精品一色哟哟| 妖精一区二区三区精品视频| 国产色婷婷国产综合在线理论片a| 成人ww免费完整版在线观看| 亚洲成人999| 蜜臀精品一区二区三区| 中文字幕一区二区三区在线播放 | 91嫩草精品| 日本人成精品视频在线| 99国产揄拍国产精品| 亚洲图片欧美色图| www在线观看免费视频| 久久国产精品99久久久久久老狼| 中国女人做爰视频| 亚洲免费成人av在线| 91精品视频一区| 中文不卡1区2区3区| 久久精品视频在线| 凸凹人妻人人澡人人添| 色视频欧美一区二区三区| 在线观看亚洲网站| 国产亚洲污的网站| 亚洲av无码久久精品色欲| 久久看片网站| 国产一级不卡视频| 狠狠色狠狠色综合婷婷tag| 97人人澡人人爽| 韩日一区二区| 中文字幕亚洲综合久久| 男人天堂网在线视频| 在线免费观看成人短视频| 青草草在线视频| 国产欧美精品国产国产专区 | 久久成人av网站| 日本国产在线| 欧美zozozo| 亚洲一区二区影视| 欧美日韩中文在线| 午夜写真片福利电影网| 中文字幕av免费专区久久| 波多野结衣影院| 国产精品66部| 日本中文字幕观看| 久久久久久久高潮| 777av视频| 欧美日韩1区| 一区二区三区四区国产| 国产一区二区三区91| 国产精品视频免费观看| 国产精品国产亚洲精品| 欧美成人激情图片网| 92国产在线视频| 亚洲欧美中文另类| 天堂在线观看视频| 精品久久久三级丝袜| 99在线观看精品视频| 在线电影一区二区三区| 中文字幕欧美人妻精品一区蜜臀| 日韩欧美国产视频| 国产香蕉视频在线| 亚洲成人av一区| 精品在线免费观看视频| 亚洲黄色av一区| 欧美黑人性猛交xxx| 亚洲日本在线a| 香蕉成人在线视频| 国产精品毛片大码女人| 中文字幕黄色网址| 国产三级一区二区三区| www.黄色在线| 亚洲国产精品ⅴa在线观看| 舐め犯し波多野结衣在线观看| 久久毛片高清国产| 亚洲精品乱码久久久久久久久久久久| 91在线观看一区二区| 精品人妻少妇嫩草av无码| 91欧美激情一区二区三区成人| 国产夫妻性爱视频| 久久久久国色av免费看影院| 91视频免费观看网站| 久久久777精品电影网影网 | 欧美电影《睫毛膏》| 一本色道久久综合亚洲二区三区| 久久精品不卡| 国产女人18毛片| 亚洲无线视频| 国产成人无码精品久久久性色| 久久久久中文| 九九热精品在线播放| 国产一区在线不卡| 亚洲最大视频网| 97国产一区二区| 国产伦精品一区二区三区视频女| 中文字幕一区二区三区蜜月| 破处女黄色一级片| 亚洲图片有声小说| 日韩精品成人免费观看视频| 欧美精品一级二级三级| 亚洲大尺度视频| 日韩毛片在线观看| 午夜视频在线免费观看| 欧美黑人国产人伦爽爽爽| 小视频免费在线观看| 国产精品久久久久久久久男| 玖玖玖电影综合影院| 精品国产乱码一区二区三区四区| 国产精品一在线观看| 干日本少妇视频| 亚洲专区在线| 午夜免费福利网站| 久久综合久久综合久久综合| 久久噜噜色综合一区二区| 亚洲国产精品天堂| 中文字幕欧美人妻精品| 精品福利一区二区三区免费视频| 男人天堂网在线观看| 美日韩丰满少妇在线观看| 最近在线中文字幕| 91成人免费看| 精品视频网站| 日韩欧美猛交xxxxx无码| 久久综合婷婷| 亚洲美女精品视频| 国产精品区一区二区三区| 国产第一页在线播放| 欧美午夜宅男影院| 天天爽夜夜爽夜夜爽| 久久精品亚洲热| 欧美电影免费观看网站| 俄罗斯精品一区二区| 第一会所亚洲原创| 国产最新免费视频| 国产精品一区免费在线观看| 国产精品免费无码| 精品久久久久久中文字幕一区奶水 | 久久国产精品亚洲va麻豆| 欧美mv日韩| 无遮挡又爽又刺激的视频 | julia一区二区中文久久94| 精品国产一区二区三区av片| 无码专区aaaaaa免费视频| 国产精品综合二区| 麻豆一区在线观看| 色婷婷综合久色| 五月婷婷开心中文字幕| 欧美激情一区二区三区成人| 精品久久国产一区| 亚洲国产精品一区二区第四页av| 欧美日一区二区| 少妇无码av无码专区在线观看| 国产成人在线视频网站| 国产精品18在线| 欧美视频第二页| 国产小视频福利在线| 中文字幕在线看视频国产欧美| 麻豆mv在线看| 国产一区二区三区色淫影院 | 国产精品嫩草久久久久| av网站中文字幕| 欧美午夜视频网站| 免费在线视频你懂得| 欧美一级bbbbb性bbbb喷潮片| 成人激情自拍| 欧日韩免费视频| 成人av在线一区二区| 免费毛片一区二区三区| 欧美精品一区二区高清在线观看| 午夜伦理在线视频| av一区二区三区在线观看| 欧美涩涩网站| 欧美激情一区二区三区p站| 一区二区三区在线视频免费观看 | 91看片一区| 日韩.欧美.亚洲| 奇米精品一区二区三区在线观看 | 成人在线视频网站| 久久精品亚洲欧美日韩精品中文字幕| 成 人 黄 色 小说网站 s色| 中文字幕一区二区三区在线观看 | 国产在线乱码一区二区三区| 成人免费毛片xxx| 日韩欧美视频在线| av在线网页| 欧美日韩精品不卡| 日本vs亚洲vs韩国一区三区二区| 美国精品一区二区| 欧美一区二区三区在线看| 欧美四级在线| 玛丽玛丽电影原版免费观看1977| 日日嗨av一区二区三区四区| ass极品国模人体欣赏| 91精品欧美福利在线观看| 男人天堂亚洲天堂| 久久久久久久久久码影片| 日韩二区三区四区| 国产极品美女在线| 精品乱码亚洲一区二区不卡| 无遮挡爽大片在线观看视频| 亚洲va韩国va欧美va精四季| 亚洲第一精品影视| 中文字幕无码人妻少妇免费| 欧美在线观看一区二区| 成年人黄视频在线观看| 精品国产一区二区三区麻豆小说 | 激情亚洲一区二区三区四区| 中文字幕第一页在线播放| 中文字幕在线精品| 美女精品久久| 日本www在线播放| 国产精品久久久久一区二区三区共| www.黄色av| 日本高清久久天堂| 1024精品久久久久久久久| 波多野结衣影院| 欧美久久久久中文字幕| 2020国产在线| 亚洲一区二区三区精品在线观看| 成人精品高清在线| 中文字幕精品无码亚| 欧美激情精品久久久久久蜜臀| 精品国产一区二区三区噜噜噜| 久久久久久久久久久影视| 日本精品一区二区三区四区的功能|