码迷,mamicode.com
首页 > Web开发 > 详细

.NET 集合类型性能分析

时间:2015-06-24 16:07:40      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

集合

Add

Insert

Remove

Item

Sort

Find

List<T>

如果集合重置大小,就是O(1)O(n)

O(n)

O(n)

O(1)

O(n log n),最坏情况O(n^2)

 

Stack<T>

Push(),如果栈必须重置大小,就是O(1)O(n)

n/a

Pop,O(1)

n/a

n/a

n/a

Queue<T>

Enqueue(),如果队列必须重置大小,就是O(1)或者O(n)

n/a

Dequeue,O(1)

n/a

n/a

n/a

HasSet<T>

如果必须重置大小,就是O(1)O(n)

Add() ,O(1)O(n)

O(1)

n/a

n/a

n/a

SortedSet<T>

如果必须重置大小,就是O(1)O(n)

Add() ,O(1)O(n)

O(1)

n/a

n/a

n/a

LinkedList<T>

AddLast(),O(1)

AddAfter(),O(1)

O(1)

n/a

n/a

O(n)

Dictionary<Tkey,Tvalue)

O(1)O(n)

n/a

O(1)

O(1)

n/a

n/a

SortedDictionary<Tkey,Tvalue)

O(log n)

n/a

O(log n)

O(log n)

n/a

n/a

SortedList<Tkey,Tvalue)

无序数据为O(n);如果必须重置大小为O(n),到列表的尾部为O(log n)

n/a

O(n)

读写是O(log n);如果键在列表中,就是O(log n);如果键不在列表中O(n)

n/a

n/a

 

注:

O(1) 表示:无论集合中有多少数据项,这个操作需要的时间不变。

O(n) 表示:对于集合执行一个操作需要的时间在最坏情况时是N,表示随着元素的增加而线性增加。

O(log n)表示:操作需要的时间随着集合中元素的增加而增加,但每个元素需要的增加时间不是线性的,而是成对曲线的。

.NET 集合类型性能分析

标签:

原文地址:http://www.cnblogs.com/hujianping/p/4597658.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!