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來搞的~
服務器
最近看到golang羣裏的兄弟們說,msgpack要比json更好更快。。。 這東西我之前用過,可是由於給別人提供http接口的話,用js很差解析。 因此。。。。 我也就放棄使用了。dom
個人測試服務器:ide
個人測試代碼:
大量數據下的壓力測試的結果~
我把結果重定向到一個文件裏面 !!!
看到了吧,是14MB左右 ~
咱們打開看看 ~
都是二進制的文件 ~
下面咱們再解析json的數據 ~
測試的結果是:
json生成的數據要比msgpack大的多,大整整一倍左右,可是至於時間,真心沒看到啥優點。
#讓咱們來測試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())
這是一個老外的平均測試下的結果~
源地址:http://rfyiamcool.blog.51cto.com/1030776/1303868
官網是用c,java作的測試,他們是編譯語言,確定要比python這類的測試壓力更大更精準。 雖然沒有強十倍,哪怕一倍的結果,可是好在他的數據量是能夠縮小的。
在cs 模式下,用這個來解決文件大小的傳輸算是不錯的方案。