C#中List的元素replace与Clear直接AddRange的性能比较
提出问题:在需求开发过程,每100ms从传感器中读取一个大小为3500个double元素的数组,缓存数据时采用的是方式A:使用先Clear再进行AddRange的方式,随着理解的深入,发现这不是一个好的方式,列表的Clear与AddRange存在较大的内存开销。
解决方案:采用方式B:直接Replace列表中的元素,减少内存开销。通过BenchmarkDotNet的测试两种实现方式的进行性能比较,结果显示新方式较原来有极大改善。
分析原因:方式A存在耗时的内存开销.
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Engines;
using BenchmarkDotNet.Running;
using System;
using System.Text;namespace MyApp // Note: actual namespace depends on the project name.
{public class FooPerf{public double[] TestArray = new double[100];public List<double> list1 = new List<double>();public List<double> list2 = new List<double>(100);[Benchmark]public void ClearListElement() {//TODO:先Clear,再进行AddRangelist1.Clear();list1.AddRange(TestArray);}[Benchmark(Baseline = true)]public void ReplaceListElement(){//TODO: 直接Replace元素for (int i = 0; i < list2.Count; i++){list2[i] = TestArray[i];}}}internal class Program{static void Main(string[] args){var summary = BenchmarkRunner.Run<FooPerf>();}}
}
C#中List的元素replace与Clear直接AddRange的性能比较相关推荐
- 如何不用 List.clear() 方法 就清空 list 中的 所有元素(中兴面试)
import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Lis ...
- 使用Ext Form自动绑定Html中的Form元素
2019独角兽企业重金招聘Python工程师标准>>> Java代码 //把ext 对象绑定在Html Form元素时的ext属性中 Ext.override(Ext.Compo ...
- java arraylist 对象 删除_如何从Java中的ArrayList对象中删除冗余元素?
接口集不允许重复的元素.茶add() 此接口的方法接受元素并添加到Set对象,如果添加成功,则如果您尝试使用此方法添加现有元素,则返回true,添加操作将返回false. 因此,要删除ArrayLis ...
- set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型
点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...
- set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数
三九.什么是set 在前面,我们学习了dict,知道dict的key是不重复的,当我们往dict里添加一个相同key的value时,新的value将会覆盖旧的value. 有的时候,我们只想要 dic ...
- Java 集合中遍历删除元素抛异常的原因,从ArrayList说起
文章目录 使用for删除遗漏元素的原因: 使用foreach删除报错的原因: 其它集合的删除方法 删除集合元素的工具类 ArrayList删除元素的方式. 使用for循环删除.会遗漏删除的元素 使用f ...
- set集合判断集合中是否有无元素_Python基础学习笔记(五)集合与字典
本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...
- C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结
C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以 ...
- python删除元素del 可以删除部分元素吗_可以使用del删除集合中的部分元素。
[判断题]Python集合可以包含相同的元素.(3.0分) [单选题]student = dict(姓名='张三', 年龄=20, 性别='男'),则student.get("name&qu ...
最新文章
- PHP中魔术方法的用法
- 先写API文档还是先写代码?你需要这款神器Apifox!
- idea test包_6.Flinkx如何在idea中运行?
- Endnote教程 : 仅需两步,一键转化参考文献为纯文本
- 【Redis】有序集合的交集与并集
- 那一年,我考入了西北师范大学GIS专业,然而我很迷茫,GISer的职业规划到底是怎样的?
- 【kafka】kafka BindException: Address already in use 一个失误或者愚蠢的问题
- SQL语句实现行转列
- spark-sql配置并优化
- Linux检测内存泄露的脚本
- java备份_手把手教你实现Java权限管理系统 后端篇(十三):系统备份还原
- 易到用车最艰难时刻,未来赌什么?
- js对象常用方法总结
- 4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;
- 【Unity小游戏】打字消除字母
- PHP获取唯一标识UUID
- 2022年湖南省基金从业资格(证券投资基金基础知识)练习题及答案
- 计算机组成原理第七章笔记---输入输出
- Bzoj 3875 骑士游戏
- Unity 鱼的游动
热门文章
- android反编译修改教程,逆向教程之-反编译apk修改菜单默认设置(一)
- android忘记密码找回,安卓手机手势密码忘记怎么办 安卓手机手势密码找回技巧...
- HCIA 证书含金量怎么样?
- c语言编程main,C语言main()函数
- [iOS 代码混要加固转帖]
- java sql 字符串函数_SQLSERVER常见系统函数之字符串函数(一)
- elif在python中啥意思_python中的elif是什么意思
- java面试基础问题答不上来怎么办,快来看鸭~
- 文件上传漏洞小结与Upload-labs 靶场纪实
- 第九讲:工厂管理流程 (生管部)(转载)