|
@@ -78,44 +78,45 @@ func init() {
|
|
func Benchmark(b *testing.B) {
|
|
func Benchmark(b *testing.B) {
|
|
for _, ds := range datasets {
|
|
for _, ds := range datasets {
|
|
b.Run(ds.name, func(b *testing.B) {
|
|
b.Run(ds.name, func(b *testing.B) {
|
|
- counter := 0
|
|
|
|
- count := len(ds.marshaled)
|
|
|
|
b.Run("Unmarshal", func(b *testing.B) {
|
|
b.Run("Unmarshal", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for i := 0; i < b.N; i++ {
|
|
- payload := ds.marshaled[counter%count]
|
|
|
|
- out := ds.newMessage()
|
|
|
|
- if err := proto.Unmarshal(payload, out); err != nil {
|
|
|
|
- b.Fatalf("can't unmarshal message %d %v", counter%count, err)
|
|
|
|
|
|
+ for j, payload := range ds.marshaled {
|
|
|
|
+ out := ds.newMessage()
|
|
|
|
+ if err := proto.Unmarshal(payload, out); err != nil {
|
|
|
|
+ b.Fatalf("can't unmarshal message %d %v", j, err)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- counter++
|
|
|
|
}
|
|
}
|
|
})
|
|
})
|
|
b.Run("Marshal", func(b *testing.B) {
|
|
b.Run("Marshal", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for i := 0; i < b.N; i++ {
|
|
- m := ds.unmarshaled[counter%count]
|
|
|
|
- if _, err := proto.Marshal(m); err != nil {
|
|
|
|
- b.Fatalf("can't marshal message %d %+v: %v", counter%count, m, err)
|
|
|
|
|
|
+ for j, m := range ds.unmarshaled {
|
|
|
|
+ if _, err := proto.Marshal(m); err != nil {
|
|
|
|
+ b.Fatalf("can't marshal message %d %+v: %v", j, m, err)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- counter++
|
|
|
|
}
|
|
}
|
|
})
|
|
})
|
|
b.Run("Size", func(b *testing.B) {
|
|
b.Run("Size", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for i := 0; i < b.N; i++ {
|
|
- proto.Size(ds.unmarshaled[counter%count])
|
|
|
|
- counter++
|
|
|
|
|
|
+ for _, m := range ds.unmarshaled {
|
|
|
|
+ proto.Size(m)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
})
|
|
})
|
|
b.Run("Clone", func(b *testing.B) {
|
|
b.Run("Clone", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for i := 0; i < b.N; i++ {
|
|
- proto.Clone(ds.unmarshaled[counter%count])
|
|
|
|
- counter++
|
|
|
|
|
|
+ for _, m := range ds.unmarshaled {
|
|
|
|
+ proto.Clone(m)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
})
|
|
})
|
|
b.Run("Merge", func(b *testing.B) {
|
|
b.Run("Merge", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
for i := 0; i < b.N; i++ {
|
|
- out := ds.newMessage()
|
|
|
|
- proto.Merge(out, ds.unmarshaled[counter%count])
|
|
|
|
- counter++
|
|
|
|
|
|
+ for _, m := range ds.unmarshaled {
|
|
|
|
+ out := ds.newMessage()
|
|
|
|
+ proto.Merge(out, m)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
})
|
|
})
|
|
})
|
|
})
|