forked from TrueCloudLab/restic
46 lines
936 B
Go
46 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)
|
|
}
|
|
}
|
|
}
|