From 0dfde0290513fe18672bae7bcd5098cec7b16e70 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:02:30 -0300 Subject: [PATCH 01/31] baseline: Move to own pkg --- baseline.go => internal/serializers/baseline/baseline.go | 4 ++-- serialization_benchmarks_test.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) rename baseline.go => internal/serializers/baseline/baseline.go (96%) diff --git a/baseline.go b/internal/serializers/baseline/baseline.go similarity index 96% rename from baseline.go rename to internal/serializers/baseline/baseline.go index d802984..1d87803 100644 --- a/baseline.go +++ b/internal/serializers/baseline/baseline.go @@ -1,4 +1,4 @@ -package goserbench +package baseline import ( "encoding/binary" @@ -61,6 +61,6 @@ func (b *BaselineSerializer) Unmarshal(d []byte, o interface{}) error { return nil } -func NewBaselineSerializer() Serializer { +func NewBaselineSerializer() goserbench.Serializer { return &BaselineSerializer{b: make([]byte, 47)} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 71d184a..2c3207f 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/alecthomas/go_serialization_benchmarks/goserbench" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" ) var ( @@ -198,7 +199,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "baseline", URL: "", - New: NewBaselineSerializer, + New: baseline.NewBaselineSerializer, }, } From 72eebb895a69fe2bbc6d4cf6d30d96819e48cec0 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:05:24 -0300 Subject: [PATCH 02/31] mus: Move to own pkg --- mus.go => internal/serializers/mus/mus.go | 6 +++--- serialization_benchmarks_test.go | 5 +++-- structdef-mus.go | 10 ---------- 3 files changed, 6 insertions(+), 15 deletions(-) rename mus.go => internal/serializers/mus/mus.go (96%) delete mode 100644 structdef-mus.go diff --git a/mus.go b/internal/serializers/mus/mus.go similarity index 96% rename from mus.go rename to internal/serializers/mus/mus.go index 48ee0f2..364b72d 100644 --- a/mus.go +++ b/internal/serializers/mus/mus.go @@ -1,4 +1,4 @@ -package goserbench +package mus import ( "time" @@ -69,7 +69,7 @@ func (s MUSSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewMUSSerializer() Serializer { +func NewMUSSerializer() goserbench.Serializer { return MUSSerializer{} } @@ -131,6 +131,6 @@ func (s MUSUnsafeSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewMUSUnsafeSerializer() Serializer { +func NewMUSUnsafeSerializer() goserbench.Serializer { return MUSUnsafeSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 2c3207f..c419c4b 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -7,6 +7,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" ) var ( @@ -191,11 +192,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "mus", URL: "github.com/mus-format/mus-go", - New: NewMUSSerializer, + New: mus.NewMUSSerializer, }, { Name: "mus/unsafe", URL: "github.com/mus-format/mus-go", - New: NewMUSUnsafeSerializer, + New: mus.NewMUSUnsafeSerializer, }, { Name: "baseline", URL: "", diff --git a/structdef-mus.go b/structdef-mus.go deleted file mode 100644 index 5592b3e..0000000 --- a/structdef-mus.go +++ /dev/null @@ -1,10 +0,0 @@ -package goserbench - -type MUSA struct { - Name string - BirthDay int64 - Phone string - Siblings int32 - Spouse bool - Money float64 -} From 1c30e21cbd9c96cf19ebae4fca7344eaa6b3c58e Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:07:43 -0300 Subject: [PATCH 03/31] benc: Move to own pkg --- benc.go => internal/serializers/benc/benc.go | 6 +++--- serialization_benchmarks_test.go | 5 +++-- structdef-benc.go | 10 ---------- 3 files changed, 6 insertions(+), 15 deletions(-) rename benc.go => internal/serializers/benc/benc.go (96%) delete mode 100644 structdef-benc.go diff --git a/benc.go b/internal/serializers/benc/benc.go similarity index 96% rename from benc.go rename to internal/serializers/benc/benc.go index de82f31..8573857 100644 --- a/benc.go +++ b/internal/serializers/benc/benc.go @@ -1,4 +1,4 @@ -package goserbench +package benc import ( "time" @@ -61,7 +61,7 @@ func (s BENCSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewBENCSerializer() Serializer { +func NewBENCSerializer() goserbench.Serializer { return BENCSerializer{} } @@ -118,6 +118,6 @@ func (s BENCUnsafeSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewBENCUnsafeSerializer() Serializer { +func NewBENCUnsafeSerializer() goserbench.Serializer { return BENCUnsafeSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index c419c4b..d72b03b 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -7,6 +7,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" ) @@ -184,11 +185,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "benc", URL: "github.com/deneonet/benc", - New: NewBENCSerializer, + New: benc.NewBENCSerializer, }, { Name: "benc/usafe", URL: "github.com/deneonet/benc", - New: NewBENCUnsafeSerializer, + New: benc.NewBENCUnsafeSerializer, }, { Name: "mus", URL: "github.com/mus-format/mus-go", diff --git a/structdef-benc.go b/structdef-benc.go deleted file mode 100644 index 8e51614..0000000 --- a/structdef-benc.go +++ /dev/null @@ -1,10 +0,0 @@ -package goserbench - -type BENC struct { - Name string - BirthDay int64 - Phone string - Siblings int32 - Spouse bool - Money float64 -} From e2d37081b81660126b6230266c58b6d848af2807 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:09:54 -0300 Subject: [PATCH 04/31] fastjson: Move to own pkg --- fastjson.go => internal/serializers/fastjson/fastjson.go | 4 ++-- serialization_benchmarks_test.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) rename fastjson.go => internal/serializers/fastjson/fastjson.go (95%) diff --git a/fastjson.go b/internal/serializers/fastjson/fastjson.go similarity index 95% rename from fastjson.go rename to internal/serializers/fastjson/fastjson.go index 60a9d62..7ef2b5e 100644 --- a/fastjson.go +++ b/internal/serializers/fastjson/fastjson.go @@ -1,4 +1,4 @@ -package goserbench +package fastjson import ( "time" @@ -46,7 +46,7 @@ func (s *FastJSONSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return nil } -func NewFastJSONSerializer() Serializer { +func NewFastJSONSerializer() goserbench.Serializer { var arena fastjson.Arena return &FastJSONSerializer{ object: arena.NewObject(), diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index d72b03b..affc3b3 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -8,6 +8,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" ) @@ -181,7 +182,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "fastjson", URL: "github.com/valyala/fastjson", - New: NewFastJSONSerializer, + New: fastjson.NewFastJSONSerializer, }, { Name: "benc", URL: "github.com/deneonet/benc", From 25aba3580bdf17c602ff9c88975c9158f960723f Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:21:55 -0300 Subject: [PATCH 05/31] bebop_wellquite: Move to own pkg --- .../serializers/bebop_wellquite/bebop_wellquite.go | 4 ++-- .../serializers/bebop_wellquite/structdef-bebop-wellquite.bop | 0 .../serializers/bebop_wellquite/structdef-bebop-wellquite.go | 2 +- serialization_benchmarks_test.go | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) rename bebop_wellquite.go => internal/serializers/bebop_wellquite/bebop_wellquite.go (92%) rename structdef-bebop-wellquite.bop => internal/serializers/bebop_wellquite/structdef-bebop-wellquite.bop (100%) rename structdef-bebop-wellquite.go => internal/serializers/bebop_wellquite/structdef-bebop-wellquite.go (99%) diff --git a/bebop_wellquite.go b/internal/serializers/bebop_wellquite/bebop_wellquite.go similarity index 92% rename from bebop_wellquite.go rename to internal/serializers/bebop_wellquite/bebop_wellquite.go index a8f8b7d..42ac8a0 100644 --- a/bebop_wellquite.go +++ b/internal/serializers/bebop_wellquite/bebop_wellquite.go @@ -1,4 +1,4 @@ -package goserbench +package bebopwellquite import ( "time" @@ -44,7 +44,7 @@ func (s *BebopWellquiteSerializer) TimePrecision() time.Duration { return 100 * time.Nanosecond } -func NewBebopWellquiteSerializer() Serializer { +func NewBebopWellquiteSerializer() goserbench.Serializer { return &BebopWellquiteSerializer{ buf: make([]byte, 1024), } diff --git a/structdef-bebop-wellquite.bop b/internal/serializers/bebop_wellquite/structdef-bebop-wellquite.bop similarity index 100% rename from structdef-bebop-wellquite.bop rename to internal/serializers/bebop_wellquite/structdef-bebop-wellquite.bop diff --git a/structdef-bebop-wellquite.go b/internal/serializers/bebop_wellquite/structdef-bebop-wellquite.go similarity index 99% rename from structdef-bebop-wellquite.go rename to internal/serializers/bebop_wellquite/structdef-bebop-wellquite.go index 21bf6a1..33ed0f5 100644 --- a/structdef-bebop-wellquite.go +++ b/internal/serializers/bebop_wellquite/structdef-bebop-wellquite.go @@ -1,6 +1,6 @@ // Code generated by bebop; DO NOT EDIT. -package goserbench +package bebopwellquite import ( "io" diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index affc3b3..4f6cb55 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -7,6 +7,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" + bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" @@ -178,7 +179,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "wellquite/bebop", URL: "wellquite.org/bebop", - New: NewBebopWellquiteSerializer, + New: bebopwellquite.NewBebopWellquiteSerializer, }, { Name: "fastjson", URL: "github.com/valyala/fastjson", From f6926527ec813ac1401732cf511671b8b40d068a Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:30:45 -0300 Subject: [PATCH 06/31] bebop200sc: Move to own pkg --- .../serializers/bebop_200sc/bebop_200sc.go | 4 ++-- .../serializers/bebop_200sc/structdef-bebop-200sc.bop | 0 .../serializers/bebop_200sc/structdef-bebop-200sc.go | 2 +- serialization_benchmarks_test.go | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) rename bebop_200sc.go => internal/serializers/bebop_200sc/bebop_200sc.go (93%) rename structdef-bebop-200sc.bop => internal/serializers/bebop_200sc/structdef-bebop-200sc.bop (100%) rename structdef-bebop-200sc.go => internal/serializers/bebop_200sc/structdef-bebop-200sc.go (99%) diff --git a/bebop_200sc.go b/internal/serializers/bebop_200sc/bebop_200sc.go similarity index 93% rename from bebop_200sc.go rename to internal/serializers/bebop_200sc/bebop_200sc.go index ba29e15..d3d917a 100644 --- a/bebop_200sc.go +++ b/internal/serializers/bebop_200sc/bebop_200sc.go @@ -1,4 +1,4 @@ -package goserbench +package bebop200sc import ( "time" @@ -49,6 +49,6 @@ func (s *Bebop200ScSerializer) ForceUTC() bool { return true } -func NewBebop200ScSerializer() Serializer { +func NewBebop200ScSerializer() goserbench.Serializer { return &Bebop200ScSerializer{buf: make([]byte, 1024)} } diff --git a/structdef-bebop-200sc.bop b/internal/serializers/bebop_200sc/structdef-bebop-200sc.bop similarity index 100% rename from structdef-bebop-200sc.bop rename to internal/serializers/bebop_200sc/structdef-bebop-200sc.bop diff --git a/structdef-bebop-200sc.go b/internal/serializers/bebop_200sc/structdef-bebop-200sc.go similarity index 99% rename from structdef-bebop-200sc.go rename to internal/serializers/bebop_200sc/structdef-bebop-200sc.go index ffb2b44..1cb0938 100644 --- a/structdef-bebop-200sc.go +++ b/internal/serializers/bebop_200sc/structdef-bebop-200sc.go @@ -1,6 +1,6 @@ // Code generated by bebopc-go; DO NOT EDIT. -package goserbench +package bebop200sc import ( "github.com/200sc/bebop" diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 4f6cb55..076a532 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -7,6 +7,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" + bebop200sc "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_200sc" bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" @@ -175,7 +176,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "200sc/bebop", URL: "github.com/200sc/bebop", - New: NewBebop200ScSerializer, + New: bebop200sc.NewBebop200ScSerializer, }, { Name: "wellquite/bebop", URL: "wellquite.org/bebop", From c8e89d70acc46247f3918cb92f21a2ba66dbfab7 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:32:39 -0300 Subject: [PATCH 07/31] ssz: Move to own pkg --- ssz.go => internal/serializers/ssz/ssz.go | 4 ++-- serialization_benchmarks_test.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) rename ssz.go => internal/serializers/ssz/ssz.go (94%) diff --git a/ssz.go b/internal/serializers/ssz/ssz.go similarity index 94% rename from ssz.go rename to internal/serializers/ssz/ssz.go index 91b29c4..793e7fc 100644 --- a/ssz.go +++ b/internal/serializers/ssz/ssz.go @@ -1,4 +1,4 @@ -package goserbench +package ssz import ( "math" @@ -50,6 +50,6 @@ func (s *SSZSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewSSZSerializer() Serializer { +func NewSSZSerializer() goserbench.Serializer { return &SSZSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 076a532..3e0312b 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -12,6 +12,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" ) var ( @@ -172,7 +173,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "ssz", URL: "github.com/prysmaticlabs/go-ssz", - New: NewSSZSerializer, + New: ssz.NewSSZSerializer, }, { Name: "200sc/bebop", URL: "github.com/200sc/bebop", From f85edb0a609be65650b1eee800b038a56a6bae32 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:38:03 -0300 Subject: [PATCH 08/31] shamaton: Move to own pkg --- .../serializers/shamaton/shamaton.go | 10 +++--- internal/serializers/shamaton/structdef.go | 34 +++++++++++++++++++ .../shamaton/structdef_msgpackgen.go | 2 +- serialization_benchmarks_test.go | 9 ++--- 4 files changed, 45 insertions(+), 10 deletions(-) rename shamaton.go => internal/serializers/shamaton/shamaton.go (89%) create mode 100644 internal/serializers/shamaton/structdef.go rename structdef_msgpackgen.go => internal/serializers/shamaton/structdef_msgpackgen.go (99%) diff --git a/shamaton.go b/internal/serializers/shamaton/shamaton.go similarity index 89% rename from shamaton.go rename to internal/serializers/shamaton/shamaton.go index a923c53..de2e97d 100644 --- a/shamaton.go +++ b/internal/serializers/shamaton/shamaton.go @@ -1,4 +1,4 @@ -package goserbench +package shamaton import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" @@ -16,7 +16,7 @@ func (m ShamatonMapMsgpackSerializer) Unmarshal(d []byte, o interface{}) error { return shamaton.UnmarshalAsMap(d, o) } -func NewShamatonMapMsgpackSerializer() Serializer { +func NewShamatonMapMsgpackSerializer() goserbench.Serializer { return ShamatonMapMsgpackSerializer{} } @@ -30,7 +30,7 @@ func (m ShamatonArrayMsgpackSerializer) Unmarshal(d []byte, o interface{}) error return shamaton.UnmarshalAsArray(d, o) } -func NewShamatonArrayMsgPackSerializer() Serializer { +func NewShamatonArrayMsgPackSerializer() goserbench.Serializer { RegisterGeneratedResolver() return ShamatonArrayMsgpackSerializer{} } @@ -68,7 +68,7 @@ func (m ShamatonMapMsgpackgenSerializer) Unmarshal(d []byte, o interface{}) erro return nil } -func NewShamatonMapMsgPackgenSerializer() Serializer { +func NewShamatonMapMsgPackgenSerializer() goserbench.Serializer { RegisterGeneratedResolver() return ShamatonMapMsgpackgenSerializer{} } @@ -107,6 +107,6 @@ func (m ShamatonArrayMsgpackgenSerializer) Unmarshal(d []byte, o interface{}) er return nil } -func NewShamatonArrayMsgpackgenSerializer() Serializer { +func NewShamatonArrayMsgpackgenSerializer() goserbench.Serializer { return ShamatonArrayMsgpackgenSerializer{} } diff --git a/internal/serializers/shamaton/structdef.go b/internal/serializers/shamaton/structdef.go new file mode 100644 index 0000000..e83ee21 --- /dev/null +++ b/internal/serializers/shamaton/structdef.go @@ -0,0 +1,34 @@ +package shamaton + +import ( + "time" +) + +// This is a copy of the goserbench.SmallStruct because shamaton code generation +// adds methods to it. +type A struct { + Name string + BirthDay time.Time + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeA struct { + Name string + BirthDay int64 + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeNoStringNoFloatA struct { + Name []byte + BirthDay uint64 + Phone []byte + Siblings uint32 + Spouse bool + Money uint64 +} diff --git a/structdef_msgpackgen.go b/internal/serializers/shamaton/structdef_msgpackgen.go similarity index 99% rename from structdef_msgpackgen.go rename to internal/serializers/shamaton/structdef_msgpackgen.go index dae74a3..7655746 100644 --- a/structdef_msgpackgen.go +++ b/internal/serializers/shamaton/structdef_msgpackgen.go @@ -1,6 +1,6 @@ // Code generated by msgpackgen. DO NOT EDIT. -package goserbench +package shamaton import ( "fmt" diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 3e0312b..34363e4 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -12,6 +12,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" ) @@ -157,19 +158,19 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "shamaton/msgpack/map", URL: "github.com/shamaton/msgpack", - New: NewShamatonMapMsgpackSerializer, + New: shamaton.NewShamatonMapMsgpackSerializer, }, { Name: "shamaton/msgpack/array", URL: "github.com/shamaton/msgpack", - New: NewShamatonArrayMsgPackSerializer, + New: shamaton.NewShamatonArrayMsgPackSerializer, }, { Name: "shamaton/msgpackgen/map", URL: "github.com/shamaton/msgpack", - New: NewShamatonMapMsgPackgenSerializer, + New: shamaton.NewShamatonMapMsgPackgenSerializer, }, { Name: "shamaton/msgpackgen/array", URL: "github.com/shamaton/msgpack", - New: NewShamatonArrayMsgpackgenSerializer, + New: shamaton.NewShamatonArrayMsgpackgenSerializer, }, { Name: "ssz", URL: "github.com/prysmaticlabs/go-ssz", From 676b0bd05a31d4628b0957eaa92c582395861c0c Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:41:38 -0300 Subject: [PATCH 09/31] ikea: Move to own pkg --- ike.go => internal/serializers/ikea/ikea.go | 12 ++++++------ serialization_benchmarks_test.go | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) rename ike.go => internal/serializers/ikea/ikea.go (77%) diff --git a/ike.go b/internal/serializers/ikea/ikea.go similarity index 77% rename from ike.go rename to internal/serializers/ikea/ikea.go index c306069..c6069ba 100644 --- a/ike.go +++ b/internal/serializers/ikea/ikea.go @@ -1,4 +1,4 @@ -package goserbench +package ikea import ( "bytes" @@ -18,12 +18,12 @@ type IkeA struct { Money uint64 // NOTE: Ike does not support float64 - it needs to be converted to an int type. } -type IkeSerializer struct { +type IkeaSerializer struct { a IkeA buf *bytes.Buffer } -func (s *IkeSerializer) Marshal(o interface{}) (buf []byte, err error) { +func (s *IkeaSerializer) Marshal(o interface{}) (buf []byte, err error) { v := o.(*goserbench.SmallStruct) a := &s.a a.Name = v.Name @@ -41,7 +41,7 @@ func (s *IkeSerializer) Marshal(o interface{}) (buf []byte, err error) { return } -func (s *IkeSerializer) Unmarshal(bs []byte, o interface{}) (err error) { +func (s *IkeaSerializer) Unmarshal(bs []byte, o interface{}) (err error) { a := &s.a s.buf.Reset() s.buf.Write(bs) @@ -60,6 +60,6 @@ func (s *IkeSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewIkeSerializer() Serializer { - return &IkeSerializer{buf: bytes.NewBuffer(make([]byte, 0, 1024))} +func NewIkeaSerializer() goserbench.Serializer { + return &IkeaSerializer{buf: bytes.NewBuffer(make([]byte, 0, 1024))} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 34363e4..f3d0d30 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -11,6 +11,7 @@ import ( bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" @@ -154,7 +155,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "ikea", URL: "github.com/ikkerens/ikeapack", - New: NewIkeSerializer, + New: ikea.NewIkeaSerializer, }, { Name: "shamaton/msgpack/map", URL: "github.com/shamaton/msgpack", From a26ae551f2d5e697bc7ad1f627a732dd902a8235 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:47:46 -0300 Subject: [PATCH 10/31] avro: Move to own pkg --- .../serializers/avro/structdef_avro.go | 8 ++++---- serialization_benchmarks_test.go | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) rename structdef_avro.go => internal/serializers/avro/structdef_avro.go (96%) diff --git a/structdef_avro.go b/internal/serializers/avro/structdef_avro.go similarity index 96% rename from structdef_avro.go rename to internal/serializers/avro/structdef_avro.go index 24eb450..b03fe83 100644 --- a/structdef_avro.go +++ b/internal/serializers/avro/structdef_avro.go @@ -1,4 +1,4 @@ -package goserbench +package avro import ( "bytes" @@ -57,7 +57,7 @@ var avroSchemaJSON = ` } ` -func NewAvroA() Serializer { +func NewAvroA() goserbench.Serializer { rec, err := goavro.NewRecord(goavro.RecordSchema(avroSchemaJSON)) if err != nil { panic(err) @@ -139,7 +139,7 @@ func avroUnmarshal(d []byte, o interface{}, unmarshalFunc func([]byte) (interfac return nil } -func NewAvro2Txt() Serializer { +func NewAvro2Txt() goserbench.Serializer { codec, err := goavro2.NewCodec(avroSchemaJSON) if err != nil { panic(err) @@ -159,7 +159,7 @@ func (a *Avro2Txt) String() string { return "GoAvro2Text" } -func NewAvro2Bin() Serializer { +func NewAvro2Bin() goserbench.Serializer { codec, err := goavro2.NewCodec(avroSchemaJSON) if err != nil { panic(err) diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index f3d0d30..fe86597 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/alecthomas/go_serialization_benchmarks/goserbench" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/avro" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/baseline" bebop200sc "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_200sc" bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" @@ -143,15 +144,15 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "goavro", URL: "gopkg.in/linkedin/goavro.v1", - New: NewAvroA, + New: avro.NewAvroA, }, { Name: "avro2/text", URL: "github.com/linkedin/goavro", - New: NewAvro2Txt, + New: avro.NewAvro2Txt, }, { Name: "avro2/binary", URL: "github.com/linkedin/goavro", - New: NewAvro2Bin, + New: avro.NewAvro2Bin, }, { Name: "ikea", URL: "github.com/ikkerens/ikeapack", From 4f46ba13c7f36e5e4b568768561cb26b70e54f2f Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:50:28 -0300 Subject: [PATCH 11/31] xdr_calmh: Move to own pkg --- .../serializers/xdr_calmh/structdefxdr.go | 2 +- .../serializers/xdr_calmh/structdefxdr_generated.go | 2 +- xdr_calmh.go => internal/serializers/xdr_calmh/xdr_calmh.go | 4 ++-- serialization_benchmarks_test.go | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) rename structdefxdr.go => internal/serializers/xdr_calmh/structdefxdr.go (86%) rename structdefxdr_generated.go => internal/serializers/xdr_calmh/structdefxdr_generated.go (99%) rename xdr_calmh.go => internal/serializers/xdr_calmh/xdr_calmh.go (92%) diff --git a/structdefxdr.go b/internal/serializers/xdr_calmh/structdefxdr.go similarity index 86% rename from structdefxdr.go rename to internal/serializers/xdr_calmh/structdefxdr.go index 8754873..85243ac 100644 --- a/structdefxdr.go +++ b/internal/serializers/xdr_calmh/structdefxdr.go @@ -1,4 +1,4 @@ -package goserbench +package xdrcalmh type XDRA struct { Name string diff --git a/structdefxdr_generated.go b/internal/serializers/xdr_calmh/structdefxdr_generated.go similarity index 99% rename from structdefxdr_generated.go rename to internal/serializers/xdr_calmh/structdefxdr_generated.go index e8bf784..522f8ae 100644 --- a/structdefxdr_generated.go +++ b/internal/serializers/xdr_calmh/structdefxdr_generated.go @@ -2,7 +2,7 @@ // This file is automatically generated by genxdr. Do not edit. // ************************************************************ -package goserbench +package xdrcalmh import ( "github.com/calmh/xdr" diff --git a/xdr_calmh.go b/internal/serializers/xdr_calmh/xdr_calmh.go similarity index 92% rename from xdr_calmh.go rename to internal/serializers/xdr_calmh/xdr_calmh.go index a5a39bd..a2998f1 100644 --- a/xdr_calmh.go +++ b/internal/serializers/xdr_calmh/xdr_calmh.go @@ -1,4 +1,4 @@ -package goserbench +package xdrcalmh import ( "math" @@ -40,6 +40,6 @@ func (s *XDRCalmhSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewXDRCalmhSerializer() Serializer { +func NewXDRCalmhSerializer() goserbench.Serializer { return &XDRCalmhSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index fe86597..16cf902 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -16,6 +16,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" + xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" ) var ( @@ -140,7 +141,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "calmh/xdr", URL: "github.com/calmh/xdr", - New: NewXDRCalmhSerializer, + New: xdrcalmh.NewXDRCalmhSerializer, }, { Name: "goavro", URL: "gopkg.in/linkedin/goavro.v1", From 3cadeb89216ee63460392d2fe37f1342857ddb9a Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:52:22 -0300 Subject: [PATCH 12/31] gencode: Move to own pkg --- .../serializers/gencode/gencode-unsafe.schema | 0 .../serializers/gencode/gencode-unsafe.schema.gen.go | 2 +- gencode.go => internal/serializers/gencode/gencode.go | 6 +++--- .../serializers/gencode/gencode.schema | 0 .../serializers/gencode/gencode.schema.gen.go | 2 +- serialization_benchmarks_test.go | 5 +++-- 6 files changed, 8 insertions(+), 7 deletions(-) rename gencode-unsafe.schema => internal/serializers/gencode/gencode-unsafe.schema (100%) rename gencode-unsafe.schema.gen.go => internal/serializers/gencode/gencode-unsafe.schema.gen.go (99%) rename gencode.go => internal/serializers/gencode/gencode.go (92%) rename gencode.schema => internal/serializers/gencode/gencode.schema (100%) rename gencode.schema.gen.go => internal/serializers/gencode/gencode.schema.gen.go (99%) diff --git a/gencode-unsafe.schema b/internal/serializers/gencode/gencode-unsafe.schema similarity index 100% rename from gencode-unsafe.schema rename to internal/serializers/gencode/gencode-unsafe.schema diff --git a/gencode-unsafe.schema.gen.go b/internal/serializers/gencode/gencode-unsafe.schema.gen.go similarity index 99% rename from gencode-unsafe.schema.gen.go rename to internal/serializers/gencode/gencode-unsafe.schema.gen.go index 99bbc67..3ee832c 100644 --- a/gencode-unsafe.schema.gen.go +++ b/internal/serializers/gencode/gencode-unsafe.schema.gen.go @@ -1,4 +1,4 @@ -package goserbench +package gencode import ( "io" diff --git a/gencode.go b/internal/serializers/gencode/gencode.go similarity index 92% rename from gencode.go rename to internal/serializers/gencode/gencode.go index c47085d..94444cf 100644 --- a/gencode.go +++ b/internal/serializers/gencode/gencode.go @@ -1,4 +1,4 @@ -package goserbench +package gencode import ( "time" @@ -40,7 +40,7 @@ func (s *GencodeSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewGencodeSerializer() Serializer { +func NewGencodeSerializer() goserbench.Serializer { return &GencodeSerializer{buf: make([]byte, 0, 1024)} } @@ -78,6 +78,6 @@ func (s *GencodeUnsafeSerializer) Unmarshal(bs []byte, o interface{}) (err error return } -func NewGencodeUnsafeSerializer() Serializer { +func NewGencodeUnsafeSerializer() goserbench.Serializer { return &GencodeUnsafeSerializer{buf: make([]byte, 0, 1024)} } diff --git a/gencode.schema b/internal/serializers/gencode/gencode.schema similarity index 100% rename from gencode.schema rename to internal/serializers/gencode/gencode.schema diff --git a/gencode.schema.gen.go b/internal/serializers/gencode/gencode.schema.gen.go similarity index 99% rename from gencode.schema.gen.go rename to internal/serializers/gencode/gencode.schema.gen.go index 63c4264..ea7c88a 100644 --- a/gencode.schema.gen.go +++ b/internal/serializers/gencode/gencode.schema.gen.go @@ -1,4 +1,4 @@ -package goserbench +package gencode import ( "io" diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 16cf902..ac0d64d 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -12,6 +12,7 @@ import ( bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" @@ -133,11 +134,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "gencode", URL: "github.com/andyleap/gencode", - New: NewGencodeSerializer, + New: gencode.NewGencodeSerializer, }, { Name: "gencode/unsafe", URL: "github.com/andyleap/gencode", - New: NewGencodeUnsafeSerializer, + New: gencode.NewGencodeUnsafeSerializer, }, { Name: "calmh/xdr", URL: "github.com/calmh/xdr", From dce36ae8ae8b33415f035f684619df06e4e3fa15 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:56:08 -0300 Subject: [PATCH 13/31] colfer: Move to own pkg --- colfer.go => internal/serializers/colfer/colfer.go | 4 ++-- .../serializers/colfer/structdef-colfer.go | 2 +- serialization_benchmarks_test.go | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) rename colfer.go => internal/serializers/colfer/colfer.go (93%) rename structdef-colfer.go => internal/serializers/colfer/structdef-colfer.go (99%) diff --git a/colfer.go b/internal/serializers/colfer/colfer.go similarity index 93% rename from colfer.go rename to internal/serializers/colfer/colfer.go index dd3e84d..1535776 100644 --- a/colfer.go +++ b/internal/serializers/colfer/colfer.go @@ -1,4 +1,4 @@ -package goserbench +package colfer import "github.com/alecthomas/go_serialization_benchmarks/goserbench" @@ -43,6 +43,6 @@ func (s *ColferSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewColferSerializer() Serializer { +func NewColferSerializer() goserbench.Serializer { return &ColferSerializer{} } diff --git a/structdef-colfer.go b/internal/serializers/colfer/structdef-colfer.go similarity index 99% rename from structdef-colfer.go rename to internal/serializers/colfer/structdef-colfer.go index 81aa2b2..08de824 100644 --- a/structdef-colfer.go +++ b/internal/serializers/colfer/structdef-colfer.go @@ -1,4 +1,4 @@ -package goserbench +package colfer // Code generated by colf(1); DO NOT EDIT. // The compiler used schema file structdef.colf. diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index ac0d64d..daed5b0 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -11,6 +11,7 @@ import ( bebop200sc "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_200sc" bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" @@ -130,7 +131,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "colfer", URL: "github.com/pascaldekloe/colfer", - New: NewColferSerializer, + New: colfer.NewColferSerializer, }, { Name: "gencode", URL: "github.com/andyleap/gencode", From a162402225d615893c7ba0cd8475691ae963bd12 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:58:16 -0300 Subject: [PATCH 14/31] gogo: Move to own pkg --- .../serializers/gogo/gogoprotobuf.go | 6 +++--- .../serializers/gogo/structdef-gogo.pb.go | 2 +- .../serializers/gogo/structdef-gogo.proto | 2 +- serialization_benchmarks_test.go | 5 +++-- 4 files changed, 8 insertions(+), 7 deletions(-) rename gogoprotobuf.go => internal/serializers/gogo/gogoprotobuf.go (93%) rename structdef-gogo.pb.go => internal/serializers/gogo/structdef-gogo.pb.go (99%) rename structdef-gogo.proto => internal/serializers/gogo/structdef-gogo.proto (96%) diff --git a/gogoprotobuf.go b/internal/serializers/gogo/gogoprotobuf.go similarity index 93% rename from gogoprotobuf.go rename to internal/serializers/gogo/gogoprotobuf.go index 37a255d..9fb7232 100644 --- a/gogoprotobuf.go +++ b/internal/serializers/gogo/gogoprotobuf.go @@ -1,4 +1,4 @@ -package goserbench +package gogo import ( "bytes" @@ -51,14 +51,14 @@ func (s *GogoProtoSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewGogoProtoSerializer() Serializer { +func NewGogoProtoSerializer() goserbench.Serializer { return &GogoProtoSerializer{ marshaller: proto.Marshal, unmarshaller: proto.Unmarshal, } } -func NewGogoJsonSerializer() Serializer { +func NewGogoJsonSerializer() goserbench.Serializer { marshaller := &jsonpb.Marshaler{} buf := bytes.NewBuffer(make([]byte, 0, 1024)) diff --git a/structdef-gogo.pb.go b/internal/serializers/gogo/structdef-gogo.pb.go similarity index 99% rename from structdef-gogo.pb.go rename to internal/serializers/gogo/structdef-gogo.pb.go index 0938dcc..fd95cf1 100644 --- a/structdef-gogo.pb.go +++ b/internal/serializers/gogo/structdef-gogo.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: structdef-gogo.proto -package goserbench +package gogo import ( encoding_binary "encoding/binary" diff --git a/structdef-gogo.proto b/internal/serializers/gogo/structdef-gogo.proto similarity index 96% rename from structdef-gogo.proto rename to internal/serializers/gogo/structdef-gogo.proto index 79aeb4e..e720422 100644 --- a/structdef-gogo.proto +++ b/internal/serializers/gogo/structdef-gogo.proto @@ -2,7 +2,7 @@ syntax = "proto2"; package goserbench; -option go_package = "github.com/alecthomas/go_serialization_benchmarks;goserbench"; +option go_package = "github.com/alecthomas/go_serialization_benchmarks/internal/gogo;gogo"; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index daed5b0..9df83ee 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -14,6 +14,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" @@ -123,11 +124,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "gogo/protobuf", URL: "github.com/gogo/protobuf/proto", - New: NewGogoProtoSerializer, + New: gogo.NewGogoProtoSerializer, }, { Name: "gogo/jsonpb", URL: "github.com/gogo/protobuf/proto", - New: NewGogoJsonSerializer, + New: gogo.NewGogoJsonSerializer, }, { Name: "colfer", URL: "github.com/pascaldekloe/colfer", From 64bbdc6565ae8d02e4188af816fe9a071176b1b0 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 14:59:55 -0300 Subject: [PATCH 15/31] pulsar: Move to own pkg --- pulsar.go => internal/serializers/pulsar/pulsar.go | 4 ++-- .../serializers/pulsar/structdef-pulsar.proto | 4 ++-- .../serializers/pulsar/structdef-pulsar.pulsar.go | 2 +- serialization_benchmarks_test.go | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) rename pulsar.go => internal/serializers/pulsar/pulsar.go (93%) rename structdef-pulsar.proto => internal/serializers/pulsar/structdef-pulsar.proto (82%) rename structdef-pulsar.pulsar.go => internal/serializers/pulsar/structdef-pulsar.pulsar.go (99%) diff --git a/pulsar.go b/internal/serializers/pulsar/pulsar.go similarity index 93% rename from pulsar.go rename to internal/serializers/pulsar/pulsar.go index ef33a89..c274a42 100644 --- a/pulsar.go +++ b/internal/serializers/pulsar/pulsar.go @@ -1,4 +1,4 @@ -package goserbench +package pulsar import ( "time" @@ -48,6 +48,6 @@ func (s *PulsarSerializer) Unmarshal(bs []byte, o interface{}) (err error) { return } -func NewPulsarSerializer() Serializer { +func NewPulsarSerializer() goserbench.Serializer { return &PulsarSerializer{} } diff --git a/structdef-pulsar.proto b/internal/serializers/pulsar/structdef-pulsar.proto similarity index 82% rename from structdef-pulsar.proto rename to internal/serializers/pulsar/structdef-pulsar.proto index 1b69431..fa180b1 100644 --- a/structdef-pulsar.proto +++ b/internal/serializers/pulsar/structdef-pulsar.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package goserbench; +package pulsar; -option go_package = "github.com/alecthomas/go_serialization_benchmarks;goserbench"; +option go_package = "github.com/alecthomas/go_serialization_benchmarks/internal/pulsar;pulsar"; message PulsarBufA { string name = 1; diff --git a/structdef-pulsar.pulsar.go b/internal/serializers/pulsar/structdef-pulsar.pulsar.go similarity index 99% rename from structdef-pulsar.pulsar.go rename to internal/serializers/pulsar/structdef-pulsar.pulsar.go index b6c4126..00377b4 100644 --- a/structdef-pulsar.pulsar.go +++ b/internal/serializers/pulsar/structdef-pulsar.pulsar.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-pulsar. DO NOT EDIT. -package goserbench +package pulsar import ( binary "encoding/binary" diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 9df83ee..7c381f0 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -17,6 +17,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/pulsar" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" @@ -120,7 +121,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "pulsar", URL: "github.com/cosmos/cosmos-proto", - New: NewPulsarSerializer, + New: pulsar.NewPulsarSerializer, }, { Name: "gogo/protobuf", URL: "github.com/gogo/protobuf/proto", From c45bc8eff02d6733ea12e5702d518bdb565bf71c Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:01:43 -0300 Subject: [PATCH 16/31] protobuf_dedis: Move to own pkg --- .../serializers/protobuf_dedis/protobuf_dedis.go | 5 +++-- serialization_benchmarks_test.go | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) rename protobuf_dedis.go => internal/serializers/protobuf_dedis/protobuf_dedis.go (68%) diff --git a/protobuf_dedis.go b/internal/serializers/protobuf_dedis/protobuf_dedis.go similarity index 68% rename from protobuf_dedis.go rename to internal/serializers/protobuf_dedis/protobuf_dedis.go index eb01547..84fafb4 100644 --- a/protobuf_dedis.go +++ b/internal/serializers/protobuf_dedis/protobuf_dedis.go @@ -1,6 +1,7 @@ -package goserbench +package protobufdedis import ( + "github.com/alecthomas/go_serialization_benchmarks/goserbench" "go.dedis.ch/protobuf" ) @@ -14,6 +15,6 @@ func (m ProtobufSerializer) Unmarshal(d []byte, o interface{}) error { return protobuf.Decode(d, o) } -func NewProtobufSerializer() Serializer { +func NewProtobufSerializer() goserbench.Serializer { return ProtobufSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 7c381f0..26853b5 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -17,6 +17,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" + protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/pulsar" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" @@ -117,7 +118,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "dedis/protobuf", URL: "go.dedis.ch/protobuf", - New: NewProtobufSerializer, + New: protobufdedis.NewProtobufSerializer, }, { Name: "pulsar", URL: "github.com/cosmos/cosmos-proto", From c4b4013abbfeb84a0447e0804691557d2817cf9d Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:04:44 -0300 Subject: [PATCH 17/31] hprose: Move to own pkg --- hprose.go => internal/serializers/hprose/hprose.go | 4 ++-- hprose2.go => internal/serializers/hprose2/hprose2.go | 4 ++-- serialization_benchmarks_test.go | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) rename hprose.go => internal/serializers/hprose/hprose.go (95%) rename hprose2.go => internal/serializers/hprose2/hprose2.go (93%) diff --git a/hprose.go b/internal/serializers/hprose/hprose.go similarity index 95% rename from hprose.go rename to internal/serializers/hprose/hprose.go index 2af5d26..947356e 100644 --- a/hprose.go +++ b/internal/serializers/hprose/hprose.go @@ -1,4 +1,4 @@ -package goserbench +package hprose import ( "bytes" @@ -54,7 +54,7 @@ func (s *HproseSerializer) Unmarshal(d []byte, i interface{}) (err error) { return err } -func NewHproseSerializer() Serializer { +func NewHproseSerializer() goserbench.Serializer { buf := new(bytes.Buffer) reader := hprose.NewReader(buf, true) bufw := new(bytes.Buffer) diff --git a/hprose2.go b/internal/serializers/hprose2/hprose2.go similarity index 93% rename from hprose2.go rename to internal/serializers/hprose2/hprose2.go index 01eb309..94307f9 100644 --- a/hprose2.go +++ b/internal/serializers/hprose2/hprose2.go @@ -1,4 +1,4 @@ -package goserbench +package hprose2 import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" @@ -36,7 +36,7 @@ func (s Hprose2Serializer) Unmarshal(d []byte, i interface{}) error { return nil } -func NewHProse2Serializer() Serializer { +func NewHProse2Serializer() goserbench.Serializer { writer := hprose2.NewWriter(true) reader := hprose2.NewReader(nil, true) return Hprose2Serializer{writer: writer, reader: reader} diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 26853b5..dbd487c 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -15,6 +15,8 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose2" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" @@ -110,11 +112,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "hprose", URL: "github.com/hprose/hprose-go/io", - New: NewHproseSerializer, + New: hprose.NewHproseSerializer, }, { Name: "hprose2", URL: "github.com/hprose/hprose-golang/io", - New: NewHProse2Serializer, + New: hprose2.NewHProse2Serializer, }, { Name: "dedis/protobuf", URL: "go.dedis.ch/protobuf", From 212bd72fc4ce603c771b89743991c09be495b64a Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:07:10 -0300 Subject: [PATCH 18/31] capnproto: Move to own pkg --- capnproto.go => internal/serializers/capnproto/capnproto.go | 4 ++-- .../serializers/capnproto/structdef.capnp | 4 ++-- .../serializers/capnproto/structdef.capnp.go | 2 +- serialization_benchmarks_test.go | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) rename capnproto.go => internal/serializers/capnproto/capnproto.go (93%) rename structdef.capnp => internal/serializers/capnproto/structdef.capnp (69%) rename structdef.capnp.go => internal/serializers/capnproto/structdef.capnp.go (99%) diff --git a/capnproto.go b/internal/serializers/capnproto/capnproto.go similarity index 93% rename from capnproto.go rename to internal/serializers/capnproto/capnproto.go index 95474f6..053de47 100644 --- a/capnproto.go +++ b/internal/serializers/capnproto/capnproto.go @@ -1,4 +1,4 @@ -package goserbench +package capnproto import ( "bytes" @@ -41,6 +41,6 @@ func (x CapNProtoSerializer) Unmarshal(d []byte, i interface{}) error { return nil } -func NewCapNProtoSerializer() Serializer { +func NewCapNProtoSerializer() goserbench.Serializer { return CapNProtoSerializer{} } diff --git a/structdef.capnp b/internal/serializers/capnproto/structdef.capnp similarity index 69% rename from structdef.capnp rename to internal/serializers/capnproto/structdef.capnp index c069047..5475786 100644 --- a/structdef.capnp +++ b/internal/serializers/capnproto/structdef.capnp @@ -1,6 +1,6 @@ using Go = import "/github.com/glycerine/go-capnproto/go.capnp"; -$Go.package("goserbench"); -$Go.import("github.com/alecthomas/go_serialization_benchmarks"); +$Go.package("capnproto"); +$Go.import("github.com/alecthomas/go_serialization_benchmarks/internal/capnproto"); @0x99ea7c74456111bd; diff --git a/structdef.capnp.go b/internal/serializers/capnproto/structdef.capnp.go similarity index 99% rename from structdef.capnp.go rename to internal/serializers/capnproto/structdef.capnp.go index f4d8ca2..1035610 100644 --- a/structdef.capnp.go +++ b/internal/serializers/capnproto/structdef.capnp.go @@ -1,4 +1,4 @@ -package goserbench +package capnproto // AUTO GENERATED - DO NOT EDIT diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index dbd487c..f15805e 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -11,6 +11,7 @@ import ( bebop200sc "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_200sc" bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/capnproto" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" @@ -108,7 +109,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "capnproto", URL: "github.com/glycerine/go-capnproto", - New: NewCapNProtoSerializer, + New: capnproto.NewCapNProtoSerializer, }, { Name: "hprose", URL: "github.com/hprose/hprose-go/io", From 17103347494a11240a1f6c98ca28896112677aaa Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:09:23 -0300 Subject: [PATCH 19/31] flatbuffers: Move to own pkg --- .../serializers/flatbuffers/FlatBufferA.go | 2 +- .../serializers/flatbuffers/flatbuffers-structdef.fbs | 0 .../serializers/flatbuffers/flatbuffers.go | 4 ++-- serialization_benchmarks_test.go | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) rename FlatBufferA.go => internal/serializers/flatbuffers/FlatBufferA.go (99%) rename flatbuffers-structdef.fbs => internal/serializers/flatbuffers/flatbuffers-structdef.fbs (100%) rename flatbuffers.go => internal/serializers/flatbuffers/flatbuffers.go (94%) diff --git a/FlatBufferA.go b/internal/serializers/flatbuffers/FlatBufferA.go similarity index 99% rename from FlatBufferA.go rename to internal/serializers/flatbuffers/FlatBufferA.go index 89da3b6..9fac372 100644 --- a/FlatBufferA.go +++ b/internal/serializers/flatbuffers/FlatBufferA.go @@ -1,6 +1,6 @@ // Code generated by the FlatBuffers compiler. DO NOT EDIT. -package goserbench +package flatbuffers import ( flatbuffers "github.com/google/flatbuffers/go" diff --git a/flatbuffers-structdef.fbs b/internal/serializers/flatbuffers/flatbuffers-structdef.fbs similarity index 100% rename from flatbuffers-structdef.fbs rename to internal/serializers/flatbuffers/flatbuffers-structdef.fbs diff --git a/flatbuffers.go b/internal/serializers/flatbuffers/flatbuffers.go similarity index 94% rename from flatbuffers.go rename to internal/serializers/flatbuffers/flatbuffers.go index 044582e..6df2bc3 100644 --- a/flatbuffers.go +++ b/internal/serializers/flatbuffers/flatbuffers.go @@ -1,4 +1,4 @@ -package goserbench +package flatbuffers import ( "time" @@ -44,6 +44,6 @@ func (s *FlatBufferSerializer) Unmarshal(d []byte, i interface{}) error { return nil } -func NewFlatBuffersSerializer() Serializer { +func NewFlatBuffersSerializer() goserbench.Serializer { return &FlatBufferSerializer{flatbuffers.NewBuilder(0)} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index f15805e..9d32737 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -14,6 +14,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/capnproto" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/flatbuffers" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose" @@ -105,7 +106,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "flatbuffers", URL: "github.com/google/flatbuffers/go", - New: NewFlatBuffersSerializer, + New: flatbuffers.NewFlatBuffersSerializer, }, { Name: "capnproto", URL: "github.com/glycerine/go-capnproto", From a001518f5e4f5ac4b1768a04d91d31b858d0214b Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:11:18 -0300 Subject: [PATCH 20/31] binary: Move to own pkg --- .../serializers/binary_alecthomas/binary_alecthomas.go | 9 ++++++--- serialization_benchmarks_test.go | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) rename binary_alecthomas.go => internal/serializers/binary_alecthomas/binary_alecthomas.go (58%) diff --git a/binary_alecthomas.go b/internal/serializers/binary_alecthomas/binary_alecthomas.go similarity index 58% rename from binary_alecthomas.go rename to internal/serializers/binary_alecthomas/binary_alecthomas.go index 261ab7d..1ef4c42 100644 --- a/binary_alecthomas.go +++ b/internal/serializers/binary_alecthomas/binary_alecthomas.go @@ -1,6 +1,9 @@ -package goserbench +package binaryalecthomas -import "github.com/alecthomas/binary" +import ( + "github.com/alecthomas/binary" + "github.com/alecthomas/go_serialization_benchmarks/goserbench" +) type BinarySerializer struct{} @@ -12,6 +15,6 @@ func (b BinarySerializer) Unmarshal(d []byte, o interface{}) error { return binary.Unmarshal(d, o) } -func NewBinarySerializer() Serializer { +func NewBinarySerializer() goserbench.Serializer { return BinarySerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 9d32737..c3bfb8a 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -11,6 +11,7 @@ import ( bebop200sc "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_200sc" bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" + binaryalecthomas "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/binary_alecthomas" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/capnproto" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" @@ -102,7 +103,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "alecthomas/binary", URL: "github.com/alecthomas/binary", - New: NewBinarySerializer, + New: binaryalecthomas.NewBinarySerializer, }, { Name: "flatbuffers", URL: "github.com/google/flatbuffers/go", From 419a38ebb19d1fb3e8fa23ca459cfe6d5c816dce Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:12:44 -0300 Subject: [PATCH 21/31] sereal: Move to own pkg --- sereal.go => internal/serializers/sereal/sereal.go | 9 ++++++--- serialization_benchmarks_test.go | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) rename sereal.go => internal/serializers/sereal/sereal.go (60%) diff --git a/sereal.go b/internal/serializers/sereal/sereal.go similarity index 60% rename from sereal.go rename to internal/serializers/sereal/sereal.go index 54cc494..dda752f 100644 --- a/sereal.go +++ b/internal/serializers/sereal/sereal.go @@ -1,6 +1,9 @@ -package goserbench +package sereal -import "github.com/Sereal/Sereal/Go/sereal" +import ( + "github.com/Sereal/Sereal/Go/sereal" + "github.com/alecthomas/go_serialization_benchmarks/goserbench" +) type SerealSerializer struct{} @@ -13,6 +16,6 @@ func (s SerealSerializer) Unmarshal(d []byte, o interface{}) error { return err } -func NewSerealSerializer() Serializer { +func NewSerealSerializer() goserbench.Serializer { return SerealSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index c3bfb8a..099ec0e 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -24,6 +24,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/pulsar" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/sereal" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" @@ -99,7 +100,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "sereal", URL: "github.com/Sereal/Sereal/Go/sereal", - New: NewSerealSerializer, + New: sereal.NewSerealSerializer, }, { Name: "alecthomas/binary", URL: "github.com/alecthomas/binary", From e97049add3b6de46f249c0eca3b8a2e35932b7ee Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:14:10 -0300 Subject: [PATCH 22/31] ugorji: Move to own pkg --- ugorji.go => internal/serializers/ugorji/ugorji.go | 11 +++++++---- serialization_benchmarks_test.go | 5 +++-- 2 files changed, 10 insertions(+), 6 deletions(-) rename ugorji.go => internal/serializers/ugorji/ugorji.go (67%) diff --git a/ugorji.go b/internal/serializers/ugorji/ugorji.go similarity index 67% rename from ugorji.go rename to internal/serializers/ugorji/ugorji.go index 70d2017..2f6eafe 100644 --- a/ugorji.go +++ b/internal/serializers/ugorji/ugorji.go @@ -1,6 +1,9 @@ -package goserbench +package ugorji -import "github.com/ugorji/go/codec" +import ( + "github.com/alecthomas/go_serialization_benchmarks/goserbench" + "github.com/ugorji/go/codec" +) type UgorjiCodecSerializer struct { codec.Handle @@ -15,11 +18,11 @@ func (u *UgorjiCodecSerializer) Unmarshal(d []byte, o interface{}) error { return codec.NewDecoderBytes(d, u.Handle).Decode(o) } -func NewUgorjiCodecMsgPack() Serializer { +func NewUgorjiCodecMsgPack() goserbench.Serializer { return &UgorjiCodecSerializer{&codec.MsgpackHandle{}} } -func NewUgorjiCodecBinc() Serializer { +func NewUgorjiCodecBinc() goserbench.Serializer { h := &codec.BincHandle{} h.AsSymbols = 0 return &UgorjiCodecSerializer{h} diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 099ec0e..fd603f4 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -27,6 +27,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/sereal" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ugorji" xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" ) @@ -92,11 +93,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "ugorji/msgpack", URL: "github.com/ugorji/go/codec", - New: NewUgorjiCodecMsgPack, + New: ugorji.NewUgorjiCodecMsgPack, }, { Name: "ugorji/binc", URL: "github.com/ugorji/go/codec", - New: NewUgorjiCodecBinc, + New: ugorji.NewUgorjiCodecBinc, }, { Name: "sereal", URL: "github.com/Sereal/Sereal/Go/sereal", From c76bab31efdf0cafa78f2dfe6320ee6e77be4520 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:15:22 -0300 Subject: [PATCH 23/31] xdr_davecgh: Move to own pkg --- .../serializers/xdr_davecgh/xdr_davecgh.go | 9 ++++++--- serialization_benchmarks_test.go | 3 ++- 2 files changed, 8 insertions(+), 4 deletions(-) rename xdr_davecgh.go => internal/serializers/xdr_davecgh/xdr_davecgh.go (61%) diff --git a/xdr_davecgh.go b/internal/serializers/xdr_davecgh/xdr_davecgh.go similarity index 61% rename from xdr_davecgh.go rename to internal/serializers/xdr_davecgh/xdr_davecgh.go index 094e454..ab070ce 100644 --- a/xdr_davecgh.go +++ b/internal/serializers/xdr_davecgh/xdr_davecgh.go @@ -1,6 +1,9 @@ -package goserbench +package xdrdavecgh -import "github.com/davecgh/go-xdr/xdr" +import ( + "github.com/alecthomas/go_serialization_benchmarks/goserbench" + "github.com/davecgh/go-xdr/xdr" +) type XDRDavecghSerializer struct{} @@ -13,6 +16,6 @@ func (x XDRDavecghSerializer) Unmarshal(d []byte, o interface{}) error { return err } -func NewXDRDavecghSerializer() Serializer { +func NewXDRDavecghSerializer() goserbench.Serializer { return XDRDavecghSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index fd603f4..17f7f9a 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -29,6 +29,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ugorji" xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" + xdrdavecgh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_davecgh" ) var ( @@ -89,7 +90,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "davecgh/xdr", URL: "github.com/davecgh/go-xdr/xdr", - New: NewXDRDavecghSerializer, + New: xdrdavecgh.NewXDRDavecghSerializer, }, { Name: "ugorji/msgpack", URL: "github.com/ugorji/go/codec", From 1158df52f8c0cccc86df900ebd3af65ce6931d4a Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:17:48 -0300 Subject: [PATCH 24/31] stdlib: Move to own pkg --- gob.go => internal/serializers/stdlib/gob.go | 8 +++++--- json.go => internal/serializers/stdlib/json.go | 10 +++++++--- serialization_benchmarks_test.go | 5 +++-- 3 files changed, 15 insertions(+), 8 deletions(-) rename gob.go => internal/serializers/stdlib/gob.go (71%) rename json.go => internal/serializers/stdlib/json.go (61%) diff --git a/gob.go b/internal/serializers/stdlib/gob.go similarity index 71% rename from gob.go rename to internal/serializers/stdlib/gob.go index 1878df5..28455c5 100644 --- a/gob.go +++ b/internal/serializers/stdlib/gob.go @@ -1,8 +1,10 @@ -package goserbench +package stdlib import ( "bytes" "encoding/gob" + + "github.com/alecthomas/go_serialization_benchmarks/goserbench" ) type GobSerializer struct{} @@ -17,8 +19,8 @@ func (g *GobSerializer) Unmarshal(d []byte, o interface{}) error { return gob.NewDecoder(bytes.NewReader(d)).Decode(o) } -func NewGobSerializer() Serializer { +func NewGobSerializer() goserbench.Serializer { // registration required before first use - gob.Register(A{}) + gob.Register(goserbench.SmallStruct{}) return &GobSerializer{} } diff --git a/json.go b/internal/serializers/stdlib/json.go similarity index 61% rename from json.go rename to internal/serializers/stdlib/json.go index a02a0cc..1971d81 100644 --- a/json.go +++ b/internal/serializers/stdlib/json.go @@ -1,6 +1,10 @@ -package goserbench +package stdlib -import "encoding/json" +import ( + "encoding/json" + + "github.com/alecthomas/go_serialization_benchmarks/goserbench" +) type JsonSerializer struct{} @@ -12,6 +16,6 @@ func (j JsonSerializer) Unmarshal(d []byte, o interface{}) error { return json.Unmarshal(d, o) } -func NewJSONSerializer() Serializer { +func NewJSONSerializer() goserbench.Serializer { return JsonSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 17f7f9a..902f93d 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -27,6 +27,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/sereal" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/shamaton" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ssz" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/stdlib" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ugorji" xdrcalmh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_calmh" xdrdavecgh "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/xdr_davecgh" @@ -66,7 +67,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "json", URL: "pkg.go/dev/encoding/json", - New: NewJSONSerializer, + New: stdlib.NewJSONSerializer, }, { Name: "jsoniter", URL: "github.com/json-iterator/go", @@ -86,7 +87,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "gob", URL: "pkg.go.dev/encoding/gob", - New: NewGobSerializer, + New: stdlib.NewGobSerializer, }, { Name: "davecgh/xdr", URL: "github.com/davecgh/go-xdr/xdr", From 9fd6a2231965d5fb9a8d018ff77a119e33b580aa Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:19:56 -0300 Subject: [PATCH 25/31] bson: Move to own pkg --- bson.go => internal/serializers/bson/bson.go | 5 +++-- mongobson.go => internal/serializers/mongobson/mongobson.go | 5 +++-- serialization_benchmarks_test.go | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) rename bson.go => internal/serializers/bson/bson.go (75%) rename mongobson.go => internal/serializers/mongobson/mongobson.go (76%) diff --git a/bson.go b/internal/serializers/bson/bson.go similarity index 75% rename from bson.go rename to internal/serializers/bson/bson.go index 0906904..bc656db 100644 --- a/bson.go +++ b/internal/serializers/bson/bson.go @@ -1,8 +1,9 @@ -package goserbench +package bson import ( "time" + "github.com/alecthomas/go_serialization_benchmarks/goserbench" "gopkg.in/mgo.v2/bson" ) @@ -20,6 +21,6 @@ func (m BsonSerializer) Unmarshal(d []byte, o interface{}) error { return bson.Unmarshal(d, o) } -func NewBsonSerializer() Serializer { +func NewBsonSerializer() goserbench.Serializer { return BsonSerializer{} } diff --git a/mongobson.go b/internal/serializers/mongobson/mongobson.go similarity index 76% rename from mongobson.go rename to internal/serializers/mongobson/mongobson.go index 6b750ec..3293140 100644 --- a/mongobson.go +++ b/internal/serializers/mongobson/mongobson.go @@ -1,8 +1,9 @@ -package goserbench +package mongobson import ( "time" + "github.com/alecthomas/go_serialization_benchmarks/goserbench" mongobson "go.mongodb.org/mongo-driver/bson" ) @@ -20,6 +21,6 @@ func (m MongoBsonSerializer) Unmarshal(d []byte, o interface{}) error { return mongobson.Unmarshal(d, o) } -func NewMongoBSONSerializer() Serializer { +func NewMongoBSONSerializer() goserbench.Serializer { return MongoBsonSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 902f93d..92b4041 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -12,6 +12,7 @@ import ( bebopwellquite "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bebop_wellquite" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/benc" binaryalecthomas "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/binary_alecthomas" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/capnproto" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" @@ -21,6 +22,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose2" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mongobson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/pulsar" @@ -79,11 +81,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "bson", URL: "gopkg.in/mgo.v2/bson", - New: NewBsonSerializer, + New: bson.NewBsonSerializer, }, { Name: "mongobson", URL: "go.mongodb.org/mongo-driver/mongo", - New: NewMongoBSONSerializer, + New: mongobson.NewMongoBSONSerializer, }, { Name: "gob", URL: "pkg.go.dev/encoding/gob", From ae38e369d9e3ad2d823c26d8a0bf6a54759102f0 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:25:41 -0300 Subject: [PATCH 26/31] json: Move to own pkg --- .../serializers/easyjson/easyjson.go | 4 +-- internal/serializers/easyjson/structdef.go | 36 +++++++++++++++++++ .../easyjson/structdef_easyjson.go | 2 +- .../serializers/jsoniter/jsoniter.go | 5 +-- serialization_benchmarks_test.go | 6 ++-- 5 files changed, 46 insertions(+), 7 deletions(-) rename easyjson.go => internal/serializers/easyjson/easyjson.go (91%) create mode 100644 internal/serializers/easyjson/structdef.go rename structdef_easyjson.go => internal/serializers/easyjson/structdef_easyjson.go (99%) rename jsoniter.go => internal/serializers/jsoniter/jsoniter.go (77%) diff --git a/easyjson.go b/internal/serializers/easyjson/easyjson.go similarity index 91% rename from easyjson.go rename to internal/serializers/easyjson/easyjson.go index 596099b..ad60cfc 100644 --- a/easyjson.go +++ b/internal/serializers/easyjson/easyjson.go @@ -1,4 +1,4 @@ -package goserbench +package easyjson import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" @@ -38,6 +38,6 @@ func (m EasyJSONSerializer) Unmarshal(d []byte, o interface{}) error { return nil } -func NewEasyJSONSerializer() Serializer { +func NewEasyJSONSerializer() goserbench.Serializer { return EasyJSONSerializer{} } diff --git a/internal/serializers/easyjson/structdef.go b/internal/serializers/easyjson/structdef.go new file mode 100644 index 0000000..6eb4ee9 --- /dev/null +++ b/internal/serializers/easyjson/structdef.go @@ -0,0 +1,36 @@ +package easyjson + +import ( + "time" +) + +// This is a copy of the goserbench.SmallStruct because easyjson code generation +// adds methods to it. + +//easyjson:json +type A struct { + Name string + BirthDay time.Time + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeA struct { + Name string + BirthDay int64 + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeNoStringNoFloatA struct { + Name []byte + BirthDay uint64 + Phone []byte + Siblings uint32 + Spouse bool + Money uint64 +} diff --git a/structdef_easyjson.go b/internal/serializers/easyjson/structdef_easyjson.go similarity index 99% rename from structdef_easyjson.go rename to internal/serializers/easyjson/structdef_easyjson.go index d1e8c28..7781673 100644 --- a/structdef_easyjson.go +++ b/internal/serializers/easyjson/structdef_easyjson.go @@ -1,6 +1,6 @@ // Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT. -package goserbench +package easyjson import ( json "encoding/json" diff --git a/jsoniter.go b/internal/serializers/jsoniter/jsoniter.go similarity index 77% rename from jsoniter.go rename to internal/serializers/jsoniter/jsoniter.go index d182305..1dc84a7 100644 --- a/jsoniter.go +++ b/internal/serializers/jsoniter/jsoniter.go @@ -1,6 +1,7 @@ -package goserbench +package jsoniter import ( + "github.com/alecthomas/go_serialization_benchmarks/goserbench" jsoniter "github.com/json-iterator/go" ) @@ -22,6 +23,6 @@ func (j JsonIterSerializer) ReduceFloat64Precision() uint { return 6 } -func NewJSONIterSerializer() Serializer { +func NewJSONIterSerializer() goserbench.Serializer { return JsonIterSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 92b4041..3520689 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -15,6 +15,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/bson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/capnproto" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/colfer" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/easyjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/fastjson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/flatbuffers" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" @@ -22,6 +23,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose2" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/jsoniter" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mongobson" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" @@ -73,11 +75,11 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "jsoniter", URL: "github.com/json-iterator/go", - New: NewJSONIterSerializer, + New: jsoniter.NewJSONIterSerializer, }, { Name: "easyjson", URL: "github.com/mailru/easyjson", - New: NewEasyJSONSerializer, + New: easyjson.NewEasyJSONSerializer, }, { Name: "bson", URL: "gopkg.in/mgo.v2/bson", From d573598ea4b5d4d182991fd3b9743a34f64a4384 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:28:19 -0300 Subject: [PATCH 27/31] msgpack_vmihailenco: Move to own pkg --- .../serializers/msgpack_vmihailenco/msgpack_vmihailenco.go | 5 +++-- serialization_benchmarks_test.go | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) rename msgpack_vmihailenco.go => internal/serializers/msgpack_vmihailenco/msgpack_vmihailenco.go (71%) diff --git a/msgpack_vmihailenco.go b/internal/serializers/msgpack_vmihailenco/msgpack_vmihailenco.go similarity index 71% rename from msgpack_vmihailenco.go rename to internal/serializers/msgpack_vmihailenco/msgpack_vmihailenco.go index ab9e285..18908bf 100644 --- a/msgpack_vmihailenco.go +++ b/internal/serializers/msgpack_vmihailenco/msgpack_vmihailenco.go @@ -1,6 +1,7 @@ -package goserbench +package msgpackvmihailenco import ( + "github.com/alecthomas/go_serialization_benchmarks/goserbench" vmihailenco "github.com/vmihailenco/msgpack/v5" ) @@ -14,6 +15,6 @@ func (m VmihailencoMsgpackSerializer) Unmarshal(d []byte, o interface{}) error { return vmihailenco.Unmarshal(d, o) } -func NewVmihailencoMsgpackSerialier() Serializer { +func NewVmihailencoMsgpackSerialier() goserbench.Serializer { return VmihailencoMsgpackSerializer{} } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 3520689..67396ba 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -25,6 +25,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/jsoniter" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mongobson" + msgpackvmihailenco "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/msgpack_vmihailenco" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/pulsar" @@ -67,7 +68,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "msgpack", URL: "github.com/vmihailenco/msgpack", - New: NewVmihailencoMsgpackSerialier, + New: msgpackvmihailenco.NewVmihailencoMsgpackSerialier, }, { Name: "json", URL: "pkg.go/dev/encoding/json", From 396fc9788f3a04f4d27066f65ac75463588e1677 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:35:31 -0300 Subject: [PATCH 28/31] msgpack_tinylib: Move to own pkg --- .../serializers/msgpack_tinylib/msgp.go | 4 +-- .../serializers/msgpack_tinylib/msgp_gen.go | 2 +- .../serializers/msgpack_tinylib/structdef.go | 34 +++++++++++++++++++ serialization_benchmarks_test.go | 3 +- 4 files changed, 39 insertions(+), 4 deletions(-) rename msgp.go => internal/serializers/msgpack_tinylib/msgp.go (90%) rename msgp_gen.go => internal/serializers/msgpack_tinylib/msgp_gen.go (99%) create mode 100644 internal/serializers/msgpack_tinylib/structdef.go diff --git a/msgp.go b/internal/serializers/msgpack_tinylib/msgp.go similarity index 90% rename from msgp.go rename to internal/serializers/msgpack_tinylib/msgp.go index 4336a24..e1788fd 100644 --- a/msgp.go +++ b/internal/serializers/msgpack_tinylib/msgp.go @@ -1,4 +1,4 @@ -package goserbench +package msgpacktinylib import ( "github.com/alecthomas/go_serialization_benchmarks/goserbench" @@ -37,6 +37,6 @@ func (m MsgpSerializer) Unmarshal(d []byte, o interface{}) error { return err } -func NewMsgpSerializer() Serializer { +func NewMsgpSerializer() goserbench.Serializer { return MsgpSerializer{} } diff --git a/msgp_gen.go b/internal/serializers/msgpack_tinylib/msgp_gen.go similarity index 99% rename from msgp_gen.go rename to internal/serializers/msgpack_tinylib/msgp_gen.go index 9409ca5..5d3243d 100644 --- a/msgp_gen.go +++ b/internal/serializers/msgpack_tinylib/msgp_gen.go @@ -1,4 +1,4 @@ -package goserbench +package msgpacktinylib // Code generated by github.com/tinylib/msgp DO NOT EDIT. diff --git a/internal/serializers/msgpack_tinylib/structdef.go b/internal/serializers/msgpack_tinylib/structdef.go new file mode 100644 index 0000000..14596c9 --- /dev/null +++ b/internal/serializers/msgpack_tinylib/structdef.go @@ -0,0 +1,34 @@ +package msgpacktinylib + +import ( + "time" +) + +// This is a copy of the goserbench.SmallStruct because tinylib code generation +// adds methods to it. +type A struct { + Name string + BirthDay time.Time + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeA struct { + Name string + BirthDay int64 + Phone string + Siblings int + Spouse bool + Money float64 +} + +type NoTimeNoStringNoFloatA struct { + Name []byte + BirthDay uint64 + Phone []byte + Siblings uint32 + Spouse bool + Money uint64 +} diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 67396ba..9336189 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -25,6 +25,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/jsoniter" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mongobson" + msgpacktinylib "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/msgpack_tinylib" msgpackvmihailenco "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/msgpack_vmihailenco" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/mus" protobufdedis "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/protobuf_dedis" @@ -64,7 +65,7 @@ var benchmarkCases = []BenchmarkCase{ }, { Name: "msgp", URL: "github.com/tinylib/msgp", - New: NewMsgpSerializer, + New: msgpacktinylib.NewMsgpSerializer, }, { Name: "msgpack", URL: "github.com/vmihailenco/msgpack", From 92ed94bb4a3c7d67dd61b8de3972e64d8df1257d Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:37:05 -0300 Subject: [PATCH 29/31] gotiny: Move to own pkg --- gotiny.go => internal/serializers/gotiny/gotiny.go | 7 ++++--- serialization_benchmarks_test.go | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) rename gotiny.go => internal/serializers/gotiny/gotiny.go (68%) diff --git a/gotiny.go b/internal/serializers/gotiny/gotiny.go similarity index 68% rename from gotiny.go rename to internal/serializers/gotiny/gotiny.go index 17ca5fc..a85f735 100644 --- a/gotiny.go +++ b/internal/serializers/gotiny/gotiny.go @@ -1,8 +1,9 @@ -package goserbench +package gotiny import ( reflect "reflect" + "github.com/alecthomas/go_serialization_benchmarks/goserbench" "github.com/cybriq/gotiny" ) @@ -19,8 +20,8 @@ func (g GotinySerializer) Unmarshal(d []byte, o interface{}) error { return nil } -func NewGotinySerializer() Serializer { - ot := reflect.TypeOf(A{}) +func NewGotinySerializer() goserbench.Serializer { + ot := reflect.TypeOf(goserbench.SmallStruct{}) return GotinySerializer{ dec: gotiny.NewDecoderWithType(ot), } diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 9336189..2a1dbae 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -20,6 +20,7 @@ import ( "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/flatbuffers" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gencode" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gogo" + "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/gotiny" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/hprose2" "github.com/alecthomas/go_serialization_benchmarks/internal/serializers/ikea" @@ -61,7 +62,7 @@ var benchmarkCases = []BenchmarkCase{ { Name: "gotiny", URL: "github.com/niubaoshu/gotiny", - New: NewGotinySerializer, + New: gotiny.NewGotinySerializer, }, { Name: "msgp", URL: "github.com/tinylib/msgp", From 989e069b45a02e9a8b0110495aa0741d2c0792a6 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:37:55 -0300 Subject: [PATCH 30/31] fixup! colfer: Move to own pkg --- structdef.colf => internal/serializers/colfer/structdef.colf | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename structdef.colf => internal/serializers/colfer/structdef.colf (100%) diff --git a/structdef.colf b/internal/serializers/colfer/structdef.colf similarity index 100% rename from structdef.colf rename to internal/serializers/colfer/structdef.colf From 0da87d495e490049fa57e1daece814023880f510 Mon Sep 17 00:00:00 2001 From: Matheus Degiovani Date: Fri, 24 May 2024 15:39:33 -0300 Subject: [PATCH 31/31] main: Remove unnecessary cruft --- adapter_interface.go | 9 -- serialization_benchmarks_test.go | 2 +- structdef-enkoko.go | 87 -------------- structdef.go | 33 ------ structdef.pb.go | 192 ------------------------------- structdef.proto | 14 --- 6 files changed, 1 insertion(+), 336 deletions(-) delete mode 100644 adapter_interface.go delete mode 100644 structdef-enkoko.go delete mode 100644 structdef.go delete mode 100644 structdef.pb.go delete mode 100644 structdef.proto diff --git a/adapter_interface.go b/adapter_interface.go deleted file mode 100644 index 6b32bd4..0000000 --- a/adapter_interface.go +++ /dev/null @@ -1,9 +0,0 @@ -package goserbench - -import ( - "github.com/alecthomas/go_serialization_benchmarks/goserbench" -) - -// These are only used during the refactoring and will be removed in the future. - -type Serializer = goserbench.Serializer diff --git a/serialization_benchmarks_test.go b/serialization_benchmarks_test.go index 2a1dbae..f32a709 100644 --- a/serialization_benchmarks_test.go +++ b/serialization_benchmarks_test.go @@ -55,7 +55,7 @@ See README.md for details on running the benchmarks. type BenchmarkCase struct { Name string URL string - New func() Serializer + New func() goserbench.Serializer } var benchmarkCases = []BenchmarkCase{ diff --git a/structdef-enkoko.go b/structdef-enkoko.go deleted file mode 100644 index 5780853..0000000 --- a/structdef-enkoko.go +++ /dev/null @@ -1,87 +0,0 @@ -package goserbench - -import ( - "bytes" - "fmt" - "time" - - "github.com/mojura/enkodo" -) - -func newEnkodoSerializer() *enkodoSerializer { - var m enkodoSerializer - m.w = enkodo.NewWriter(bytes.NewBuffer(nil)) - return &m -} - -type enkodoSerializer struct { - w *enkodo.Writer -} - -func (m *enkodoSerializer) Marshal(value interface{}) (bs []byte, err error) { - encodee, ok := value.(enkodo.Encodee) - if !ok { - err = fmt.Errorf("invalid type, expected %t and received %t", encodee, value) - return - } - - if err = m.w.Encode(encodee); err != nil { - return - } - - bs = m.w.Bytes() - m.w.Reset() - return -} - -func (m *enkodoSerializer) Unmarshal(bs []byte, value interface{}) (err error) { - decodee, ok := value.(enkodo.Decodee) - if !ok { - err = fmt.Errorf("invalid type, expected %t and received %t", decodee, value) - return - } - return enkodo.Unmarshal(bs, decodee) -} - -// MarshalEnkodo is an encoding helper func -func (a *A) MarshalEnkodo(enc *enkodo.Encoder) (err error) { - enc.String(a.Name) - enc.Int64(a.BirthDay.UnixNano()) - enc.String(a.Phone) - enc.Int(a.Siblings) - enc.Bool(a.Spouse) - enc.Float64(a.Money) - return -} - -// UnmarshalEnkodo is an decoding helper func -func (a *A) UnmarshalEnkodo(dec *enkodo.Decoder) (err error) { - if a.Name, err = dec.String(); err != nil { - return - } - - var unixNano int64 - if unixNano, err = dec.Int64(); err != nil { - return - } - - a.BirthDay = time.Unix(0, unixNano) - - if a.Phone, err = dec.String(); err != nil { - return - } - - if a.Siblings, err = dec.Int(); err != nil { - return - } - - if a.Spouse, err = dec.Bool(); err != nil { - return - } - - if a.Money, err = dec.Float64(); err != nil { - return - } - - return -} diff --git a/structdef.go b/structdef.go deleted file mode 100644 index e1d240a..0000000 --- a/structdef.go +++ /dev/null @@ -1,33 +0,0 @@ -package goserbench - -import ( - "time" -) - -//easyjson:json -type A struct { - Name string - BirthDay time.Time - Phone string - Siblings int - Spouse bool - Money float64 -} - -type NoTimeA struct { - Name string - BirthDay int64 - Phone string - Siblings int - Spouse bool - Money float64 -} - -type NoTimeNoStringNoFloatA struct { - Name []byte - BirthDay uint64 - Phone []byte - Siblings uint32 - Spouse bool - Money uint64 -} diff --git a/structdef.pb.go b/structdef.pb.go deleted file mode 100644 index 2bc6817..0000000 --- a/structdef.pb.go +++ /dev/null @@ -1,192 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.28.1 -// protoc v3.21.12 -// source: structdef.proto - -package goserbench - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ProtoBufA struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - BirthDay *int64 `protobuf:"varint,2,req,name=birthDay" json:"birthDay,omitempty"` - Phone *string `protobuf:"bytes,3,req,name=phone" json:"phone,omitempty"` - Siblings *int32 `protobuf:"varint,4,req,name=siblings" json:"siblings,omitempty"` - Spouse *bool `protobuf:"varint,5,req,name=spouse" json:"spouse,omitempty"` - Money *float64 `protobuf:"fixed64,6,req,name=money" json:"money,omitempty"` -} - -func (x *ProtoBufA) Reset() { - *x = ProtoBufA{} - if protoimpl.UnsafeEnabled { - mi := &file_structdef_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProtoBufA) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProtoBufA) ProtoMessage() {} - -func (x *ProtoBufA) ProtoReflect() protoreflect.Message { - mi := &file_structdef_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProtoBufA.ProtoReflect.Descriptor instead. -func (*ProtoBufA) Descriptor() ([]byte, []int) { - return file_structdef_proto_rawDescGZIP(), []int{0} -} - -func (x *ProtoBufA) GetName() string { - if x != nil && x.Name != nil { - return *x.Name - } - return "" -} - -func (x *ProtoBufA) GetBirthDay() int64 { - if x != nil && x.BirthDay != nil { - return *x.BirthDay - } - return 0 -} - -func (x *ProtoBufA) GetPhone() string { - if x != nil && x.Phone != nil { - return *x.Phone - } - return "" -} - -func (x *ProtoBufA) GetSiblings() int32 { - if x != nil && x.Siblings != nil { - return *x.Siblings - } - return 0 -} - -func (x *ProtoBufA) GetSpouse() bool { - if x != nil && x.Spouse != nil { - return *x.Spouse - } - return false -} - -func (x *ProtoBufA) GetMoney() float64 { - if x != nil && x.Money != nil { - return *x.Money - } - return 0 -} - -var File_structdef_proto protoreflect.FileDescriptor - -var file_structdef_proto_rawDesc = []byte{ - 0x0a, 0x0f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x64, 0x65, 0x66, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x0a, 0x67, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x22, 0x9b, 0x01, - 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x75, 0x66, 0x41, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x44, 0x61, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, - 0x03, 0x52, 0x08, 0x62, 0x69, 0x72, 0x74, 0x68, 0x44, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, - 0x02, 0x28, 0x05, 0x52, 0x08, 0x73, 0x69, 0x62, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x70, 0x6f, 0x75, 0x73, 0x65, 0x18, 0x05, 0x20, 0x02, 0x28, 0x08, 0x52, 0x06, 0x73, - 0x70, 0x6f, 0x75, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x18, 0x06, - 0x20, 0x02, 0x28, 0x01, 0x52, 0x05, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x42, 0x3e, 0x5a, 0x3c, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x68, - 0x6f, 0x6d, 0x61, 0x73, 0x2f, 0x67, 0x6f, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, - 0x3b, 0x67, 0x6f, 0x73, 0x65, 0x72, 0x62, 0x65, 0x6e, 0x63, 0x68, -} - -var ( - file_structdef_proto_rawDescOnce sync.Once - file_structdef_proto_rawDescData = file_structdef_proto_rawDesc -) - -func file_structdef_proto_rawDescGZIP() []byte { - file_structdef_proto_rawDescOnce.Do(func() { - file_structdef_proto_rawDescData = protoimpl.X.CompressGZIP(file_structdef_proto_rawDescData) - }) - return file_structdef_proto_rawDescData -} - -var file_structdef_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_structdef_proto_goTypes = []interface{}{ - (*ProtoBufA)(nil), // 0: goserbench.ProtoBufA -} -var file_structdef_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_structdef_proto_init() } -func file_structdef_proto_init() { - if File_structdef_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_structdef_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtoBufA); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_structdef_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_structdef_proto_goTypes, - DependencyIndexes: file_structdef_proto_depIdxs, - MessageInfos: file_structdef_proto_msgTypes, - }.Build() - File_structdef_proto = out.File - file_structdef_proto_rawDesc = nil - file_structdef_proto_goTypes = nil - file_structdef_proto_depIdxs = nil -} diff --git a/structdef.proto b/structdef.proto deleted file mode 100644 index cc7b495..0000000 --- a/structdef.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto2"; - -package goserbench; - -option go_package = "github.com/alecthomas/go_serialization_benchmarks;goserbench"; - -message ProtoBufA { - required string name = 1; - required int64 birthDay = 2; - required string phone = 3; - required int32 siblings = 4; - required bool spouse = 5; - required double money = 6; -}