測試比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 模式下,用這個來解決文件大小的傳輸算是不錯的方案。

相關文章
相關標籤/搜索