jsoniter与原生json对比
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对比相关推荐
- 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 ...
- memcached mysql 性能测试_InnoDB memcached插件 vs 原生memcached对比性能测试
InnoDB memcached插件 vs原生memcached对比性能测试 MySQL 5.6开始支持InnoDB memcached插件,也就是可以通过SQL高效读写memcached里的缓存内容 ...
- 前端json对比工具
json对比样式如下: 源码下载: https://download.csdn.net/download/QWERTY55555/87814342
- MySQL 5.7原生JSON格式支持
在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较.其实早先MariaDB也有对非结构化的数据进行存储的方案,称为dynamic column,但是方案是通过BL ...
- mysql json官方文档,10分钟了解MySQL5.7对原生JSON的支持与用法
Part1:JSON格式的支持 MySQL5.7版本终于支持了原生的JSON格式,即将关系型数据库和文档型NO_SQL数据库集于一身.本文接下来将对这特性分别就MySQL5.7和MariaDB10.1 ...
- 开源云原生平台对比 KubeSphere vs Rainbond
最近因为工作需要,需要找一个功能完善的云原生应用平台,经过自己筛选和朋友推荐,剩下 KubeSphere和Rainbond ,这两个产品都是基于 Kubernetes 之上构建的云原生应用平台,功能都 ...
- 序列化和json对比
序列化 序列化是将对象状态转换为可保持或可传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据. 将对象的状态信息转换为可以存储或传输的窗体的过程 ...
- fastjson和json对比。fastjson快速入门。
快速预览 1. 什么是fastjson 2. 什么是JSON 3.fastjson如何使用 3.1 创建demo 3.2 将javaBean转化为JSON字符串 3.3 将JSON字符串转化为Java ...
- Vue文本json对比vue_code_diff
vue_code_diff 居中的图片: <!-- diff差异 --> <el-dialogtop="2vh"width="70%"titl ...
- java 原生 json 转 xml java json转xml 实现代码 读取本地json文件 转成 xml数据 用springboot 发布xml格式数据
结果xml截图 json数据 main启动 import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; ...
最新文章
- linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!
- linux进程与它的堆栈空间
- 数据库连接池之_DButils
- sql服务器时间不正确,SQL Server 服务器本地时间更改对SQL Server本身的影响
- envi中的sg滤波_ENVI滤波
- Java泛型主题讨论
- [Unity] 战斗系统学习 4:FlowCanvas 中的 LatentActionNode
- mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
- java jad_Java反编译工具 jad安装及使用的指南
- Linux(CentOS7)中如何安装QQ
- aws beanstalk mysql_AWS CloudFormation与BeanStalk的联系与区别
- python列表逆序
- sql server 简单应用
- python开发之四--break和continue用法
- oracle通信通道的文件结尾_如何解决ORA-03113: 通信通道的文件结尾?
- [Win32]Win32 SDK编程系列文章——键盘输入消息
- linux云计算运维和程序员,某哥教育2020Linux云计算运维工程师课程
- HTML认知06标签学习3
- 关于html里th:with的介绍使用
- 信息量-log2P(莫斯编码使用频繁P大的字符编码段信息量少)、信息熵:期望E=-Plog2P、两点分布交叉熵=KL散度=相对熵=-plnp-(1-p)ln(1-p)不对称、JS散度对称