亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

測試比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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消