.NET 集合类型性能分析
|
集合 |
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 集合类型性能分析的更多相关文章
- 代码与图详解性能之Python集合类型(list tuple dict set generator)
Python内嵌的集合类型有list.tuple.set.dict. 列表list:看似数组,但比数组强大,支持索引.切片.查找.增加等功能. 元组tuple:功能跟list差不多,但一旦生成,长度及 ...
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
概要 前面,我们学完了List的全部内容(ArrayList, LinkedList, Vector, Stack). Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 Ja ...
- Java 集合系列 07 List总结(LinkedList, ArrayList等使用场景和性能分析)
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java集合性能分析-疯狂Java讲义
一.各Set实现类的性能分析 HashSet和TreeSet是Set的两个典型实现.HashSet的性能总是比TreeSet好(特别是最常用的添加.查询元素等操作),因为TreeSet需要额外的红黑树 ...
- 【java基础 17】集合中各实现类的性能分析
大致的再回顾一下java集合框架的基本情况 一.各Set实现类的性能分析 1.1,HashSet用于添加.查询 HashSet和TreeSet是Set的两个典型实现,HashSet的性能总是比Tree ...
- .NET性能优化-你应该为集合类型设置初始大小
前言 计划开一个新的系列,来讲一讲在工作中经常用到的性能优化手段.思路和如何发现性能瓶颈,后续有时间的话应该会整理一系列的博文出来. 今天要谈的一个性能优化的Tips是一个老生常谈的点,但是也是很多人 ...
- 性能分析之-- JAVA Thread Dump 分析综述
性能分析之-- JAVA Thread Dump 分析综述 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工 ...
- 系统级性能分析工具perf的介绍与使用[转]
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
- C#集合类型大揭秘 【转载】
[地址]https://www.cnblogs.com/songwenjie/p/9185790.html 集合是.NET FCL(Framework Class Library)的重要组成部分,我们 ...
随机推荐
- zepto的tap事件的点透问题的几种解决方案
你可能碰到过在页面上创建一个弹出层,弹出层有个关闭的按钮,你点了这个按钮关闭弹出层后,这个按钮正下方的内容也会执行点击事件(或打开链接).这个被定义为这是一个“点透”现象. 以前,我也听到过tap的点 ...
- Hibernate映射一对多双向关联关系及部门关联属性
一对多双向关联关系:(Dept/Emp的案例) 既可以根据在查找部门时根据部门去找该部门下的所有员工,又能在检索员工时获取某个员工所属的部门. 步骤如下: 1.构建实体类(部门实体类加set员工集合) ...
- android-GridView控件的使用
GridView 按行列方式显示多个组件(二维布局界面) 数据源(集合)-适配器(SimpleAdapter)-视图界面(GridView),加载适配器-配置监听器(OnItemClickListen ...
- Hibernate调用存储过程和函数
操作大批量数据或复杂逻辑,考虑到执行效率和代码量的时候,存储过程和函数在数据库中是预编译好的,调用执行效率高 // 调用过程 {call 过程名称(?,?,?)} public static void ...
- Gruntfile.js
module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), clea ...
- find exec 运用
实例1:ls -l命令放在find命令的-exec选项中 : find . -type f -exec ls -l {} \; 实例2:在目录中查找更改时间在n日以前的文件并删除它们: find . ...
- FCM算法
FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小.模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则 ...
- dialog弹层的方式
1 增加一个层<div class="dialogLayer"></div>, 要不就利用伪元素 ::before 2 利用box-shadow: 0 0 ...
- Docker Compose—简化复杂容器应用的利器
Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...
- c# 文件遍历
DirectoryInfo TheFolder=new DirectoryInfo(folderFullName); //遍历文件夹 foreach(DirectoryInfo NextFolder ...