jsoniter与原生json对比

之前看到过json-iterator库使用,为何替换掉原生的json呢,看了一下github,如下:

json-iterator is a high-performance 100% compatible drop-in replacement of "encoding/json"

因为其高性能而为广泛使用,今天测试一个场景,假设有个数组["aaaa", "bbb" .....] 里面存储的全是字符串,字符串长度姑且定位10吧,从字符串Unmarshal为slice string后,采用原生json与json-iter的对比,后面称呼json-iter为jsoniter吧。

jsoniter地址如下:

https://github.com/json-iterator/go

1.场景1: 数组长度10

json

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJson
BenchmarkJson-8      171060       7230 ns/op     1161 B/op       22 allocs/op
PASS

jsoniter

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJsonIter
BenchmarkJsonIter-8      443746       2921 ns/op     1011 B/op       24 allocs/op
PASS

2.场景1: 数组长度1000

json

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJson
BenchmarkJson-8        2842     426381 ns/op    88175 B/op     1036 allocs/op
PASS

jsoniter

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJsonIter
BenchmarkJsonIter-8       10000     122974 ns/op    65640 B/op     1026 allocs/op
PASS

3.场景3: 数组长度100000

json

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJson
BenchmarkJson-8          26   43026436 ns/op 10597790 B/op   100260 allocs/op

jsoniter

goos: linux
goarch: amd64
cpu: AMD EPYC 7K62 48-Core Processor
BenchmarkJsonIter
BenchmarkJsonIter-8          75   16120198 ns/op 12341738 B/op   100141 allocs/op
PASS

我们可以看到jsoniter确实比json有这不错的性能优势,从ns/op这个数据看到原生jsoniter是3-4倍的jsoniter,但是从allocs/op上来看效果差距不大。所以针对内存开销比较大的场景,还是适合使用缓存解决,当然缓存存在更新、过期的问题,如果数据长久不变,使用缓存将是不错的选择,如果数据变动非常频繁,那么只能动态的来计算。

jsoniter与原生json对比相关推荐

  1. mysql5.7.9 json_Mysql5.7.9原生JSON格式支持

    Mysql5.7.9原生JSON格式支持 创建表 create table news (uid int auto_increment, data json, primary key(uid))engi ...

  2. memcached mysql 性能测试_InnoDB memcached插件 vs 原生memcached对比性能测试

    InnoDB memcached插件 vs原生memcached对比性能测试 MySQL 5.6开始支持InnoDB memcached插件,也就是可以通过SQL高效读写memcached里的缓存内容 ...

  3. 前端json对比工具

    json对比样式如下: 源码下载: https://download.csdn.net/download/QWERTY55555/87814342

  4. MySQL 5.7原生JSON格式支持

    在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较.其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BL ...

  5. mysql json官方文档,10分钟了解MySQL5.7对原生JSON的支持与用法

    Part1:JSON格式的支持 MySQL5.7版本终于支持了原生的JSON格式,即将关系型数据库和文档型NO_SQL数据库集于一身.本文接下来将对这特性分别就MySQL5.7和MariaDB10.1 ...

  6. 开源云原生平台对比 KubeSphere vs Rainbond

    最近因为工作需要,需要找一个功能完善的云原生应用平台,经过自己筛选和朋友推荐,剩下 KubeSphere和Rainbond ,这两个产品都是基于 Kubernetes 之上构建的云原生应用平台,功能都 ...

  7. 序列化和json对比

    序列化 序列化是将对象状态转换为可保持或可传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据. 将对象的状态信息转换为可以存储或传输的窗体的过程 ...

  8. fastjson和json对比。fastjson快速入门。

    快速预览 1. 什么是fastjson 2. 什么是JSON 3.fastjson如何使用 3.1 创建demo 3.2 将javaBean转化为JSON字符串 3.3 将JSON字符串转化为Java ...

  9. Vue文本json对比vue_code_diff

    vue_code_diff 居中的图片: <!-- diff差异 --> <el-dialogtop="2vh"width="70%"titl ...

  10. java 原生 json 转 xml java json转xml 实现代码 读取本地json文件 转成 xml数据 用springboot 发布xml格式数据

    结果xml截图 json数据 main启动 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; ...

最新文章

  1. linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!
  2. linux进程与它的堆栈空间
  3. 数据库连接池之_DButils
  4. sql服务器时间不正确,SQL Server 服务器本地时间更改对SQL Server本身的影响
  5. envi中的sg滤波_ENVI滤波
  6. Java泛型主题讨论
  7. [Unity] 战斗系统学习 4:FlowCanvas 中的 LatentActionNode
  8. mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
  9. java jad_Java反编译工具 jad安装及使用的指南
  10. Linux(CentOS7)中如何安装QQ
  11. aws beanstalk mysql_AWS CloudFormation与BeanStalk的联系与区别
  12. python列表逆序
  13. sql server 简单应用
  14. python开发之四--break和continue用法
  15. oracle通信通道的文件结尾_如何解决ORA-03113: 通信通道的文件结尾?
  16. [Win32]Win32 SDK编程系列文章——键盘输入消息
  17. linux云计算运维和程序员,某哥教育2020Linux云计算运维工程师课程
  18. HTML认知06标签学习3
  19. 关于html里th:with的介绍使用
  20. 信息量-log2P(莫斯编码使用频繁P大的字符编码段信息量少)、信息熵:期望E=-Plog2P、两点分布交叉熵=KL散度=相对熵=-plnp-(1-p)ln(1-p)不对称、JS散度对称

热门文章

  1. java实现身份证归属地查询
  2. SSR for mac with free download addresses
  3. B2B、B2C、BOS系统都指哪些?
  4. 第十一届 蓝桥杯 省 模拟赛 试题+题解 C/C++描述
  5. APP合规-超范围收集个人信息
  6. Python获取微信好友地址以及性别并生成可视化图表
  7. PowerBuilder从入门到精通(PB12.5)
  8. Shiro笔记 教程
  9. ubuntu下载字体
  10. 前期交互流程(PTES的第一步)