当前位置: 代码迷 >> C# >> c#中list<T>的性能优化解决方案
  详细解决方案

c#中list<T>的性能优化解决方案

热度:427   发布时间:2016-05-05 05:03:07.0
c#中list<T>的性能优化
小弟最近写了一段代码
用到了c# 的数据结构  list<byte> m_ArchiveData
在测试时发现,向m_ArchiveData中,使用m_ArchiveData.AddRange(value);来添加数据占用了很多时间
我们的需求是这样的
就是需要有个数据结构来存储流式数据,只会往数据的尾部添加数据,在解析的时候,只会从流的头开始,
一次读取数据
不知道是否C#里面有性能更好的方式
是否能直接使用byte[],C#的byte[]数组比较麻烦的地方就是似乎不能延展长度

------解决思路----------------------
List<T> 不是流,根本不按流的方式处理。

MemoryStream 才是流。
------解决思路----------------------
引用:
Quote: 引用:

因为你的操作单位是byte
所以用指针+固定长度的数组自己构造一个队列比较好。


问题是这玩意是c#代码,我该咋用指针呢
如果C#能像C++那样直接操作内存的话就好了


可以使用指针, 使用unsafe 代码
------解决思路----------------------
内存分配很占用资源

建议你一次分配一个足够大的空间作为缓冲区。变长又不是无限长。
------解决思路----------------------
(1)现在的机器,分配个100M的内存都不是个事
(2)缓冲区不同于你文件的大小。不是告诉你了么,用两个指针模拟队列的头尾。一个缓冲区可以放你很多条数据
  相关解决方案