C#/.NET : UnmanagedMemoryStream for networking?

标签 c# .net memory networking unmanaged-memory

我正在考虑使用 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/

相关文章:

c# - 如何使用 VSTO 2005 SE 通过 C# Excel 加载项创建 Excel 2003 UDF

c# - PayPal SOAP API 响应需要手动解析

.net - 强制关闭应用程序 (.net)

c# - 如何在 Winforms 中将枚举转换为 bool 值以进行数据绑定(bind)?

c++ - shared_ptr-如何忽略第一个引用?

linux - 如何在 *nix 中计算没有共享库的进程内存?

c# - 如果在 Page.Load 中动态添加,则 UserControl 不会出现在页面上

javascript - 将索引列添加到数据表

c# - 处理 WCF 服务应用程序上的数据库更改

Java 字符与字符 : what about memory usage?