From ef6e813ca8e185bfb9c629e76380647394cd296f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Fri, 28 Jul 2023 10:06:16 +0200 Subject: [PATCH] tpl/collections: Add BenchmarkWhereOps ``` BenchmarkWhereOps/eq-10 8702 120410 ns/op 52280 B/op 2515 allocs/op BenchmarkWhereOps/ne-10 9829 120759 ns/op 52280 B/op 2515 allocs/op BenchmarkWhereOps/like-10 6754 176377 ns/op 52917 B/op 2515 allocs/op ``` --- tpl/collections/where_test.go | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tpl/collections/where_test.go b/tpl/collections/where_test.go index 1b787daa2..08d8963c5 100644 --- a/tpl/collections/where_test.go +++ b/tpl/collections/where_test.go @@ -17,6 +17,7 @@ import ( "context" "fmt" "html/template" + "math/rand" "reflect" "strings" "testing" @@ -859,3 +860,46 @@ func TestEvaluateSubElem(t *testing.T) { } } } + +func BenchmarkWhereOps(b *testing.B) { + ns := newNs() + var seq []map[string]string + ctx := context.Background() + for i := 0; i < 500; i++ { + seq = append(seq, map[string]string{"foo": "bar"}) + } + for i := 0; i < 500; i++ { + seq = append(seq, map[string]string{"foo": "baz"}) + } + // Shuffle the sequence. + for i := range seq { + j := rand.Intn(i + 1) + seq[i], seq[j] = seq[j], seq[i] + } + //results, err = ns.Where(context.Background(), test.seq, test.key, test.op, test.match) + runOps := func(b *testing.B, op, match string) { + _, err := ns.Where(ctx, seq, "foo", op, match) + if err != nil { + b.Fatal(err) + } + } + + b.Run("eq", func(b *testing.B) { + for i := 0; i < b.N; i++ { + runOps(b, "eq", "bar") + } + }) + + b.Run("ne", func(b *testing.B) { + for i := 0; i < b.N; i++ { + runOps(b, "ne", "baz") + } + }) + + b.Run("like", func(b *testing.B) { + for i := 0; i < b.N; i++ { + runOps(b, "like", "^bar") + } + }) + +}