jsonsmart,msgpack,protocalbuffer谁更强?

最近在做一个ANDROID的应用,和服务器进行交互的时候就考虑到了对象序列化的问题。

翻遍网络,最后选出三个种子选手:

 jsonsmart  json格式中的绝对王者 速度快,信息少

msgpack  二进制序列化的怪杰,号称比protocal buffer快四倍,比json快10倍

protocal buffer GOOGLE出品,号称比XML快百倍

 

对着三个东西同样条件下测试了一下,主要是测试谁的包最小,因为和处理速度相比,网络传输更加敏感。

结论:

如果你的数据包以二进制数据为主,那么王者是msgpack.

如果你的数据包以字符串为主,那么王者是jsonsmart!!!!

msgpack和protocal buffer在以字符串为主的数据包中,表现完全相同。

具体的说,JSONsmart的数据只相当于其他两个的68.5%。也就是说领先32%。

我想这个结果可能和很多人想的不太一样,大家可以自己去测试吧。

也不难看出我的倾向是选择JSONsmart 了,因为我们的的数据还是主要是以字符串为主的。我想绝大部分的ANDROID应用系统都应该是以字符串为主的。

不过呢,要说编程最简单,还是msgpack 了。解析对象化 jsonsmart做的很差!这点让人郁闷,怎么就不能十全十美呢!不过2.0貌似有改善。

编程最麻烦是  protocal buffer!我对GOOGLE的程序设计水平一直不太欣赏。这次又给我了一点加强。

因此 mspack和protocal buffer 水准比较接近。但是二进制数据的综合性能还是 msgpack胜出。

从部署的角度说,

jsonsmart 1.1只需要50K。

protobuffer2.5需要529K

msgpack 0.6.7需要923K(只是用序列化功能,不用RPC,如果要用RPC,还要加上90K),其实 msgpack 本身只需要272K,但是它依赖的javassist.jar需要689K!!!!

从这个角度说msgpack是最失败的了。有几个愿意为了是用你的序列化功能就让ANDROID程序增加923K的???

JSONsmart再一次成为王者。

她的缺陷:1.反序列化对象化作的不好 2.数据包是字符

要克服第一点,可以考虑采用jsonsmart 2.0,要解决第二个问题,可以自己写一个简单的加解密程序。

如果这样,ANDORID方案就再也没有比jsonsmart 更好的方案了!

因此我最后选择了jsonsmart 方案,事实证明,效果完美。

 

 

 

 

 

 

 

你可能感兴趣的:(buffer)