Dan*_*dor 14
考虑序列化double,例如:
二进制序列化:从内存地址写入8个字节到流
二进制反序列化:读取相同的8个字节
xml序列化:编写标记,转换为文本,编写结束标记 - 几乎三倍的I/O和1000倍的CPU利用率
xml反序列化:标记读取/验证,读取字符串将其解析为数字,读取/验证结束标记.I/O的开销稍微增加,而CPU的开销则更多
实际上,就像所有事情一样 - 它取决于数据和序列化器.
通常(虽然可能是不明智的)人们的意思BinaryFormatter
是"二元",但这有许多不足之处:
相反,xml通常具有以下开销:
当然,xml很容易压缩,增加了CPU但却大大减少了带宽.
但这并不意味着一个人更快; 我会从这里向您推荐一些示例统计数据(包括完整源代码),我已经注释了序列化程序库(二进制文件,xml,文本等).特别注意前两个结果; 它看起来像是在XmlSerializer
压倒BinaryFormatter
每一个价值,同时保留了跨平台的优势.当然,protobuf然后胜过XmlSerializer
; p
这些数字与ServiceStack的基准测试非常吻合.
BinaryFormatter *** binary
Length: 1314
Serialize: 6746
Deserialize: 6268
XmlSerializer *** xml
Length: 1049
Serialize: 3282
Deserialize: 5132
DataContractSerializer *** xml
Length: 911
Serialize: 1411
Deserialize: 4380
NetDataContractSerializer *** binary
Length: 1139
Serialize: 2014
Deserialize: 5645
JavaScriptSerializer *** text (json)
Length: 528
Serialize: 12050
Deserialize: 30558
(protobuf-net v2) *** binary
Length: 112
Serialize: 217
Deserialize: 250
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5468 次 |
最近记录: |