提出问题:在需求开发过程,每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的性能比较相关推荐

  1. 如何不用 List.clear() 方法 就清空 list 中的 所有元素(中兴面试)

    import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Lis ...

  2. 使用Ext Form自动绑定Html中的Form元素

    2019独角兽企业重金招聘Python工程师标准>>> Java代码   //把ext 对象绑定在Html Form元素时的ext属性中 Ext.override(Ext.Compo ...

  3. java arraylist 对象 删除_如何从Java中的ArrayList对象中删除冗余元素?

    接口集不允许重复的元素.茶add() 此接口的方法接受元素并添加到Set对象,如果添加成功,则如果您尝试使用此方法添加现有元素,则返回true,添加操作将返回false. 因此,要删除ArrayLis ...

  4. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...

  5. set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数

    三九.什么是set 在前面,我们学习了dict,知道dict的key是不重复的,当我们往dict里添加一个相同key的value时,新的value将会覆盖旧的value. 有的时候,我们只想要 dic ...

  6. Java 集合中遍历删除元素抛异常的原因,从ArrayList说起

    文章目录 使用for删除遗漏元素的原因: 使用foreach删除报错的原因: 其它集合的删除方法 删除集合元素的工具类 ArrayList删除元素的方式. 使用for循环删除.会遗漏删除的元素 使用f ...

  7. set集合判断集合中是否有无元素_Python基础学习笔记(五)集合与字典

    本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...

  8. C++ 单链表基本操作分析与实现 链表   链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结

    C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以 ...

  9. python删除元素del 可以删除部分元素吗_可以使用del删除集合中的部分元素。

    [判断题]Python集合可以包含相同的元素.(3.0分) [单选题]student = dict(姓名='张三', 年龄=20, 性别='男'),则student.get("name&qu ...

最新文章

  1. PHP中魔术方法的用法
  2. 先写API文档还是先写代码?你需要这款神器Apifox!
  3. idea test包_6.Flinkx如何在idea中运行?
  4. Endnote教程 : 仅需两步,一键转化参考文献为纯文本
  5. 【Redis】有序集合的交集与并集
  6. 那一年,我考入了西北师范大学GIS专业,然而我很迷茫,GISer的职业规划到底是怎样的?
  7. 【kafka】kafka BindException: Address already in use 一个失误或者愚蠢的问题
  8. SQL语句实现行转列
  9. spark-sql配置并优化
  10. Linux检测内存泄露的脚本
  11. java备份_手把手教你实现Java权限管理系统 后端篇(十三):系统备份还原
  12. 易到用车最艰难时刻,未来赌什么?
  13. js对象常用方法总结
  14. 4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;
  15. 【Unity小游戏】打字消除字母
  16. PHP获取唯一标识UUID
  17. 2022年湖南省基金从业资格(证券投资基金基础知识)练习题及答案
  18. 计算机组成原理第七章笔记---输入输出
  19. Bzoj 3875 骑士游戏
  20. Unity 鱼的游动

热门文章

  1. android反编译修改教程,逆向教程之-反编译apk修改菜单默认设置(一)
  2. android忘记密码找回,安卓手机手势密码忘记怎么办 安卓手机手势密码找回技巧...
  3. HCIA 证书含金量怎么样?
  4. c语言编程main,C语言main()函数
  5. [iOS 代码混要加固转帖]
  6. java sql 字符串函数_SQLSERVER常见系统函数之字符串函数(一)
  7. elif在python中啥意思_python中的elif是什么意思
  8. java面试基础问题答不上来怎么办,快来看鸭~
  9. 文件上传漏洞小结与Upload-labs 靶场纪实
  10. 第九讲:工厂管理流程 (生管部)(转载)