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来搞的~
最近看到golang群里的兄弟们说,msgpack要比json更好更快。。。 这东西我以前用过,但是因为给别人提供http接口的话,用js不好解析。 所以。。。。 我也就放弃使用了。
我的测试服务器:
PowerEdge R720 16G Xeon E5-2603 1.8GHz
我的测试代码:
大量数据下的压力测试的结果~
我把结果重定向到一个文件里面 !!!
看到了吧,是14MB左右 ~
我们打开看看 ~
都是二进制的文件 ~
下面我们再解析json的数据 ~
测试的结果是:
json生成的数据要比msgpack大的多,大整整一倍左右,但是至于时间,真心没看到啥优势。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#让我们来测试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 模式下,用这个来解决文件大小的传输算是不错的方案。
本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1303868,如需转载请自行联系原作者