我正在考虑使用UnmanagedMemoryStream而不是 MemoryStream 来处理网络服务器中的传入(可能还有传出?)数据包。我希望实现的是减少对值的复制,如果可能的话,避免复制到堆中(太多)。
例如,对于传入的数据包,可以执行以下操作:
fixed (byte* p = &data) // where data comes from a socket receive
{
using (var stream = new UnmanagedMemoryStream(p, data.Length))
{
// do handling here...
}
}
不过,我不太确定这样做是否有任何实际的好处。任何人都可以就这样做是否有任何价值提供一些反馈,而不是使用良好的旧托管 MemoryStream?
提前致谢。