6

在解析(序列化、反序列化)和通过网络发送数据包方面,对二进制和 xml 序列化之间的性能差异有什么好的估计吗?

4

4 回答 4

15

没有。

这在很大程度上取决于 XML 文档本身内部的数据类型。如果您有大量结构化数据,则 XML 的开销会很大。例如,如果您的数据如下所示:

<person>
  <name>Dave</dave>
  <ssn>000-00-0000</ssn>
  <email1>xxxxxx/email1>
</person>
...

如果你有一个看起来像这样的 XML 文档,你将有更多的开销:

<book name="bible">
 In the beginning God created the heavens and the earth. 
 Now the earth was formless and empty ... 
 And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book. He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
</book>

所以这不是一个公平的问题。这在很大程度上取决于您打算发送的数据,以及如何/是否要压缩它。

于 2008-12-27T02:54:25.813 回答
5

和xml序列化最大的区别在于BinaryFormatter可移植性;BinaryFormatter 在版本之间很难保证,所以只适合短期存储或传输。

但是,您可以通过使用定制的二进制序列化来充分利用两者,使其更小更快 - 您甚至不必自己做;-p

protobuf-net是 Google 协议缓冲区二进制序列化规范的 .NET 实现;它比XmlSerializeror更小BinaryFormatter完全可移植(不仅在版本之间 - 您可以在例如 java 等中加载 pb 流),可扩展且快速。它也经过了相当全面的测试,拥有相当多的用户。

大小和速度的完整细分,覆盖XmlSerializer,和 protobuf-net 在这里BinaryFormatterDataContractSerializer

于 2008-12-27T15:41:43.863 回答
0

本能地你会想说二进制更有效,但它实际上取决于被序列化的数据。

查看这篇文章: http: //www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/

于 2008-12-27T03:18:58.900 回答
0

仅仅指出性能并不是您可能想要查看的唯一指标。

  • 施工方便。您是否有几天/几周的时间来构建序列化器/反序列化器例程并对其进行彻底测试,或者是否可以更好地将时间花在功能上。
  • 易于使用数据。客户可以使用预先构建的开源解析器,还是他们需要自己实现一堆(可能有问题的)代码?
  • 易于调试。能够查看传输中的数据是否有助于调试?然后二进制格式将倾向于混淆任何问题。
  • 每种方法的维护成本是多少?

就个人而言,我会使用已发布的 XML 标准和开源解析库,直到通过实际测试证明性能瓶颈。

于 2008-12-27T04:58:47.450 回答