X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=bench_test.go;h=a4b2e13b752353ca88ca77c6c198c41f60bf4ece;hb=refs%2Ftags%2Fv0.2.0;hp=233f1280009c259c8324fd216127e597558f032b;hpb=7c17df52f1e8004e68bcc2d339be5d1347625aa6;p=ric-plt%2Fsdlgo.git diff --git a/bench_test.go b/bench_test.go index 233f128..a4b2e13 100644 --- a/bench_test.go +++ b/bench_test.go @@ -23,7 +23,7 @@ import ( "strings" "testing" - "gerrit.oran-osc.org/r/ric-plt/sdlgo" + "gerrit.o-ran-sc.org/r/ric-plt/sdlgo" ) type singleBenchmark struct { @@ -39,6 +39,12 @@ type multiBenchmark struct { valueSize int } +type setBenchmark struct { + key string + member string + memberCount int +} + func (bm singleBenchmark) String(oper string) string { return fmt.Sprintf("op = %s key=%d value=%d", oper, bm.keySize, bm.valueSize) } @@ -46,6 +52,10 @@ func (bm singleBenchmark) String(oper string) string { func (bm multiBenchmark) String(oper string) string { return fmt.Sprintf("op = %s keycnt=%d key=%d value=%d", oper, bm.keyCount, bm.keySize, bm.valueSize) } + +func (bm setBenchmark) String(oper string) string { + return fmt.Sprintf("op = %s, memberCount=%d", oper, bm.memberCount) +} func BenchmarkSet(b *testing.B) { benchmarks := []singleBenchmark{ {"a", 10, 64}, @@ -188,3 +198,32 @@ func BenchmarkMultiGet(b *testing.B) { }) } } + +func BenchmarkSetAddMember(b *testing.B) { + benchmarks := []setBenchmark{ + {"a", "x", 1}, + {"b", "x", 100}, + {"c", "x", 10000}, + {"d", "x", 1000000}, + } + + for _, bm := range benchmarks { + b.Run(bm.String("AddMember"), func(b *testing.B) { + sdl := sdlgo.NewSdlInstance("namespace", sdlgo.NewDatabase()) + members := make([]string, 0) + for i := 0; i < bm.memberCount; i++ { + member := bm.member + strconv.Itoa(i) + members = append(members, member) + } + b.ResetTimer() + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + err := sdl.AddMember(bm.key, members) + if err != nil { + b.Fatal(err) + } + } + }) + }) + } +}