在解析(序列化,反序列化)和通过网络发送数据包方面是否对二进制和xml序列化之间的性能差异有任何良好的估计?
答案 0 :(得分: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>
所以这不是一个公平的问题。它在很大程度上取决于您打算发送的数据,以及如何/如果您正在压缩它。
答案 1 :(得分:5)
BinaryFormatter
和xml序列化之间的最大区别是可移植性; BinaryFormatter很难在版本之间保证,所以它只适用于短期存储或传输。
但是,您可以充分利用这两者,和通过使用定制的二进制序列化使和更快,并且您甚至不必亲自动手;-p
protobuf-net是Google协议缓冲区二进制序列化规范的.NET实现;它小于XmlSerializer
或BinaryFormatter
,完全可移植(不仅仅是版本之间 - 您可以加载pb流,例如,java等),可扩展,而且快。它也经过了相当全面的测试,拥有相当多的用户。
大小和速度的完整细分,涵盖XmlSerializer
,BinaryFormatter
,DataContractSerializer
和protobuf-net为here。
答案 2 :(得分:0)
本能地,你会想说二进制文件更有效,但它实际上取决于被序列化的数据。
查看此文章:http://www.nablasoft.com/alkampfer/index.php/2008/10/31/binary-versus-xml-serialization-size/
答案 3 :(得分:0)
只是指出性能并不是您可能想要查看的唯一指标。
就个人而言,我会使用已发布的XML标准和开源解析库,直到实际测试证明性能瓶颈为止。