【问题标题】:Efficient way to insert into buffer插入缓冲区的有效方法
【发布时间】:2015-03-07 06:23:19
【问题描述】:

假设我将一个流读入一个缓冲区,并且我想在这个缓冲区中进行多次插入。是否有一些有效的帮助对象我可以调用来帮助解决这个问题。假设我想在位置 100 插入 10 个字节长度,然后在位置 500 插入 20 个字节长度(插入前 10 个字节后现在为 510)。我所追求的是在多次插入时跟踪实际插入的位置(否则我必须通过我已经插入的内容来移动所有地址)。

自己动手会很简单,但我想知道我是否在这里重新发明轮子,而这已经包含在某些 .NET 结构中?

【问题讨论】:

  • 插入通常由List 和类似的结构处理,您尝试过其中一种吗?

标签: c# .net stream buffer


【解决方案1】:

滚动您自己的(或搜索现有库) - 没有什么可以帮助跟踪插入以最大程度地减少复制字节。

使用字节数组和Buffer.BlockCopy 为每个插入配置简单的解决方案,以确保该方法确实不可接受。 (查看Array.Copy vs Buffer.BlockCopy选择您喜欢的复制方法)。

优化代码的一个选项 - 而不是复制保持排序的范围列表(如果范围相交会变得棘手......)并合并一次结果。

【讨论】:

  • 你好,你的最后一段,我想你是在解释我在第一段最后一句中的意思。 Niave 的方法是为每个新插入继续做大副本,而不是批量处理所有插入并按顺序(排序)。我不需要担心相交的范围看起来我将不得不自己滚动,这应该不难,但想确保没有东西已经
猜你喜欢
  • 2021-01-31
  • 2016-04-03
  • 2021-08-19
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 2014-07-27
  • 2014-07-26
相关资源
最近更新 更多