go-json/benchmarks/decode_large_test.go

48 lines
916 B
Go
Raw Normal View History

2021-04-01 12:44:12 +03:00
package benchmark
import (
"encoding/json"
"io/ioutil"
"testing"
gojson "github.com/goccy/go-json"
)
type coordinate struct {
X float64 `json:"x"`
Y float64 `json:"y"`
Z float64 `json:"z"`
Name string `json:"name"`
Opts map[string]interface{} `json:"opts"`
}
type testStruct struct {
Coordinates []coordinate `json:"coordinates"`
}
func Benchmark_DecodeHugeDataGoJSON(b *testing.B) {
dat, err := ioutil.ReadFile("./bench.json")
if err != nil {
b.Fatal(err)
}
b.ReportAllocs()
jobj := testStruct{}
if err := gojson.Unmarshal(dat, &jobj); err != nil {
b.Fatal(err)
}
}
func Benchmark_DecodeHugeDataEncodingJSON(b *testing.B) {
dat, err := ioutil.ReadFile("./bench.json")
if err != nil {
b.Fatal(err)
}
b.ReportAllocs()
jobj := testStruct{}
if err := json.Unmarshal(dat, &jobj); err != nil {
b.Fatal(err)
}
}