我正在考虑使用 UnmanagedMemoryStream而不是 MemoryStream 用于处理网络服务器中的传入(也许是传出?)数据包。我希望实现的是减少值的复制,如果可能的话,避免复制到堆中(太多)。
例如,对于传入的数据包,可以这样做:
fixed (byte* p = &data) // where data comes from a socket receive
{
using (var stream = new UnmanagedMemoryStream(p, data.Length))
{
// do handling here...
}
}
不过,我不太确定这样做是否有任何实际好处。任何人都可以就这样做是否有任何值(value)而不是使用良好的旧托管 MemoryStream 提供一些反馈吗?
提前致谢。
最佳答案
这对我来说听起来像是过早的优化。您是否使用过 MemoryStream 并进行了一些分析以表明它给您带来了有形的、可衡量的性能问题?
我会坚持使用传统的 MemoryStream 并避免让自己头疼,直到(通过分析)变得明显有必要进行更改。
关于C#/.NET : UnmanagedMemoryStream for networking?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3978349/