文章评论:原文地址: https://blog.csdn.net/luslin1711/article/details/90244468
正文:
博主,你好,文中的测试结果,似乎不是很正确。
由于评论区字数的限制,我另开一篇文章,请您解惑。
以下是我的测试过程,如有误,请不吝赐教
golang 版本: 1.14.1
对比 encoding/json、json-iterator、easyjson 三个类库
go test -bench=. -benchmem
============================================================================
1、对比 encoding/json 和 json-iterator,
注意,此时还没_easyjson.go
你会发现:encoding/json 的性能优于 json-iterator
BenchmarkEncodingJson-4 845158 1405 ns/op 480 B/op 1 allocs/op
BenchmarkJsoniterJson-4 704700 1710 ns/op 488 B/op 2 allocs/op
--------------------------------------------------------------------------
2、继续对比: encoding/json 和 json-iterator,
注意: _easyjson.go 已经生成
你会发现 json-iterator 性能优于 encoding/json ,但是平均内存占用量(B/op),平均内存分配次数(allocs/op),也都增加了,而平均耗时(ns/op)也不是很理想
BenchmarkEncodingJson-4 210267 5406 ns/op 1568 B/op 6 allocs/op
BenchmarkJsoniterJson-4 749446 1642 ns/op 1576 B/op 7 allocs/op
--------------------------------------------------------------------------
3、对比: encoding/json、 json-iterator、easyjson
注意: _easyjson.go 已经生成
测试的结果,当然是 easyjson 最优先,但是你发现没,有了_easyjson.go文件之后,测试2、3 的结果中,平均内存占用量(B/op),平均内存分配次数(allocs/op),也都增加了,
而平均耗时(ns/op), 与使用 encoding/json(无 _easyjson.go时)的测试结果差距并不多, encoding/json(无 _easyjson.go时)的 B/op、allocs/op 也更优
BenchmarkEncodingJson-4 210403 5511 ns/op 1568 B/op 6 allocs/op
BenchmarkJsoniterJson-4 705922 1625 ns/op 1576 B/op 7 allocs/op
BenchmarkEasyJson-4 1000000 1258 ns/op 1088 B/op 5 allocs/op