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

相关推荐
淡海水5 分钟前
01-03-认知篇-C#内存模型深度解析
unity·c#·游戏引擎·.net·gc
茉莉玫瑰花茶21 分钟前
GO [ 方法 ]
开发语言·后端·golang
狗凯之家源码网1 小时前
微博图床 PHP 系统搭建与实战应用指南
android·开发语言·php
乌暮2 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
2601_962218613 小时前
C语言中三种库的编译和使用方法
开发语言·c++
传奇开心果编程3 小时前
中庸、有容、破执:仓颉编程语言的中华智慧结晶——三重哲学境界思辨
开发语言·华为·开源·软件工程
jimy13 小时前
派生类重写基类虚函数(二):override的作用
开发语言·c++
_upupup3 小时前
异常(C++)
java·开发语言·jvm
霸道流氓气质4 小时前
ComfyUI 图像生成工作流完全指南:从节点编排到Java生产级图像生产实战
java·开发语言·人工智能
ShyanZh4 小时前
【Python3基础】13-Python 常用设计模式
开发语言·python·设计模式