mirror of
https://github.com/Luzifer/repo-template.git
synced 2024-11-14 10:22:44 +00:00
47 lines
936 B
Go
47 lines
936 B
Go
|
package proto_test
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/golang/protobuf/proto"
|
||
|
ppb "github.com/golang/protobuf/proto/proto3_proto"
|
||
|
)
|
||
|
|
||
|
func marshalled() []byte {
|
||
|
m := &ppb.IntMaps{}
|
||
|
for i := 0; i < 1000; i++ {
|
||
|
m.Maps = append(m.Maps, &ppb.IntMap{
|
||
|
Rtt: map[int32]int32{1: 2},
|
||
|
})
|
||
|
}
|
||
|
b, err := proto.Marshal(m)
|
||
|
if err != nil {
|
||
|
panic(fmt.Sprintf("Can't marshal %+v: %v", m, err))
|
||
|
}
|
||
|
return b
|
||
|
}
|
||
|
|
||
|
func BenchmarkConcurrentMapUnmarshal(b *testing.B) {
|
||
|
in := marshalled()
|
||
|
b.RunParallel(func(pb *testing.PB) {
|
||
|
for pb.Next() {
|
||
|
var out ppb.IntMaps
|
||
|
if err := proto.Unmarshal(in, &out); err != nil {
|
||
|
b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func BenchmarkSequentialMapUnmarshal(b *testing.B) {
|
||
|
in := marshalled()
|
||
|
b.ResetTimer()
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
var out ppb.IntMaps
|
||
|
if err := proto.Unmarshal(in, &out); err != nil {
|
||
|
b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
|
||
|
}
|
||
|
}
|
||
|
}
|