小弟最近写了一段代码
用到了c# 的数据结构 list<byte> m_ArchiveData
在测试时发现,向m_ArchiveData中,使用m_ArchiveData.AddRange(value);来添加数据占用了很多时间
我们的需求是这样的
就是需要有个数据结构来存储流式数据,只会往数据的尾部添加数据,在解析的时候,只会从流的头开始,
一次读取数据
不知道是否C#里面有性能更好的方式
是否能直接使用byte[],C#的byte[]数组比较麻烦的地方就是似乎不能延展长度
------解决思路----------------------
List<T> 不是流,根本不按流的方式处理。
MemoryStream 才是流。
------解决思路----------------------
可以使用指针, 使用unsafe 代码
------解决思路----------------------
内存分配很占用资源
建议你一次分配一个足够大的空间作为缓冲区。变长又不是无限长。
------解决思路----------------------
(1)现在的机器,分配个100M的内存都不是个事
(2)缓冲区不同于你文件的大小。不是告诉你了么,用两个指针模拟队列的头尾。一个缓冲区可以放你很多条数据