使用 easyjson,生成 xxx_easyjson.go 文件之后,对测试结果所产生的影响

文章评论:原文地址: https://blog.csdn.net/luslin1711/article/details/90244468

正文:

博主,你好,文中的测试结果,似乎不是很正确。

由于评论区字数的限制,我另开一篇文章,请您解惑。

以下是我的测试过程,如有误,请不吝赐教


golang 版本: 1.14.1

对比 encoding/json、json-iterator、easyjson 三个类库

go test -bench=. -benchmem

============================================================================

1、对比 encoding/jsonjson-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/jsonjson-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

 

你可能感兴趣的:(Golang)