//Test Group 1
{
var watch = Stopwatch.StartNew();
var list = new List<int>();
for (int j = ; j < ; j++)
{
list.Insert(, j);
}
watch.Stop();
Console.WriteLine("Insert First::List::" + watch.ElapsedMilliseconds);
} {
var watch = Stopwatch.StartNew();
var list = new LinkedList<int>();
for (int j = ; j < ; j++)
{
list.AddFirst(j);
}
watch.Stop();
Console.WriteLine("Insert First::LinkedList::" + watch.ElapsedMilliseconds);
} //Test Group 2:
{
var watch = Stopwatch.StartNew();
var list = new List<int>();
for (int j = ; j < ; j++)
{
list.Add(j);
}
watch.Stop();
Console.WriteLine("Append::List::" + watch.ElapsedMilliseconds);
} {
var watch = Stopwatch.StartNew();
var list = new LinkedList<int>();
for (int j = ; j < ; j++)
{
list.AddLast(j);
}
watch.Stop();
Console.WriteLine("Append::LinkedList::" + watch.ElapsedMilliseconds);
} {
var watch = Stopwatch.StartNew();
var queue = new Queue<int>();
for (int j = ; j < ; j++)
{
queue.Enqueue(j);
}
watch.Stop();
Console.WriteLine("Enqueue::Queue::" + watch.ElapsedMilliseconds);
} {
var watch = Stopwatch.StartNew();
var queue = new ConcurrentQueue<int>();
for (int j = ; j < ; j++)
{
queue.Enqueue(j);
}
watch.Stop();
Console.WriteLine("Enqueue::ConcurrentQueue::" + watch.ElapsedMilliseconds);
} //Test Group 3:
{
var list = new List<int>();
for (int j = ; j < ; j++)
{
list.Add(j);
} var watch = Stopwatch.StartNew();
for (int j = ; j < ; j++)
{
var value = list[];
list.RemoveAt();
}
watch.Stop();
Console.WriteLine("RemoveAt(0)::List::" + watch.ElapsedMilliseconds);
} { var list = new LinkedList<int>();
for (int j = ; j < ; j++)
{
list.AddLast(j);
} var watch = Stopwatch.StartNew();
for (int j = ; j < ; j++)
{
var value = list.First.Value;
list.RemoveFirst();
}
watch.Stop();
Console.WriteLine("RemoveFirst::LinkedList::" + watch.ElapsedMilliseconds);
} {
var queue = new Queue<int>();
for (int j = ; j < ; j++)
{
queue.Enqueue(j);
} var watch = Stopwatch.StartNew();
for (int j = ; j < ; j++)
{
var value = queue.Dequeue();
}
watch.Stop();
Console.WriteLine("Dequeue::Queue::" + watch.ElapsedMilliseconds);
} {
var queue = new ConcurrentQueue<int>();
for (int j = ; j < ; j++)
{
queue.Enqueue(j);
} var watch = Stopwatch.StartNew();
for (int j = ; j < ; j++)
{
int value;
queue.TryDequeue(out value);
}
watch.Stop();
Console.WriteLine("TryDequeue::ConcurrentQueue::" + watch.ElapsedMilliseconds);
}

List::Insert First::57328 ms
List::Add::8 ms
List::RemoveAt(0)::56700 ms

LinkedList::AddFirst::34 ms
LinkedList::Append::100 ms
LinkedList::RemoveFirst::16 ms

Queue::Enqueue::15 ms
Queue::Dequeue::10 ms

ConcurrentQueue::Enqueue::138 ms
ConcurrentQueue::TryDequeue::18 ms

Performance Test of List<T>, LinkedList<T>, Queue<T>, ConcurrentQueue<T>的更多相关文章

  1. C# 队列Queue,ConcurrentQueue,BlockingCollection 并发控制lock,Monitor,信号量Semaphore

    什么是队列? 队列Queues,是一种遵循先进先出的原则的集合,在.netCore中微软给我们提供了很多个类,就目前本人所知的有三种,分别是标题提到的:Queue.ConcurrentQueue.Bl ...

  2. LinkedList 实现 Queue

    package cn.com.example; import java.util.LinkedList; /** * Created by Jack on 2017/3/8. */ public cl ...

  3. Java集合详解2:LinkedList和Queue

    今天我们来探索一下HashMap和HashTable机制与比较器的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 ...

  4. LinkedList与Queue

    https://blog.csdn.net/u013087513/article/details/52218725

  5. C#的队列(Queue,ConcurrentQueue)和堆栈(Stack,ConcurrentStack)

    一.Queue 表示对象的先进先出(FIFO)集合,非线程安全 常用方法   Dequeue 入队 Enqueue 出队 Contains 队列中是否存在某元素 Clear 清空队列 封装: /// ...

  6. 计算机程序的思维逻辑 (39) - 剖析LinkedList

    上节我们介绍了ArrayList,ArrayList随机访问效率很高,但插入和删除性能比较低,我们提到了同样实现了List接口的LinkedList,它的特点与ArrayList几乎正好相反,本节我们 ...

  7. java集合类深入分析之Queue篇

    简介 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约.实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现 ...

  8. Java中的队列Queue,优先级队列PriorityQueue

    队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...

  9. 【Java源码分析】LinkedList类

    LinkedList<E> 源码解读 继承AbstractSequentialList<E> 实现List<E>, Deque<E>, Cloneabl ...

随机推荐

  1. C++学习(一)

    一.C++语言语法基础(6)1.从C到C++的过渡(1)2.类和对象(2)剑3.操作符重载(1)4.继承与多态(1)5.异常和I/O流(1)二.数据结构和算法(3)1.基本数据结构,堆栈.队列.链表. ...

  2. w3c 学习html DOM

    什么是DOM? DOM是W3C标准,定义了访问HTML 和 XML文档的标准 W3C 文档对象模型(DOM)是中立于平台和语言接口,它允许程序动态的访问和更新文档的内容.结构和样式. W3C DOM ...

  3. U3D 2D游戏之黑暗纪元 2D游戏基础入门开发全(1)

    第一个U3D 2D游戏的例子,全部自己编写,算是入门用,这里记录一下. 1.首先游戏把层次布置好,这里分为 背景层,游戏层,UI层 背景层 (Background-1):就是单纯的背景显示作用. 游戏 ...

  4. Jquery Table添加行、删除行

    html页面代码 <table id="tblUserInfo"> </table> Js代码 function DealUserInfo(qty){ ) ...

  5. MVC中如何在controller的action中输出JS到页面上

    MVC中如何在controller的action中输出JS到页面上 可以通过Http上下文对象(httpContext)就可以了,在Action中的HttpContext就是这个Action所指向的页 ...

  6. 使用solr搭建你的全文检索

    Solr 是一个可供企业使用的.基于 Lucene 的开箱即用的搜索服务器.对Lucene不熟?那么建议先看看下面两篇文档: 实战Lucene,第 1 部分: 初识 Lucene:http://www ...

  7. css样式 第6节

    程序员语录: 不要太刻意地把写程序这件事和挣钱挂起来,局限了你挣钱的本事 <html> <head> <title>网页样式</title> </ ...

  8. bc

    调试脚本报错bc: command not found 原因是因为这个linux环境里没有安装计算器工具bc 用 apt-get install bc 或者 yum -y install bc 安装后 ...

  9. 在终端里使用 Solarized 配色方案

    在终端里使用 Solarized 配色方案 参考: 1.在 Mac OS X 终端里使用 Solarized 配色方案 2.solarized

  10. hrbust 1328 相等的最小公倍数(数论)

    Description 定义An为1,2,-,n的最小公倍数,例如,A1 = 1,A2 = 2,A3 = 6,A4 = 12,A5 = 60,A6 = 60. 请你判断对于给出的任意整数n,An是否等 ...