]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
tpl/collections: Add BenchmarkWhereOps
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 28 Jul 2023 08:06:16 +0000 (10:06 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 28 Jul 2023 08:08:13 +0000 (10:08 +0200)
```
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

index 1b787daa213deeeb32ac6ff3f5e9d0f21dedf419..08d8963c5dc8daf0f9c8132de7888f1c63c3333e 100644 (file)
@@ -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")
+               }
+       })
+
+}