2

通过网络发送序列化整数时,我想减小消息大小。在下面的部分中 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

4

1 回答 1

1

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

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

链接有 BinaryFormatter 和 protobuf.net 的比较供您参考。

于 2012-03-24T17:09:51.857 回答