From 8eb42a3b83f353aaa55c86a5bec4bab938398138 Mon Sep 17 00:00:00 2001 From: Achille Roussel Date: Wed, 4 Dec 2019 13:37:33 -0800 Subject: [PATCH] benchmark against json-iterator --- Makefile | 2 ++ go.mod | 2 ++ go.sum | 12 ++++++++++++ json/json_test.go | 15 +++++++++++++++ 4 files changed, 31 insertions(+) diff --git a/Makefile b/Makefile index a6198f1..815620b 100644 --- a/Makefile +++ b/Makefile @@ -22,8 +22,10 @@ $(benchcmp): # for more in-depth benchmarks, see the `benchmarks` directory. bench-simple: $(benchcmp) @go test -v -run '^$$' -bench /codeResponse -benchmem -benchtime 3s -cpu 1 ./json -package encoding/json | tee encoding-json.txt + @go test -v -run '^$$' -bench /codeResponse -benchmem -benchtime 3s -cpu 1 ./json -package github.com/json-iterator/go | tee json-iterator.txt @go test -v -run '^$$' -bench /codeResponse -benchmem -benchtime 3s -cpu 1 ./json | tee segmentio-encoding-json.txt benchcmp encoding-json.txt segmentio-encoding-json.txt + benchcmp json-iterator.txt segmentio-encoding-json.txt update-golang-test: $(golang.test.files) @echo "updated golang tests to $(golang.version)" diff --git a/go.mod b/go.mod index 2994cd4..9bfaf29 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/segmentio/encoding go 1.13 + +require github.com/json-iterator/go v1.1.8 diff --git a/go.sum b/go.sum index e69de29..5424d96 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,12 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/json/json_test.go b/json/json_test.go index 4539283..144d5c2 100644 --- a/json/json_test.go +++ b/json/json_test.go @@ -18,6 +18,8 @@ import ( "strings" "testing" "time" + + jsoniter "github.com/json-iterator/go" ) var ( @@ -46,6 +48,19 @@ func TestMain(m *testing.M) { unmarshal = json.Unmarshal + case "github.com/json-iterator/go": + buf := &buffer{} + enc := jsoniter.NewEncoder(buf) + enc.SetEscapeHTML(escapeHTML) + + marshal = func(b []byte, v interface{}) ([]byte, error) { + buf.data = b + err := enc.Encode(v) + return buf.data, err + } + + unmarshal = jsoniter.Unmarshal + default: flags := AppendFlags(0) if escapeHTML {