diff --git a/benchmarks/decode_test.go b/benchmarks/decode_test.go index 5d46f9e..aad5683 100644 --- a/benchmarks/decode_test.go +++ b/benchmarks/decode_test.go @@ -7,7 +7,6 @@ import ( gojay "github.com/francoispqt/gojay" gojson "github.com/goccy/go-json" jsoniter "github.com/json-iterator/go" - easyjson "github.com/mailru/easyjson" ) func Benchmark_Decode_SmallStruct_EncodingJson(b *testing.B) { @@ -30,16 +29,6 @@ func Benchmark_Decode_SmallStruct_JsonIter(b *testing.B) { } } -func Benchmark_Decode_SmallStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - result := SmallPayload{} - if err := easyjson.Unmarshal(SmallFixture, &result); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Decode_SmallStruct_GoJay(b *testing.B) { b.ReportAllocs() for n := 0; n < b.N; n++ { @@ -100,16 +89,6 @@ func Benchmark_Decode_MediumStruct_JsonIter(b *testing.B) { } } -func Benchmark_Decode_MediumStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - result := MediumPayload{} - if err := easyjson.Unmarshal(MediumFixture, &result); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Decode_MediumStruct_GoJay(b *testing.B) { b.ReportAllocs() for n := 0; n < b.N; n++ { @@ -170,16 +149,6 @@ func Benchmark_Decode_LargeStruct_JsonIter(b *testing.B) { } } -func Benchmark_Decode_LargeStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - result := LargePayload{} - if err := easyjson.Unmarshal(LargeFixture, &result); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Decode_LargeStruct_GoJay(b *testing.B) { b.ReportAllocs() for n := 0; n < b.N; n++ { diff --git a/benchmarks/encode_test.go b/benchmarks/encode_test.go index 50e414e..ba1d69f 100644 --- a/benchmarks/encode_test.go +++ b/benchmarks/encode_test.go @@ -7,7 +7,6 @@ import ( gojay "github.com/francoispqt/gojay" gojson "github.com/goccy/go-json" jsoniter "github.com/json-iterator/go" - easyjson "github.com/mailru/easyjson" ) func Benchmark_Encode_SmallStruct_EncodingJson(b *testing.B) { @@ -29,15 +28,6 @@ func Benchmark_Encode_SmallStruct_JsonIter(b *testing.B) { } } -func Benchmark_Encode_SmallStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - if _, err := easyjson.Marshal(NewSmallPayload()); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Encode_SmallStruct_GoJay(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { @@ -75,15 +65,6 @@ func Benchmark_Encode_MediumStruct_JsonIter(b *testing.B) { } } -func Benchmark_Encode_MediumStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - if _, err := easyjson.Marshal(NewMediumPayload()); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Encode_MediumStruct_GoJay(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { @@ -121,15 +102,6 @@ func Benchmark_Encode_LargeStruct_JsonIter(b *testing.B) { } } -func Benchmark_Encode_LargeStruct_EasyJson(b *testing.B) { - b.ReportAllocs() - for i := 0; i < b.N; i++ { - if _, err := easyjson.Marshal(NewLargePayload()); err != nil { - b.Fatal(err) - } - } -} - func Benchmark_Encode_LargeStruct_GoJay(b *testing.B) { b.ReportAllocs() for i := 0; i < b.N; i++ { diff --git a/benchmarks/large_payload_easyjson.go b/benchmarks/large_payload_easyjson.go deleted file mode 100644 index ec5cb0d..0000000 --- a/benchmarks/large_payload_easyjson.go +++ /dev/null @@ -1,425 +0,0 @@ -// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT. -package benchmark - -import ( - json "encoding/json" - - easyjson "github.com/mailru/easyjson" - jlexer "github.com/mailru/easyjson/jlexer" - jwriter "github.com/mailru/easyjson/jwriter" -) - -// suppress unused package warning -var ( - _ *json.RawMessage - _ *jlexer.Lexer - _ *jwriter.Writer - _ easyjson.Marshaler -) - -func easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks(in *jlexer.Lexer, out *LargePayload) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Users": - if in.IsNull() { - in.Skip() - out.Users = nil - } else { - in.Delim('[') - if out.Users == nil { - if !in.IsDelim(']') { - out.Users = make(DSUsers, 0, 8) - } else { - out.Users = DSUsers{} - } - } else { - out.Users = (out.Users)[:0] - } - for !in.IsDelim(']') { - var v1 *DSUser - if in.IsNull() { - in.Skip() - v1 = nil - } else { - if v1 == nil { - v1 = new(DSUser) - } - (*v1).UnmarshalEasyJSON(in) - } - out.Users = append(out.Users, v1) - in.WantComma() - } - in.Delim(']') - } - case "Topics": - if in.IsNull() { - in.Skip() - out.Topics = nil - } else { - if out.Topics == nil { - out.Topics = new(DSTopicsList) - } - (*out.Topics).UnmarshalEasyJSON(in) - } - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks(out *jwriter.Writer, in LargePayload) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Users\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Users == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { - out.RawString("null") - } else { - out.RawByte('[') - for v2, v3 := range in.Users { - if v2 > 0 { - out.RawByte(',') - } - if v3 == nil { - out.RawString("null") - } else { - (*v3).MarshalEasyJSON(out) - } - } - out.RawByte(']') - } - } - { - const prefix string = ",\"Topics\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Topics == nil { - out.RawString("null") - } else { - (*in.Topics).MarshalEasyJSON(out) - } - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v LargePayload) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v LargePayload) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *LargePayload) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *LargePayload) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks(l, v) -} -func easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks1(in *jlexer.Lexer, out *DSUser) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Username": - out.Username = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks1(out *jwriter.Writer, in DSUser) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Username\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Username)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v DSUser) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks1(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v DSUser) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks1(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *DSUser) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks1(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *DSUser) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks1(l, v) -} -func easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks2(in *jlexer.Lexer, out *DSTopicsList) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Topics": - if in.IsNull() { - in.Skip() - out.Topics = nil - } else { - in.Delim('[') - if out.Topics == nil { - if !in.IsDelim(']') { - out.Topics = make(DSTopics, 0, 8) - } else { - out.Topics = DSTopics{} - } - } else { - out.Topics = (out.Topics)[:0] - } - for !in.IsDelim(']') { - var v4 *DSTopic - if in.IsNull() { - in.Skip() - v4 = nil - } else { - if v4 == nil { - v4 = new(DSTopic) - } - (*v4).UnmarshalEasyJSON(in) - } - out.Topics = append(out.Topics, v4) - in.WantComma() - } - in.Delim(']') - } - case "MoreTopicsUrl": - out.MoreTopicsUrl = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks2(out *jwriter.Writer, in DSTopicsList) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Topics\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Topics == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { - out.RawString("null") - } else { - out.RawByte('[') - for v5, v6 := range in.Topics { - if v5 > 0 { - out.RawByte(',') - } - if v6 == nil { - out.RawString("null") - } else { - (*v6).MarshalEasyJSON(out) - } - } - out.RawByte(']') - } - } - { - const prefix string = ",\"MoreTopicsUrl\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.MoreTopicsUrl)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v DSTopicsList) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks2(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v DSTopicsList) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks2(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *DSTopicsList) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks2(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *DSTopicsList) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks2(l, v) -} -func easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks3(in *jlexer.Lexer, out *DSTopic) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Id": - out.Id = int(in.Int()) - case "Slug": - out.Slug = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks3(out *jwriter.Writer, in DSTopic) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Id\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.Id)) - } - { - const prefix string = ",\"Slug\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Slug)) - } - out.RawByte('}') -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v DSTopic) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonCfe4e5f0EncodeGithubComFrancoispqtGojayBenchmarks3(w, v) -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *DSTopic) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonCfe4e5f0DecodeGithubComFrancoispqtGojayBenchmarks3(l, v) -} diff --git a/benchmarks/medium_payload_easyjson.go b/benchmarks/medium_payload_easyjson.go deleted file mode 100644 index b82191e..0000000 --- a/benchmarks/medium_payload_easyjson.go +++ /dev/null @@ -1,559 +0,0 @@ -// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT. -package benchmark - -import ( - json "encoding/json" - - easyjson "github.com/mailru/easyjson" - jlexer "github.com/mailru/easyjson/jlexer" - jwriter "github.com/mailru/easyjson/jwriter" -) - -// suppress unused package warning -var ( - _ *json.RawMessage - _ *jlexer.Lexer - _ *jwriter.Writer - _ easyjson.Marshaler -) - -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks(in *jlexer.Lexer, out *MediumPayload) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "person": - if in.IsNull() { - in.Skip() - out.Person = nil - } else { - if out.Person == nil { - out.Person = new(CBPerson) - } - (*out.Person).UnmarshalEasyJSON(in) - } - case "company": - out.Company = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks(out *jwriter.Writer, in MediumPayload) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"person\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Person == nil { - out.RawString("null") - } else { - (*in.Person).MarshalEasyJSON(out) - } - } - { - const prefix string = ",\"company\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Company)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v MediumPayload) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v MediumPayload) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *MediumPayload) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *MediumPayload) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks(l, v) -} -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks1(in *jlexer.Lexer, out *CBPerson) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "name": - if in.IsNull() { - in.Skip() - out.Name = nil - } else { - if out.Name == nil { - out.Name = new(CBName) - } - (*out.Name).UnmarshalEasyJSON(in) - } - case "github": - if in.IsNull() { - in.Skip() - out.Github = nil - } else { - if out.Github == nil { - out.Github = new(CBGithub) - } - (*out.Github).UnmarshalEasyJSON(in) - } - case "Gravatar": - if in.IsNull() { - in.Skip() - out.Gravatar = nil - } else { - if out.Gravatar == nil { - out.Gravatar = new(CBGravatar) - } - (*out.Gravatar).UnmarshalEasyJSON(in) - } - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks1(out *jwriter.Writer, in CBPerson) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"name\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Name == nil { - out.RawString("null") - } else { - (*in.Name).MarshalEasyJSON(out) - } - } - { - const prefix string = ",\"github\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Github == nil { - out.RawString("null") - } else { - (*in.Github).MarshalEasyJSON(out) - } - } - { - const prefix string = ",\"Gravatar\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Gravatar == nil { - out.RawString("null") - } else { - (*in.Gravatar).MarshalEasyJSON(out) - } - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v CBPerson) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks1(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v CBPerson) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks1(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *CBPerson) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks1(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *CBPerson) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks1(l, v) -} -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks2(in *jlexer.Lexer, out *CBName) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "fullName": - out.FullName = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks2(out *jwriter.Writer, in CBName) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"fullName\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.FullName)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v CBName) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks2(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v CBName) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks2(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *CBName) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks2(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *CBName) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks2(l, v) -} -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks3(in *jlexer.Lexer, out *CBGravatar) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Avatars": - if in.IsNull() { - in.Skip() - out.Avatars = nil - } else { - in.Delim('[') - if out.Avatars == nil { - if !in.IsDelim(']') { - out.Avatars = make(Avatars, 0, 8) - } else { - out.Avatars = Avatars{} - } - } else { - out.Avatars = (out.Avatars)[:0] - } - for !in.IsDelim(']') { - var v1 *CBAvatar - if in.IsNull() { - in.Skip() - v1 = nil - } else { - if v1 == nil { - v1 = new(CBAvatar) - } - (*v1).UnmarshalEasyJSON(in) - } - out.Avatars = append(out.Avatars, v1) - in.WantComma() - } - in.Delim(']') - } - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks3(out *jwriter.Writer, in CBGravatar) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Avatars\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - if in.Avatars == nil && (out.Flags&jwriter.NilSliceAsEmpty) == 0 { - out.RawString("null") - } else { - out.RawByte('[') - for v2, v3 := range in.Avatars { - if v2 > 0 { - out.RawByte(',') - } - if v3 == nil { - out.RawString("null") - } else { - (*v3).MarshalEasyJSON(out) - } - } - out.RawByte(']') - } - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v CBGravatar) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks3(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v CBGravatar) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks3(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *CBGravatar) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks3(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *CBGravatar) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks3(l, v) -} -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks4(in *jlexer.Lexer, out *CBGithub) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Followers": - out.Followers = int(in.Int()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks4(out *jwriter.Writer, in CBGithub) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Followers\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.Followers)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v CBGithub) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks4(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v CBGithub) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks4(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *CBGithub) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks4(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *CBGithub) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks4(l, v) -} -func easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks5(in *jlexer.Lexer, out *CBAvatar) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "Url": - out.Url = string(in.String()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks5(out *jwriter.Writer, in CBAvatar) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"Url\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Url)) - } - out.RawByte('}') -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v CBAvatar) MarshalEasyJSON(w *jwriter.Writer) { - easyjsonB0500db0EncodeGithubComFrancoispqtGojayBenchmarks5(w, v) -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *CBAvatar) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjsonB0500db0DecodeGithubComFrancoispqtGojayBenchmarks5(l, v) -} diff --git a/benchmarks/small_payload_easyjson.go b/benchmarks/small_payload_easyjson.go deleted file mode 100644 index 6b20c37..0000000 --- a/benchmarks/small_payload_easyjson.go +++ /dev/null @@ -1,186 +0,0 @@ -// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT. -package benchmark - -import ( - json "encoding/json" - - easyjson "github.com/mailru/easyjson" - jlexer "github.com/mailru/easyjson/jlexer" - jwriter "github.com/mailru/easyjson/jwriter" -) - -// suppress unused package warning -var ( - _ *json.RawMessage - _ *jlexer.Lexer - _ *jwriter.Writer - _ easyjson.Marshaler -) - -func easyjson890029d8DecodeGithubComFrancoispqtGojayBenchmarks(in *jlexer.Lexer, out *SmallPayload) { - isTopLevel := in.IsStart() - if in.IsNull() { - if isTopLevel { - in.Consumed() - } - in.Skip() - return - } - in.Delim('{') - for !in.IsDelim('}') { - key := in.UnsafeString() - in.WantColon() - if in.IsNull() { - in.Skip() - in.WantComma() - continue - } - switch key { - case "St": - out.St = int(in.Int()) - case "Sid": - out.Sid = int(in.Int()) - case "Tt": - out.Tt = string(in.String()) - case "Gr": - out.Gr = int(in.Int()) - case "Uuid": - out.Uuid = string(in.String()) - case "Ip": - out.Ip = string(in.String()) - case "Ua": - out.Ua = string(in.String()) - case "Tz": - out.Tz = int(in.Int()) - case "V": - out.V = int(in.Int()) - default: - in.SkipRecursive() - } - in.WantComma() - } - in.Delim('}') - if isTopLevel { - in.Consumed() - } -} -func easyjson890029d8EncodeGithubComFrancoispqtGojayBenchmarks(out *jwriter.Writer, in SmallPayload) { - out.RawByte('{') - first := true - _ = first - { - const prefix string = ",\"St\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.St)) - } - { - const prefix string = ",\"Sid\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.Sid)) - } - { - const prefix string = ",\"Tt\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Tt)) - } - { - const prefix string = ",\"Gr\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.Gr)) - } - { - const prefix string = ",\"Uuid\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Uuid)) - } - { - const prefix string = ",\"Ip\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Ip)) - } - { - const prefix string = ",\"Ua\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.String(string(in.Ua)) - } - { - const prefix string = ",\"Tz\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.Tz)) - } - { - const prefix string = ",\"V\":" - if first { - first = false - out.RawString(prefix[1:]) - } else { - out.RawString(prefix) - } - out.Int(int(in.V)) - } - out.RawByte('}') -} - -// MarshalJSON supports json.Marshaler interface -func (v SmallPayload) MarshalJSON() ([]byte, error) { - w := jwriter.Writer{} - easyjson890029d8EncodeGithubComFrancoispqtGojayBenchmarks(&w, v) - return w.Buffer.BuildBytes(), w.Error -} - -// MarshalEasyJSON supports easyjson.Marshaler interface -func (v SmallPayload) MarshalEasyJSON(w *jwriter.Writer) { - easyjson890029d8EncodeGithubComFrancoispqtGojayBenchmarks(w, v) -} - -// UnmarshalJSON supports json.Unmarshaler interface -func (v *SmallPayload) UnmarshalJSON(data []byte) error { - r := jlexer.Lexer{Data: data} - easyjson890029d8DecodeGithubComFrancoispqtGojayBenchmarks(&r, v) - return r.Error() -} - -// UnmarshalEasyJSON supports easyjson.Unmarshaler interface -func (v *SmallPayload) UnmarshalEasyJSON(l *jlexer.Lexer) { - easyjson890029d8DecodeGithubComFrancoispqtGojayBenchmarks(l, v) -}