//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. Java NIO Socket 非阻塞通信

    相对于非阻塞通信的复杂性,通常客户端并不需要使用非阻塞通信以提高性能,故这里只有服务端使用非阻塞通信方式实现 客户端: package com.test.client; import java.io. ...

  2. 发布GeoServer后预览提示下载wms文件

    这是因为发布的图层有中文所导致的,只需修改tomcat的server.xml文件 <Connector port="8080" protocol="HTTP/1.1 ...

  3. maven主仓库中找不到restlet的解决办法

    解决办法: 修改Pom.xml  增加 <repositories>         <repository>             <id>maven-rest ...

  4. YII中面包屑制作(当前位置:网站首页 >> 会员登陆)

    面包屑制作(当前位置:网站首页 >> 会员登陆) 作用:就是在布局里要显示的信息,但这个信息在不同的页面里显示的内容不一样,例如:网页的title.网页的当前位置等等 1.布局中每个页面t ...

  5. Oracle SQL 基础学习

    oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...

  6. android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地

    http://blog.csdn.net/jason0539/article/details/45602655 应用发生crash之后要查看log,判断问题出在什么地方,可是一旦应用发布出去,就要想办 ...

  7. mysql嵌套查询

    select * from(select t.`name` `name`,count(*) count from company t group by t.`name`) aa where aa.co ...

  8. Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

    Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...

  9. Object-C Dealloc

    上一篇为Object-C Init dealloc方法在一个对象从内存中删除时被调用.通常在这个方法里面释放所有对象里的实例变量 -(void)dealloc { [super dealloc]; [ ...

  10. UVA 10881 Piotr's Ants(等效变换 sort结构体排序)

    Piotr's AntsTime Limit: 2 seconds Piotr likes playing with ants. He has n of them on a horizontal po ...