json,msgpack,protocal buffer性能对比

今天抽空对几种常见的格式化数据进行了测试比较,结果如下表所示。

对同一个字符串,各执行100000次encode和decode

方式 encode时间消耗 decode时间消耗 生成文件大小
json(数组) 0.44060492515564 1.0278780460358 33M
msgpack(数组) 0.12197613716125 0.39857411384583 20M
serialize(数组) 0.58154702186584 0.40348696708679 42M
protocol buffer(对象) 29.32014298439 26.832285881042 11M
msgpack(对象) 1.4672288894653 5.4165670871735 173M
serialize(对象) 3.957267999649 5.4174439907074 324M

结论

msgpack

时间消耗方面是最好的。处理数组方面绝对第一。并且生成的文本数据也很小。缺点是二进制的。不利于阅读。
json和serialize各有利弊。利于阅读。
msgpack各个语言基本都有支持。缓存数据可以使用此方式。API要求性能很高时,也可以考虑。

protocol buffer

protocol buffer 是google内部使用的基本类库。可以看到,效率并不是很高,但是生成的数据量却是最小的。很多的客户端APP使用此协议进行数据传输,可以极大的减少网络数据传输。
序列化数据也是二进制的。 反序列可以直接生成数据模型,使用上也非常方便。

以上使用的php测试的。具体语言的话,需要具体测试。

此条目发表在PHP分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。