最近在弄一些数据分析方面的内容,发现很多时候数据瓶颈在模块之间的数据序列化和反序列化上了,原来项目中用的是Json,找了一圈发现Json.net在Json序列化库中已经是性能的佼佼者了,便准备从序列化方式入手了,最后选择了MessagePack的这个序列化的库。
MessagePack是一种的序列化格式。这种格式小巧快速,多个小整数会压缩成一个字节,通常短字符串压缩后只比原来长度增加1个字节。
MessagePack对编程语言支持也比较广泛,在C#中比较有名的两个库是:
- 官方版本: msgpack-cli
- 社区版本: MessagePack-CSharp
其中社区版本有更好的性能,园子里有篇文章对它做了比较详细的介绍。
如下是各种序列化方式的性能比较图,MessagePack在各项性能指标上都是占据着很大优势的,比起Json.net来还有数倍的性能提升的。
关于Messagepack的原理,本文这里并不做介绍,感兴趣的朋友可以看下如下参考文章: