github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/object/bench_test.go (about) 1 package object 2 3 import ( 4 "math/rand" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func randString(n int) string { 11 x := make([]byte, n) 12 for i := range x { 13 x[i] = byte('a' + rand.Intn('z'-'a')) 14 } 15 return string(x) 16 } 17 18 func BenchmarkAttributesMarshal(b *testing.B) { 19 attrs := make([]Attribute, 50) 20 for i := range attrs { 21 attrs[i].key = SysAttributePrefix + randString(10) 22 attrs[i].val = randString(10) 23 } 24 raw := AttributesToGRPC(attrs) 25 require.Equal(b, len(raw), len(attrs)) 26 27 b.Run("marshal", func(b *testing.B) { 28 b.ReportAllocs() 29 for i := 0; i < b.N; i++ { 30 res := AttributesToGRPC(attrs) 31 if len(res) != len(raw) { 32 b.FailNow() 33 } 34 } 35 }) 36 b.Run("unmarshal", func(b *testing.B) { 37 b.ReportAllocs() 38 for i := 0; i < b.N; i++ { 39 res, err := AttributesFromGRPC(raw) 40 if err != nil || len(res) != len(raw) { 41 b.FailNow() 42 } 43 } 44 }) 45 }