高效的C#字节队列,用于解析二进制消息包的字节流

Pre*_*mbo 11 c# queue buffer data-structures

我试图替换我通常实现的循环缓冲区+.队列的功能是缓冲传入的字节(例如,来自串行端口或一些其他数据流),而解析器检查队列中的字节并检测和提取消息包.

标准:

  • 可以成长(即不固定大小)
  • = 1个字节可以一次排队

  • = 1个字节可以一次出列

  • 高效

我很想去使用它

System.Collections.Generic.Queue<byte>
Run Code Online (Sandbox Code Playgroud)

...但我不确定这是否是最有效的类型.有什么建议?

有没有更明智的方法来做我想做的事情?(例如,这里有趣的建议)

感谢您的建议和意见.

Prembo.

Dre*_*kes 2

Queue<byte>由 a 支持byte[],但如果使用Array.Copy而不是通过 Enqueue/Dequeue 方法循环复制到底层缓冲区或从底层缓冲区复制,您会看到更好的性能。因此,就个人而言,如果Queue<byte>不能提供您想要的性能,那么您可以实现自己的队列类,该类提供 QueueMultiple 和 DequeueMultiple 方法。