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

相关推荐
爱上电路设计3 小时前
有趣的算法
开发语言·c++·算法
studyForMokey3 小时前
kotlin 函数类型接口lambda写法
android·开发语言·kotlin
2401_858120264 小时前
探索sklearn文本向量化:从词袋到深度学习的转变
开发语言·python·机器学习
He BianGu4 小时前
笔记:TypeDescriptor和反射
c#
与墨学长5 小时前
Rust破界:前端革新与Vite重构的深度透视(中)
开发语言·前端·rust·前端框架·wasm
虫小宝5 小时前
Java中的软件架构重构与升级策略
java·开发语言·重构
CTGU_daffodil5 小时前
matlab 绘制高等数学中的二维函数示例
开发语言·matlab
立秋67896 小时前
使用Python绘制堆积柱形图
开发语言·python
逸群不凡6 小时前
C++|哈希应用->布隆过滤器
开发语言·数据结构·c++·算法·哈希算法
敲代码的小白帆6 小时前
跟着峰哥学java 第四天 商品分类 前后端显示
java·开发语言