MCPcopy
hub / github.com/expr-lang/expr / BenchmarkChecker

Function BenchmarkChecker

checker/checker_bench_test.go:15–98  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

13)
14
15func BenchmarkChecker(b *testing.B) {
16 cases := []struct {
17 name, input string
18 }{
19 {"function calls", `
20func(
21 func(
22 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
23 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
24 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
25 ),
26 func(
27 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
28 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
29 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
30 ),
31 func(
32 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
33 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
34 func(func(a, 'a', 1, nil), func(a, 'a', 1, nil), func(a, 'a', 1, nil)),
35 )
36)
37 `},
38 {"unary and binary operations", `
39!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1 &&
40!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1 &&
41!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1 &&
42!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1 &&
43!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1 &&
44!b && !b || !b == !b && !b != !b || 1 < 1.0 && 0.1 > 1 || 0 <= 1.0 && 0.1 >= 1
45 `},
46 {"deep struct access", `
47a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.
48a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.
49a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.
50a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a
51 `},
52 }
53
54 f := func(params ...any) (any, error) { return nil, nil }
55 env := map[string]any{
56 "a": new(recursive),
57 "b": true,
58 "func": f,
59 }
60 config := conf.New(env)
61 expr.Function("func", f, f)(config)
62 expr.ConstExpr("func")(config)
63
64 for _, c := range cases {
65 batchSize := 100_000
66 if batchSize > b.N {
67 batchSize = b.N
68 }
69 trees := make([]*parser.Tree, 0, batchSize)
70 for i := 0; i < batchSize; i++ {
71 tree, err := parser.ParseWithConfig(c.input, config)
72 if err != nil {

Callers

nothing calls this directly

Calls 7

NewFunction · 0.92
FunctionFunction · 0.92
ConstExprFunction · 0.92
ParseWithConfigFunction · 0.92
CheckFunction · 0.92
invalidateTreesFunction · 0.85
RunMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…