测试代码Zonciu/SerializationTest.cs

源自neuecc/ZeroFormatterBenchmark.cs

NuGet包及其版本

mgravell/protobuf-net 2.3.2(非官方实现,官方无.NET实现)
msgpack/msgpack-cli 1.0.0-beta2(官方实现)
neuecc/MessagePack 1.7.2(非官方实现)
JamesNK/Newtonsoft.Json 10.0.3

兼容性

protobuf-net

  • 不支持无Contract Attribute的模型
  • 自带Attribute
  • 支持System.Runtime.Serialization Attribute

MsgPack-Cli

  • 支持无Contract Attribute的模型
  • 自带Attribute
  • 支持System.Runtime.Serialization Attribute

MessagePack

  • 支持无Contract Attribute的模型
  • 自带Attribute
  • 支持System.Runtime.Serialization Attribute

Newtonsoft.Json

  • 支持无Contract Attribute的模型
  • 自带Attribute
  • 支持System.Runtime.Serialization Attribute

测试结果

mgravell/protobuf-net
Serialize 4.195 ms
Deserialize 10.0423 ms
ReSerialize 4.1817 ms
Size of Binary 36.00 B
mgravell/protobuf-net
Serialize 4.172 ms
Deserialize 10.0139 ms
ReSerialize 4.1776 ms
Size of Binary 36.00 B
mgravell/protobuf-net
Serialize 4.4121 ms
Deserialize 10.2684 ms
ReSerialize 4.2439 ms
Size of Binary 36.00 B Official MsgPack-Cli
Serialize 6.9675 ms
Deserialize 14.4727 ms
ReSerialize 6.7491 ms
Size of Binary 36.00 B
Official MsgPack-Cli
Serialize 6.7087 ms
Deserialize 14.4588 ms
ReSerialize 6.9524 ms
Size of Binary 36.00 B
Official MsgPack-Cli
Serialize 6.7676 ms
Deserialize 14.5932 ms
ReSerialize 6.9552 ms
Size of Binary 36.00 B neuecc/MessagePack-CSharp
Serialize 3.703 ms
Deserialize 4.3366 ms
ReSerialize 3.6741 ms
Size of Binary 32.00 B
neuecc/MessagePack-CSharp
Serialize 3.7056 ms
Deserialize 4.6376 ms
ReSerialize 3.6672 ms
Size of Binary 32.00 B
neuecc/MessagePack-CSharp
Serialize 3.6871 ms
Deserialize 4.2972 ms
ReSerialize 3.6756 ms
Size of Binary 32.00 B Newtonsoft.Json
Serialize 17.5037 ms
Deserialize 33.8181 ms
ReSerialize 21.2306 ms
Size of Binary 90.00 B
Newtonsoft.Json
Serialize 18.4885 ms
Deserialize 35.5003 ms
ReSerialize 17.4223 ms
Size of Binary 90.00 B
Newtonsoft.Json
Serialize 18.1058 ms
Deserialize 32.0834 ms
ReSerialize 23.5259 ms
Size of Binary 90.00 B mgravell/protobuf-net
Serialize 6546.5884 ms
Deserialize 11488.7313 ms
ReSerialize 6709.2795 ms
Size of Binary 37.11 KB
mgravell/protobuf-net
Serialize 6564.3259 ms
Deserialize 11431.9974 ms
ReSerialize 6679.0116 ms
Size of Binary 37.11 KB
mgravell/protobuf-net
Serialize 6561.8096 ms
Deserialize 11476.1318 ms
ReSerialize 6668.9106 ms
Size of Binary 37.11 KB Official MsgPack-Cli
Serialize 5617.6389 ms
Deserialize 14581.9512 ms
ReSerialize 5578.6621 ms
Size of Binary 38.82 KB
Official MsgPack-Cli
Serialize 5590.4476 ms
Deserialize 14763.014 ms
ReSerialize 5533.6327 ms
Size of Binary 38.82 KB
Official MsgPack-Cli
Serialize 5607.3836 ms
Deserialize 14615.2356 ms
ReSerialize 5585.7651 ms
Size of Binary 38.82 KB neuecc/MessagePack-CSharp
Serialize 3065.3312 ms
Deserialize 4371.5859 ms
ReSerialize 3062.9087 ms
Size of Binary 32.83 KB
neuecc/MessagePack-CSharp
Serialize 3116.9423 ms
Deserialize 4392.1279 ms
ReSerialize 3061.0422 ms
Size of Binary 32.83 KB
neuecc/MessagePack-CSharp
Serialize 3080.5855 ms
Deserialize 4385.2026 ms
ReSerialize 3054.3972 ms
Size of Binary 32.83 KB Newtonsoft.Json
Serialize 13303.1545 ms
Deserialize 24219.7497 ms
ReSerialize 13346.126 ms
Size of Binary 86.81 KB
Newtonsoft.Json
Serialize 13362.7296 ms
Deserialize 24238.1881 ms
ReSerialize 13332.8785 ms
Size of Binary 86.81 KB
Newtonsoft.Json
Serialize 13399.7856 ms
Deserialize 24197.9922 ms
ReSerialize 13325.7399 ms
Size of Binary 86.81 KB neuecc/MessagePack-CSharp without Attribute
Serialize 3.9342 ms
Deserialize 4.9817 ms
ReSerialize 3.9434 ms
Size of Binary 65.00 B
neuecc/MessagePack-CSharp without Attribute
Serialize 3.9854 ms
Deserialize 4.9978 ms
ReSerialize 3.9498 ms
Size of Binary 65.00 B
neuecc/MessagePack-CSharp without Attribute
Serialize 3.9393 ms
Deserialize 5.1384 ms
ReSerialize 3.9293 ms
Size of Binary 65.00 B neuecc/MessagePack-CSharp without Attribute
Serialize 3968.4564 ms
Deserialize 4912.953 ms
ReSerialize 4082.8229 ms
Size of Binary 65.06 KB
neuecc/MessagePack-CSharp without Attribute
Serialize 3967.5422 ms
Deserialize 4912.2183 ms
ReSerialize 4059.2614 ms
Size of Binary 65.06 KB
neuecc/MessagePack-CSharp without Attribute
Serialize 3952.6747 ms
Deserialize 4974.3738 ms
ReSerialize 4066.7528 ms
Size of Binary 65.06 KB

单对象序列化、反序列化、再序列化时间

多对象数组序列化、反序列化、再序列化时间

单对象序列化后数据大小

多对象数组序列化后数据大小

结论

neuecc/MessagePack表现最优,官方MsgPack-Cli表现比较差,Protobuf不支持无Contract Attribute模型,意味着需要侵入模型。

使用MessagePack,模型添加Contract Attribute并添加int型Order,比不添加Attribute或添加string型key快一点点,序列化后数据量明显减少,原因是不使用Attribute或使用string型Attribute key时,是以成员名称或key string作为索引,反之使用int型索引。

最新文章

  1. struts2+hibernate整合-实现登录功能
  2. Java基础——继承、接口
  3. centos安装php扩展
  4. c# winform UI + python底层的一点尝试
  5. 几篇不错的基础css博客转载
  6. arguments的基本用法
  7. 利用SOLR搭建企业搜索平台 之——运行solr
  8. c语言typedef的用法-解惑阿!很多天书般的东西解释的不错(转)
  9. PHP获取上个月、下个月、本月的日期
  10. JS-运动框架
  11. MATLAB图像处理基础
  12. Linux学习之域名解析命令
  13. C# DataTable转换成实体列表 与 实体列表转换成DataTable
  14. android6.0搜索蓝牙无法显示问题解决
  15. vue—data中变量和字符串拼接
  16. JavaScript数组对象详情
  17. 转 JQuery:常用方法一览
  18. wingIDE Pro6 破解教程
  19. Android自定义组件——四个方向滑动的菜单实现
  20. python-xlwt给excel添加样式

热门文章

  1. 关于Selenium3+python3.6自动化测试中iframe切换
  2. 2019北航oo课程第二单元作业总结..#_#..
  3. PostgreSQL>窗口函数的用法
  4. HCNA(华为)_DHCP篇
  5. Ubuntu全盘备份与恢复,亲自总结,实测可靠
  6. Django——小结
  7. typeof获取变量的数据类型 javascript
  8. TCP协议中是如何保证报文可靠传输的
  9. lvm快照备份数据库(Mysql5.7)
  10. PageHelper分页插件及通用分页js