为了账号安全,请及时绑定邮箱和手机立即绑定

测试比json更快更小的二进制数据传输格式Msgpack

标签:
Python


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

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

msgpack完全兼容json的数据格式

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

支持很多种语言(python,java,ruby,c,golang。。。。)

从官方的介绍来看,它能够比

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

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

181000830.png

最近看到golang群里的兄弟们说,msgpack要比json更好更快。。。 这东西我以前用过,但是因为给别人提供http接口的话,用js不好解析。 所以。。。。 我也就放弃使用了。

我的测试服务器:

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 模式下,用这个来解决文件大小的传输算是不错的方案。

©著作权归作者所有:来自51CTO博客作者rfyiamcool的原创作品,谢绝转载,否则将追究法律责任

msgpackpython msgpackMsgpack jsonpython应用


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消