测试比json更快更小的二进制数据传输格式Msgpack [pythono MessagePack 版本]

MessagePack简称msgpack,官方网站是http://msgpack.org/ ,代码能够在github上查看 https://github.com/msgpack。java


官方介绍是“Extremely efficient object serialization library for cross-language communication.It's like JSON, but very fast and small.”,是一种跨语言的基于二进制的数据格式。python


msgpack彻底兼容json的数据格式git

比json的序列化更省时间和空间github

支持不少种语言(python,java,ruby,c,golang。。。。)golang


从官方的介绍来看,它可以比json

google protocol buffers快4倍,比json快10倍多。ruby


好多项目都开始用他,我们ops界流行的saltstack mq的传输也是用msgpack来搞的~
服务器




181000830.png

最近看到golang群里的兄弟们说,msgpack要比json更好更快。。。 这东西我之前用过,可是由于给别人提供http接口的话,用js很差解析。 因此。。。。 我也就放弃使用了。dom

个人测试服务器:ide

PowerEdge R720 16G Xeon E5-2603 1.8GHz

081438331.jpg


个人测试代码:


174207800.png


大量数据下的压力测试的结果~

175021315.png


我把结果重定向到一个文件里面 !!!

看到了吧,是14MB左右 ~

175104238.png

咱们打开看看 ~

175207796.png

都是二进制的文件 ~


下面咱们再解析json的数据 ~

175540959.png


测试的结果是:

json生成的数据要比msgpack大的多,大整整一倍左右,可是至于时间,真心没看到啥优点。

175918413.png


#让咱们来测试json吧~   呼呼
import msgpack
import json
import time
import random
import string
import os
ISOTIMEFORMAT='%Y-%m-%d %X'
print time.strftime(ISOTIMEFORMAT, time.localtime())
data={}
for i in range(1000000):
    salt = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    data[i]=salt
d=json.dumps(data)
d1=json.loads(d)
d2=json.dumps(d)
fileHandle = open( 'timejson.txt', 'w' )
fileHandle.write(d2)
fileHandle.close()
print time.strftime(ISOTIMEFORMAT, time.localtime())


这是一个老外的平均测试下的结果~

181324930.png

源地址http://rfyiamcool.blog.51cto.com/1030776/1303868


官网是用c,java作的测试,他们是编译语言,确定要比python这类的测试压力更大更精准。 虽然没有强十倍,哪怕一倍的结果,可是好在他的数据量是能够缩小的。

在cs 模式下,用这个来解决文件大小的传输算是不错的方案。

相关文章
相关标签/搜索