Skip to content

Commit dc52214

Browse files
authored
Merge pull request #84 from goccy/feature/add-benchmark-target
Add benchmark target
2 parents 2bec292 + 0d97f97 commit dc52214

10 files changed

+1301
-7
lines changed

benchmarks/bench_test.go

Lines changed: 59 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424

2525
"github.com/goccy/go-json"
2626
jsoniter "github.com/json-iterator/go"
27+
segmentiojson "github.com/segmentio/encoding/json"
28+
"github.com/wI2L/jettison"
2729
)
2830

2931
type codeResponse struct {
@@ -94,6 +96,24 @@ func codeInit() {
9496
}
9597
}
9698

99+
func Benchmark_EncodeBigData_GoJson(b *testing.B) {
100+
b.ReportAllocs()
101+
if codeJSON == nil {
102+
b.StopTimer()
103+
codeInit()
104+
b.StartTimer()
105+
}
106+
b.RunParallel(func(pb *testing.PB) {
107+
enc := json.NewEncoder(ioutil.Discard)
108+
for pb.Next() {
109+
if err := enc.Encode(&codeStruct); err != nil {
110+
b.Fatal("Encode:", err)
111+
}
112+
}
113+
})
114+
b.SetBytes(int64(len(codeJSON)))
115+
}
116+
97117
func Benchmark_EncodeBigData_EncodingJson(b *testing.B) {
98118
b.ReportAllocs()
99119
if codeJSON == nil {
@@ -131,15 +151,15 @@ func Benchmark_EncodeBigData_JsonIter(b *testing.B) {
131151
b.SetBytes(int64(len(codeJSON)))
132152
}
133153

134-
func Benchmark_EncodeBigData_GoJson(b *testing.B) {
154+
func Benchmark_EncodeBigData_SegmentioJson(b *testing.B) {
135155
b.ReportAllocs()
136156
if codeJSON == nil {
137157
b.StopTimer()
138158
codeInit()
139159
b.StartTimer()
140160
}
141161
b.RunParallel(func(pb *testing.PB) {
142-
enc := json.NewEncoder(ioutil.Discard)
162+
enc := segmentiojson.NewEncoder(ioutil.Discard)
143163
for pb.Next() {
144164
if err := enc.Encode(&codeStruct); err != nil {
145165
b.Fatal("Encode:", err)
@@ -149,6 +169,24 @@ func Benchmark_EncodeBigData_GoJson(b *testing.B) {
149169
b.SetBytes(int64(len(codeJSON)))
150170
}
151171

172+
func Benchmark_MarshalBigData_GoJson(b *testing.B) {
173+
b.ReportAllocs()
174+
if codeJSON == nil {
175+
b.StopTimer()
176+
codeInit()
177+
b.StartTimer()
178+
}
179+
180+
b.RunParallel(func(pb *testing.PB) {
181+
for pb.Next() {
182+
if _, err := json.Marshal(&codeStruct); err != nil {
183+
b.Fatal("Marshal:", err)
184+
}
185+
}
186+
})
187+
b.SetBytes(int64(len(codeJSON)))
188+
}
189+
152190
func Benchmark_MarshalBigData_EncodingJson(b *testing.B) {
153191
b.ReportAllocs()
154192
if codeJSON == nil {
@@ -184,7 +222,7 @@ func Benchmark_MarshalBigData_JsonIter(b *testing.B) {
184222
b.SetBytes(int64(len(codeJSON)))
185223
}
186224

187-
func Benchmark_MarshalBigData_GoJson(b *testing.B) {
225+
func Benchmark_MarshalBigData_Jettison(b *testing.B) {
188226
b.ReportAllocs()
189227
if codeJSON == nil {
190228
b.StopTimer()
@@ -193,7 +231,24 @@ func Benchmark_MarshalBigData_GoJson(b *testing.B) {
193231
}
194232
b.RunParallel(func(pb *testing.PB) {
195233
for pb.Next() {
196-
if _, err := json.Marshal(&codeStruct); err != nil {
234+
if _, err := jettison.Marshal(&codeStruct); err != nil {
235+
b.Fatal("Marshal:", err)
236+
}
237+
}
238+
})
239+
b.SetBytes(int64(len(codeJSON)))
240+
}
241+
242+
func Benchmark_MarshalBigData_SegmentioJson(b *testing.B) {
243+
b.ReportAllocs()
244+
if codeJSON == nil {
245+
b.StopTimer()
246+
codeInit()
247+
b.StartTimer()
248+
}
249+
b.RunParallel(func(pb *testing.PB) {
250+
for pb.Next() {
251+
if _, err := segmentiojson.Marshal(&codeStruct); err != nil {
197252
b.Fatal("Marshal:", err)
198253
}
199254
}

benchmarks/encode_test.go

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
gojson "github.com/goccy/go-json"
99
jsoniter "github.com/json-iterator/go"
1010
segmentiojson "github.com/segmentio/encoding/json"
11+
"github.com/wI2L/jettison"
1112
)
1213

1314
func Benchmark_Encode_SmallStruct_EncodingJson(b *testing.B) {
@@ -29,6 +30,24 @@ func Benchmark_Encode_SmallStruct_JsonIter(b *testing.B) {
2930
}
3031
}
3132

33+
func Benchmark_Encode_SmallStruct_EasyJson(b *testing.B) {
34+
b.ReportAllocs()
35+
for i := 0; i < b.N; i++ {
36+
if _, err := NewSmallPayloadEasyJson().MarshalJSON(); err != nil {
37+
b.Fatal(err)
38+
}
39+
}
40+
}
41+
42+
func Benchmark_Encode_SmallStruct_Jettison(b *testing.B) {
43+
b.ReportAllocs()
44+
for i := 0; i < b.N; i++ {
45+
if _, err := jettison.Marshal(NewSmallPayload()); err != nil {
46+
b.Fatal(err)
47+
}
48+
}
49+
}
50+
3251
func Benchmark_Encode_SmallStruct_GoJay(b *testing.B) {
3352
b.ReportAllocs()
3453
for i := 0; i < b.N; i++ {
@@ -86,6 +105,26 @@ func Benchmark_Encode_SmallStructCached_JsonIter(b *testing.B) {
86105
}
87106
}
88107

108+
func Benchmark_Encode_SmallStructCached_EasyJson(b *testing.B) {
109+
cached := NewSmallPayloadEasyJson()
110+
b.ReportAllocs()
111+
for i := 0; i < b.N; i++ {
112+
if _, err := cached.MarshalJSON(); err != nil {
113+
b.Fatal(err)
114+
}
115+
}
116+
}
117+
118+
func Benchmark_Encode_SmallStructCached_Jettison(b *testing.B) {
119+
cached := NewSmallPayload()
120+
b.ReportAllocs()
121+
for i := 0; i < b.N; i++ {
122+
if _, err := jettison.Marshal(cached); err != nil {
123+
b.Fatal(err)
124+
}
125+
}
126+
}
127+
89128
func Benchmark_Encode_SmallStructCached_GoJay(b *testing.B) {
90129
cached := NewSmallPayload()
91130
b.ReportAllocs()
@@ -145,6 +184,24 @@ func Benchmark_Encode_MediumStruct_JsonIter(b *testing.B) {
145184
}
146185
}
147186

187+
func Benchmark_Encode_MediumStruct_EasyJson(b *testing.B) {
188+
b.ReportAllocs()
189+
for i := 0; i < b.N; i++ {
190+
if _, err := NewMediumPayloadEasyJson().MarshalJSON(); err != nil {
191+
b.Fatal(err)
192+
}
193+
}
194+
}
195+
196+
func Benchmark_Encode_MediumStruct_Jettison(b *testing.B) {
197+
b.ReportAllocs()
198+
for i := 0; i < b.N; i++ {
199+
if _, err := jettison.Marshal(NewMediumPayload()); err != nil {
200+
b.Fatal(err)
201+
}
202+
}
203+
}
204+
148205
func Benchmark_Encode_MediumStruct_GoJay(b *testing.B) {
149206
b.ReportAllocs()
150207
for i := 0; i < b.N; i++ {
@@ -202,6 +259,26 @@ func Benchmark_Encode_MediumStructCached_JsonIter(b *testing.B) {
202259
}
203260
}
204261

262+
func Benchmark_Encode_MediumStructCached_EasyJson(b *testing.B) {
263+
cached := NewMediumPayloadEasyJson()
264+
b.ReportAllocs()
265+
for i := 0; i < b.N; i++ {
266+
if _, err := cached.MarshalJSON(); err != nil {
267+
b.Fatal(err)
268+
}
269+
}
270+
}
271+
272+
func Benchmark_Encode_MediumStructCached_Jettison(b *testing.B) {
273+
cached := NewMediumPayload()
274+
b.ReportAllocs()
275+
for i := 0; i < b.N; i++ {
276+
if _, err := jettison.Marshal(cached); err != nil {
277+
b.Fatal(err)
278+
}
279+
}
280+
}
281+
205282
func Benchmark_Encode_MediumStructCached_GoJay(b *testing.B) {
206283
cached := NewMediumPayload()
207284
b.ReportAllocs()
@@ -261,6 +338,24 @@ func Benchmark_Encode_LargeStruct_JsonIter(b *testing.B) {
261338
}
262339
}
263340

341+
func Benchmark_Encode_LargeStruct_EasyJson(b *testing.B) {
342+
b.ReportAllocs()
343+
for i := 0; i < b.N; i++ {
344+
if _, err := NewLargePayloadEasyJson().MarshalJSON(); err != nil {
345+
b.Fatal(err)
346+
}
347+
}
348+
}
349+
350+
func Benchmark_Encode_LargeStruct_Jettison(b *testing.B) {
351+
b.ReportAllocs()
352+
for i := 0; i < b.N; i++ {
353+
if _, err := jettison.Marshal(NewLargePayload()); err != nil {
354+
b.Fatal(err)
355+
}
356+
}
357+
}
358+
264359
func Benchmark_Encode_LargeStruct_GoJay(b *testing.B) {
265360
b.ReportAllocs()
266361
for i := 0; i < b.N; i++ {
@@ -318,6 +413,26 @@ func Benchmark_Encode_LargeStructCached_JsonIter(b *testing.B) {
318413
}
319414
}
320415

416+
func Benchmark_Encode_LargeStructCached_EasyJson(b *testing.B) {
417+
cached := NewLargePayloadEasyJson()
418+
b.ReportAllocs()
419+
for i := 0; i < b.N; i++ {
420+
if _, err := cached.MarshalJSON(); err != nil {
421+
b.Fatal(err)
422+
}
423+
}
424+
}
425+
426+
func Benchmark_Encode_LargeStructCached_Jettison(b *testing.B) {
427+
cached := NewLargePayload()
428+
b.ReportAllocs()
429+
for i := 0; i < b.N; i++ {
430+
if _, err := jettison.Marshal(cached); err != nil {
431+
b.Fatal(err)
432+
}
433+
}
434+
}
435+
321436
func Benchmark_Encode_LargeStructCached_GoJay(b *testing.B) {
322437
cached := NewLargePayload()
323438
b.ReportAllocs()

benchmarks/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ require (
66
github.com/francoispqt/gojay v1.2.13
77
github.com/goccy/go-json v0.0.0-00010101000000-000000000000
88
github.com/json-iterator/go v1.1.9
9+
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe
910
github.com/segmentio/encoding v0.2.4
11+
github.com/wI2L/jettison v0.7.1
1012
)
1113

1214
replace github.com/goccy/go-json => ../

benchmarks/go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBT
1414
github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
1515
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
1616
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
17+
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
1718
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1819
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
1920
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -54,7 +55,9 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN
5455
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
5556
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
5657
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
58+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
5759
github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
60+
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w=
5861
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
5962
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
6063
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
@@ -66,6 +69,7 @@ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9
6669
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
6770
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
6871
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
72+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
6973
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
7074
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
7175
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -75,6 +79,7 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:
7579
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
7680
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
7781
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
82+
github.com/segmentio/encoding v0.1.10/go.mod h1:RWhr02uzMB9gQC1x+MfYxedtmBibb9cZ6Vv9VxRSSbw=
7883
github.com/segmentio/encoding v0.2.4 h1:TQRXhTlXj4urZe3Z5QVgxs9Ad1i7GYHg9peAtjOPe28=
7984
github.com/segmentio/encoding v0.2.4/go.mod h1:MJjRE6bMDocliO2FyFC2Dusp+uYdBfHWh5Bw7QyExto=
8085
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -106,9 +111,12 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
106111
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
107112
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
108113
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
114+
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
109115
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
110116
github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU=
111117
github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM=
118+
github.com/wI2L/jettison v0.7.1 h1:XNq/WvSOAiJhFww9F5JZZcBZtKFL2Y/9WHHEHLDq9TE=
119+
github.com/wI2L/jettison v0.7.1/go.mod h1:dj49nOP41M7x6Jql62BqqF/+nW+XJgBaWzJR0hd6M84=
112120
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
113121
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
114122
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
@@ -166,9 +174,11 @@ google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9M
166174
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
167175
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
168176
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
177+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
169178
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
170179
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
171180
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
181+
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
172182
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
173183
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
174184
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

benchmarks/large_payload.go

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ type LargePayload struct {
119119
Topics *DSTopicsList
120120
}
121121

122+
//easyjson:json
123+
type LargePayloadEasyJson struct {
124+
Users DSUsers
125+
Topics *DSTopicsList
126+
}
127+
122128
func (m *LargePayload) UnmarshalJSONObject(dec *gojay.Decoder, key string) error {
123129
switch key {
124130
case "users":
@@ -134,7 +140,6 @@ func (m *LargePayload) NKeys() int {
134140
return 2
135141
}
136142

137-
//easyjson:json
138143
func (m *LargePayload) MarshalJSONObject(enc *gojay.Encoder) {
139144
enc.AddArrayKey("users", &m.Users)
140145
enc.AddObjectKey("topics", m.Topics)
@@ -175,3 +180,31 @@ func NewLargePayload() *LargePayload {
175180
},
176181
}
177182
}
183+
184+
func NewLargePayloadEasyJson() *LargePayloadEasyJson {
185+
dsUsers := DSUsers{}
186+
dsTopics := DSTopics{}
187+
for i := 0; i < 100; i++ {
188+
str := "test" + strconv.Itoa(i)
189+
dsUsers = append(
190+
dsUsers,
191+
&DSUser{
192+
Username: str,
193+
},
194+
)
195+
dsTopics = append(
196+
dsTopics,
197+
&DSTopic{
198+
Id: i,
199+
Slug: str,
200+
},
201+
)
202+
}
203+
return &LargePayloadEasyJson{
204+
Users: dsUsers,
205+
Topics: &DSTopicsList{
206+
Topics: dsTopics,
207+
MoreTopicsUrl: "http://test.com",
208+
},
209+
}
210+
}

0 commit comments

Comments
 (0)