文章目录

  • MsgPack/Json性能数据对比

MsgPack/Json性能数据对比

MsgPack是一个高效的二进制序列化格式,像Json一样可以在各语言之间进行交换数据,都用来序列化存储数据。优势是在数据规模大时,效率比Json更高,占用资源更少;缺点是,二进制格式,不易查看数据。

业界Rpc交互之间使用广泛:JD,Baidu…
官网地址:http://pecl.php.net/package/msgpack

下面做了样本实验,简单对比MsgPack于Json性能:

实验数据「样本数据选取string类型,观察对比耗时、占比情况」:

此样本库可得出
String/Int混合类型中,MsgPack在序列化String时比Json压缩/耗时性能更优秀;Int类型时压缩比仅差1个百分点,耗时优势依旧突出。在数据对象中String类型占比大的场景,MsgPack比Json更适合。

:样本一数据中Msg/Json耗时占比逼近3个百分点;Msg/Json压缩占比平均在86%,短的字符串仅仅只需要比它的长度多3-4个字节的大小;

附样本数据:

//"github.com/vmihailenco/msgpack"
//msgpack于json对比 code
var rangeObj []string
var testSliceStr  string
testStr :="{\"from_trans\":1,\"uid_real_tags\":\"\",\"aid\":\"\",\"uid\":\"5537471228\",\"idfa\":\"\",\"pst_basic_profile\":200,\"positions\":\"3|8|13|18|23\",\"service\":\"discover_hotspot_feed\",\"oaid\":\"\",\"user_ip\":\"172.17.0.1\",\"mid_s_reason\":\"\",\"server_addr\":\"10.13.40.145\",\"experiment\":{},\"ts\":1617690796,\"blog_author_id\":\"\",\"loadmore\":\"0\",\"id\":\"16176907970138000027\",\"rc\":200,\"uve\":{\"ui_hc\":200,\"u_hc\":200,\"ui_rc\":200,\"u_rc\":0,\"passport\":\";;200|1.9888877868652\"},\"ua\":\"1\",\"engine_time\":107,\"render\":{\"resources\":[{\"ur_hc\":200,\"position\":3,\"ur_rc\":0,\"like\":\"404|0;404:1\",\"mblog\":\"404|0;200|3;\",\"time\":42},{\"ur_hc\":200,\"position\":8,\"ur_rc\":0,\"like\":\"404|0;404:2\",\"mblog\":\"404|0;200|13;\",\"time\":34}]},\"stocks\":{\"mixrank_ads\":\"18|23\",\"u_positions\":\"3|8|13\",\"std_positions\":\"3|8|13|18|23\",\"last_span\":\"-1\",\"interval\":\"5\"},\"owner_uid\":\"\",\"from\":\"1093193010\",\"version\":5,\"idx_id\":\"16176907970138000027\",\"bc_tags\":{\"l2_tags\":\";\",\"keywords\":\"\",\"l1_tags\":\"\"},\"mixrank\":1,\"mid\":\"\",\"filtered_imps\":\"\",\"head_time\":9,\"webview_ua\":\"0\",\"follows\":77,\"sub_service_id\":\"\",\"products\":[{\"positions\":[3,8,13,18,23],\"time\":104,\"rc\":200,\"product\":\"Sfst\",\"cands\":[{\"price\":[160,149,149,0],\"position\":3,\"status\":2000,\"ustatus\":12106,\"factors\":[\"3003\",\"3068807231\",\"\",\"1\",\"783_006\"],\"ur_hc\":500,\"bid\":\"160|1|1|1|160|0|0.00031228387|agent|4000\",\"ad_mid\":\"4610321166109510\",\"rstatus\":22106,\"feature\":\"88030004\",\"result\":\"4610321166109510\"},{\"status\":2030,\"price\":[160,0,0,0],\"position\":8,\"factors\":[\"3003\",\"3068807231\",\"\",\"1\",\"783_006\"],\"result\":\"4610321166109510\",\"ad_mid\":\"4610321166109510\",\"bid\":\"160|1|1|1|160|0|0.00031228387|agent|4000\",\"feature\":\"88030004\"},{\"price\":[1,1,1,0],\"position\":8,\"status\":2000,\"ustatus\":12106,\"factors\":[\"3001\",\"5931191764\",\"\",\"1\",\"783_006\"],\"ur_hc\":500,\"bid\":\"1|1|1|1|1|0|0.00030010002|agent|4000\",\"ad_mid\":\"4620027461112281\",\"rstatus\":22106,\"feature\":\"88030003\",\"result\":\"4620027461112281\"},{\"status\":2030,\"price\":[160,0,0,0],\"position\":13,\"factors\":[\"3003\",\"3068807231\",\"\",\"1\",\"783_006\"],\"result\":\"4610321166109510\",\"ad_mid\":\"4610321166109510\",\"bid\":\"160|1|1|1|160|0|0.00031228387|agent|4000\",\"feature\":\"88030004\"},{\"status\":2030,\"price\":[1,0,0,0],\"position\":13,\"factors\":[\"3001\",\"5931191764\",\"\",\"1\",\"783_006\"],\"result\":\"4620027461112281\",\"ad_mid\":\"4620027461112281\",\"bid\":\"1|1|1|1|1|0|0.00030010002|agent|4000\",\"feature\":\"88030003\"},{\"status\":2030,\"price\":[160,0,0,0],\"position\":18,\"factors\":[\"3003\",\"3068807231\",\"\",\"1\",\"783_006\"],\"result\":\"4610321166109510\",\"ad_mid\":\"4610321166109510\",\"bid\":\"160|1|1|1|160|0|0.00031228387|agent|4000\",\"feature\":\"88030004\"},{\"status\":2030,\"price\":[1,0,0,0],\"position\":18,\"factors\":[\"3001\",\"5931191764\",\"\",\"1\",\"783_006\"],\"result\":\"4620027461112281\",\"ad_mid\":\"4620027461112281\",\"bid\":\"1|1|1|1|1|0|0.00030010002|agent|4000\",\"feature\":\"88030003\"},{\"status\":2030,\"price\":[160,0,0,0],\"position\":23,\"factors\":[\"3003\",\"3068807231\",\"\",\"1\",\"783_006\"],\"result\":\"4610321166109510\",\"ad_mid\":\"4610321166109510\",\"bid\":\"160|1|1|1|160|0|0.00031228387|agent|4000\",\"feature\":\"88030004\"},{\"status\":2030,\"price\":[1,0,0,0],\"position\":23,\"factors\":[\"3001\",\"5931191764\",\"\",\"1\",\"783_006\"],\"result\":\"4620027461112281\",\"ad_mid\":\"4620027461112281\",\"bid\":\"1|1|1|1|1|0|0.00030010002|agent|4000\",\"feature\":\"88030003\"}]},{\"rc\":200,\"time\":7,\"positions\":[3,8,13,18,23],\"product\":\"WAX\"}],\"mac\":\"\",\"user_info\":[],\"imei\":\"da472ec3b036b57b98e71a1d9f970723\",\"unread_status\":\"15\",\"stock\":{\"783_006\":[3,8,13,18,23],\"30_003\":[3,8,13,18,23]},\"darwin_code\":\"200\",\"idx_time\":125}"
for i := 0;i<10000;i++{testSliceStr = testSliceStr + testStrif i%1000 == 0{rangeObj = append(rangeObj,testSliceStr)}
}
for i,v:= range rangeObj {testSliceStr = v//1、数据大小对比timeStart := time.Now()msgSizeRes, _ := msgpack.Marshal(testSliceStr)timeEnd := time.Now()duration1 := timeEnd.Sub(timeStart)fmt.Println("msg 序列化用时:", duration1)timeStart = time.Now()jsonSizeRes, _ := json.Marshal(testSliceStr)timeEnd = time.Now()duration2 := timeEnd.Sub(timeStart)fmt.Println("json 序列化用时:", duration2)fmt.Println("content 序列化前大小:", len([]byte(testSliceStr)))fmt.Println("msg 序列化后大小:", len(msgSizeRes))fmt.Println("json 序列化后大小:", len(jsonSizeRes))fmt.Println("msg:json 用时比:", float32(duration1.Microseconds())/float32(duration2.Microseconds()))fmt.Println("msg:json 压缩比:", float32(len(msgSizeRes))/float32(len(jsonSizeRes)))fmt.Printf("QQQQQQ===test:%+v\n", i)
}

Res如下:

msg 序列化用时: 360.833μs
json 序列化用时: 369.75μs
content 序列化前大小: 3442
msg序列化后大小: 3445
json 序列化后大小: 4002
msg:json 用时比: 0.9756098
msg:json 压缩比:0.8608196
QQQQQQ===test:0

msg 序列化用时: 5.112875ms
json 序列化用时: 25.18375ms
content 序列化前大小: 3445442
msg 序列化后大小: 3445447
json 序列化后大小: 4004002
msg:json 用时比: 0.20299408
msg:json 压缩比: 0.8605008
QQQQQQ===test:1

msg 序列化用时: 13.055833ms
json 序列化用时: 26.396916ms
content 序列化前大小: 6887442
msg 序列化后大小: 6887447
json 序列化后大小: 8004002
msg:json 用时比: 0.4945825
msg:json 压缩比: 0.8605004
QQQQQQ===test:2

msg 序列化用时: 13.461958ms
json 序列化用时: 39.432458ms
content 序列化前大小:10329442
msg 序列化后大小: 10329447
json 序列化后大小: 12004002
msg:json 用时比:0.3413725
msg:json 压缩比: 0.8605003
QQQQQQ===test:3

MsgPack/Json性能数据相关推荐

  1. json ajax查询,jQuery AJAX和JSON性能查询

    我将一些JSON数据存储在文本文件中,以便在我的页面中使用jQuery Ajax进行查询.目前,我的文本文件包含大约10个数据面(可能包含额外的30个数据面). JSON数据包含这些问题的问题和答案. ...

  2. django mysql返回json_Django 1.8.11 查询数据库返回JSON格式数据

    Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...

  3. Mysql使用函数json_extract处理Json类型数据

    Mysql使用函数json_extract处理Json类型数据 1. 需求概述 2. json_extract简介 2.1 函数简介 2.2 使用方式 2.3 注意事项 3. 实现验证 3.1 建表查 ...

  4. (八): 查询结果直接返回Json格式数据

    Bee简单易用:单表操作.多表关联操作,可以不用写sql,极少语句就可以完成SQL操作:10分钟即可学会使用. Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化. ...

  5. Tencent APIJSON 零代码、全功能、强安全 ORM 库 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构

    项目介绍 零代码.全功能.强安全 ORM 库 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构. A JSON Transmission Protocol and an ORM ...

  6. js读取解析JSON类型数据

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独 ...

  7. Json格式数据解析

    一.简介 XML这种数据格式.XML的特点是功能全面,但标签繁琐,格式复杂.在Web上使用XML现在越来越少,取而代之的是JSON这种数据结构. JSON是JavaScript Object Nota ...

  8. spark- PySparkSQL之PySpark解析Json集合数据

    PySparkSQL之PySpark解析Json集合数据 数据样本 12341234123412342|asefr-3423|[{"name":"spark", ...

  9. PHP如何通过Http Post请求发送Json对象数据?

    因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象. Http中传输对象,最好的表现形式莫过于JSON字符串了, ...

最新文章

  1. FPGA设计心得(4)Aurora IP core 的定制详情记录
  2. Objective-c(1)
  3. 7.12固定信息认证
  4. libc glibc glib 的关系
  5. SAP UI5 初学者教程之十 - 什么是 SAP UI5 应用的描述符 Descriptor 试读版
  6. 【2018.5.19】模拟赛之一-ssl2432 面积最大【数学】
  7. 微信公共账号学习笔记 _ 感想 爪机码字
  8. 扶贫计算机考试试题,计算机基础知识试题1.doc
  9. idea 代码格式化 Spotless 教程
  10. Squid运行控制脚本_wuli大世界_新浪博客
  11. C#Directory常用方法
  12. win7计算机ip地址怎么查,win7电脑的IP地址怎样查看
  13. nginx rtmp推流配置与测试
  14. href传中文参数乱码问题
  15. cocos creator2.3.5休闲游戏英文版(连连看)源码H5+安卓+IOS三端源码
  16. html5开发战棋游戏,个人耗时三月独立开发的无限流战棋游戏求龙友们给些建议。 ......
  17. 靓仔的个人邮箱推荐——靓号邮箱!
  18. 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之2.HDFS分布式文件系统
  19. Spring Boot SSL证书验证的问题
  20. 误将桌面的计算机图标删除,如何恢复误删除的"桌面图标"

热门文章

  1. 家教APP开发能解决什么问题?
  2. 「MICCAI 2018」Reading Notes
  3. java动态绑定和静态绑定区别_理解静态绑定与动态绑定
  4. vscode 利用ts文件来开启智能提示
  5. python元素定位方法之CSS定位
  6. Launcher3源码分析 — 将Workspace的数据与界面绑定
  7. 广西单招计算机去报哪个学校,广西单招移动商务专业有哪些学校
  8. 有限责任公司股东分红怎么避税 老板分红如何合理节税
  9. 下拉列表的3种实现方法
  10. 【19调剂】关于中国传媒大学2019年部分专业接收调剂生的通知