如何最小化序列化数据 - 二进制序列化具有巨大的开销

时间:2012-03-24 17:06:55

标签: serialization binary-serialization

我想通过网络发送序列化整数时减小邮件大小。 在下面的部分中,buff.Length是256 - 很高效的开销! 如何将其减少到最小(4个字节+最小开销)?

            int val = RollDice(6);
            // Should 'memoryStream' be allocated each time!
            MemoryStream memoryStream = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(memoryStream, val);
            byte[] buff = memoryStream.GetBuffer();

提前致谢, --- KostaZ

1 个答案:

答案 0 :(得分:1)

看一下protobuf.net ...它是一个非常好的序列化lib(你可以在NuGet上获得它)。另外,理想情况下,您应该在内存流中使用“using”语句。

要回复以下评论,那么最有效的方法取决于您的使用案例。如果您确切地知道需要序列化的内容并且不需要通用序列化程序,那么您可以编写自己的二进制格式化程序,它可能根本没有开销(这里有一些细节custom formatters)。

这个link比较了BinaryFormatter和protobuf.net供您参考。