C# Queue、List、LinkedList 性能对比

最近需要用到一个先进先出的缓存列队,对比了一下几个可能用的类的性能。。

向添加100w个数据,然后每次弹出100个,输出用时

cs 复制代码
            Queue<int> q = new Queue<int>();
            List<int> l = new List<int>();
            LinkedList<int> ll = new LinkedList<int>();

            var count =  1000 * 1000;
            var t = DateTime.Now;
            for (int i = 0; i < count; i++)
            {
                q.Enqueue(i);
            }
            Console.WriteLine("添加Enqueue用时:" + (DateTime.Now - t).TotalMilliseconds);

            t = DateTime.Now;
            for (int i = 0; i < count; i++)
            {
                l.Add(i);
            }
            Console.WriteLine("添加List用时:" + (DateTime.Now - t).TotalMilliseconds);

            t = DateTime.Now;
            for (int i = 0; i < count; i++)
            {
                ll.AddLast(i);

            }
            Console.WriteLine("添加LinkedList用时:" + (DateTime.Now - t).TotalMilliseconds);


            t = DateTime.Now;
            while (q.Count > 0)
            {
                for (int i = 0; i < 100; i++)
                {
                    q.Dequeue();
                }

            }
            Console.WriteLine("弹出Enqueue用时:" + (DateTime.Now - t).TotalMilliseconds);

            t = DateTime.Now;
            while (l.Count > 0)
            {
                l.RemoveRange(0, 100);
            }
            Console.WriteLine("弹出List用时:" + (DateTime.Now - t).TotalMilliseconds);

            t = DateTime.Now;

            while (ll.Count > 0)
            {
                for (int i = 0; i < 100; i++)
                {
                    ll.RemoveFirst();
                }
            }
            Console.WriteLine("弹出LinkedList用时:" + (DateTime.Now - t).TotalMilliseconds);

输出结果

复制代码
添加Enqueue用时:10.9944
添加List用时:6.9974
添加LinkedList用时:97.7324
弹出Enqueue用时:7.9959
弹出List用时:699.3315
弹出LinkedList用时:8.0135

所以,结果显而易见,应该用 Queue

相关推荐
晨星shine3 天前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
用户298698530143 天前
.NET 文档自动化:Spire.Doc 设置奇偶页页眉/页脚的最佳实践
后端·c#·.net
用户3667462526743 天前
接口文档汇总 - 2.设备状态管理
c#
用户3667462526743 天前
接口文档汇总 - 3.PLC通信管理
c#
Ray Liang4 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf7 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530147 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools8 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的9 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21889 天前
.NET 本地Db数据库-技术方案选型
windows·c#