前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsoniter与原生json对比

jsoniter与原生json对比

作者头像
公众号guangcity
发布2022-03-29 12:19:04
8750
发布2022-03-29 12:19:04
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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上来看效果差距不大。所以针对内存开销比较大的场景,还是适合使用缓存解决,当然缓存存在更新、过期的问题,如果数据长久不变,使用缓存将是不错的选择,如果数据变动非常频繁,那么只能动态的来计算。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jsoniter与原生json对比
  • 1.场景1: 数组长度10
  • 2.场景1: 数组长度1000
  • 3.场景3: 数组长度100000
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档