Golang Go语言中 JSON 解析器性能评测
全文链接: https://github.com/json-iterator/go-benchmark
目的不是推销 json-iterator 。而是证明 json-iterator 不比其他的库更慢,从而使得大家可以把吐槽点放到其他方面:比如特性是不是齐全, api 是不是友好。重新发明 json 解析器是因为经常需要处理奇怪格式的 json ,而又不想把数据转两遍。市面上没有 api 满足我的需求的,后面我会专门写一篇 api 介绍的文章来演示 json-iterator 的独特性。( https://github.com/json-iterator/go/blob/master/README.md )
- jsonparser: https://github.com/buger/jsonparser
- jsoniter pull-api: https://github.com/json-iterator/go
- jsoniter reflect-api: https://github.com/json-iterator/go/blob/master/jsoniter_reflect.go
- encoding/json: golang standard lib
- easy json: https://github.com/mailru/easyjson
测试设备
- CPU: i7-6700K @ 4.0G
- Level 1 cache size: 4 x 32 KB 8-way set associative instruction caches
- Level 2 cache size: 4 x 256 KB 4-way set associative caches
- Level 3 cache size: 8 MB 16-way set associative shared cache
- Go: 1.8beta1
small payload
encoding/json 在 i7-6700K 上性能还不错,但是在缓存小一些的 cpu 上性能要比这慢更多。
medium payload
json-iterator 的反射 api 也是相当快的。
large payload
jsonparser 在大部分字段不使用的时候,要快那么一丁点。
large file
test file used: https://github.com/json-iterator/test-data/blob/master/large-file.json
jsonparser 等其他一大票 json 解析器都是以 []byte 作为输入的,简直是为跑分而生。关于这一点 jackson 的作者也有吐槽( https://www.infoq.com/news/2014/05/jackson-founder-responds )。而 jsoniter 可以支持 io.Reader 作为输入,对于大文件处理非常友好。
Golang Go语言中 JSON 解析器性能评测
更多关于Golang Go语言中 JSON 解析器性能评测的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
好不容易看到个写 go 的 顶一下呢
更多关于Golang Go语言中 JSON 解析器性能评测的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang(Go语言)中,JSON解析器的性能评测是一个备受关注的话题。Go语言内置了强大的encoding/json
包,它提供了高效的JSON编解码功能。以下是对Go语言JSON解析器性能的一些关键点评测:
-
高性能:Go语言的
encoding/json
包经过高度优化,在处理大规模JSON数据时表现出色。其性能通常优于许多其他语言的内置JSON库。 -
流式解析:对于非常大的JSON数据,Go语言支持流式解析,允许逐步读取和处理数据,而不需要一次性将整个文档加载到内存中。这大大提高了处理大型JSON文件时的内存效率和性能。
-
并发处理:Go语言的并发模型(goroutines和channels)使得可以高效地并行处理JSON数据。通过分配多个goroutines来解析和处理JSON的不同部分,可以显著缩短处理时间。
-
自定义解析器:虽然
encoding/json
包已经足够强大,但在某些特定场景下,开发者可能需要自定义解析器以进一步优化性能。Go语言的灵活性和底层控制使得这成为可能。 -
基准测试:为了准确评测JSON解析器的性能,建议使用Go语言的基准测试工具(
go test -bench
)。这可以帮助开发者在不同的数据集和条件下,客观地评估和优化JSON解析器的性能。
综上所述,Go语言的JSON解析器在性能上表现出色,并提供了多种优化手段以满足不同场景的需求。通过合理的使用和优化,开发者可以充分发挥Go语言在处理JSON数据方面的优势。