Performance Test of List<T>, LinkedList<T>, Queue<T>, ConcurrentQueue<T>
//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>的更多相关文章
- C# 队列Queue,ConcurrentQueue,BlockingCollection 并发控制lock,Monitor,信号量Semaphore
什么是队列? 队列Queues,是一种遵循先进先出的原则的集合,在.netCore中微软给我们提供了很多个类,就目前本人所知的有三种,分别是标题提到的:Queue.ConcurrentQueue.Bl ...
- LinkedList 实现 Queue
package cn.com.example; import java.util.LinkedList; /** * Created by Jack on 2017/3/8. */ public cl ...
- Java集合详解2:LinkedList和Queue
今天我们来探索一下HashMap和HashTable机制与比较器的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 ...
- LinkedList与Queue
https://blog.csdn.net/u013087513/article/details/52218725
- C#的队列(Queue,ConcurrentQueue)和堆栈(Stack,ConcurrentStack)
一.Queue 表示对象的先进先出(FIFO)集合,非线程安全 常用方法 Dequeue 入队 Enqueue 出队 Contains 队列中是否存在某元素 Clear 清空队列 封装: /// ...
- 计算机程序的思维逻辑 (39) - 剖析LinkedList
上节我们介绍了ArrayList,ArrayList随机访问效率很高,但插入和删除性能比较低,我们提到了同样实现了List接口的LinkedList,它的特点与ArrayList几乎正好相反,本节我们 ...
- java集合类深入分析之Queue篇
简介 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约.实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现 ...
- Java中的队列Queue,优先级队列PriorityQueue
队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...
- 【Java源码分析】LinkedList类
LinkedList<E> 源码解读 继承AbstractSequentialList<E> 实现List<E>, Deque<E>, Cloneabl ...
随机推荐
- Java NIO Socket 非阻塞通信
相对于非阻塞通信的复杂性,通常客户端并不需要使用非阻塞通信以提高性能,故这里只有服务端使用非阻塞通信方式实现 客户端: package com.test.client; import java.io. ...
- 发布GeoServer后预览提示下载wms文件
这是因为发布的图层有中文所导致的,只需修改tomcat的server.xml文件 <Connector port="8080" protocol="HTTP/1.1 ...
- maven主仓库中找不到restlet的解决办法
解决办法: 修改Pom.xml 增加 <repositories> <repository> <id>maven-rest ...
- YII中面包屑制作(当前位置:网站首页 >> 会员登陆)
面包屑制作(当前位置:网站首页 >> 会员登陆) 作用:就是在布局里要显示的信息,但这个信息在不同的页面里显示的内容不一样,例如:网页的title.网页的当前位置等等 1.布局中每个页面t ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地
http://blog.csdn.net/jason0539/article/details/45602655 应用发生crash之后要查看log,判断问题出在什么地方,可是一旦应用发布出去,就要想办 ...
- mysql嵌套查询
select * from(select t.`name` `name`,count(*) count from company t group by t.`name`) aa where aa.co ...
- Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法
Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在Grid ...
- Object-C Dealloc
上一篇为Object-C Init dealloc方法在一个对象从内存中删除时被调用.通常在这个方法里面释放所有对象里的实例变量 -(void)dealloc { [super dealloc]; [ ...
- 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 ...