github.com/expr-lang/expr@v1.16.9/patcher/value/bench_test.go (about) 1 package value 2 3 import ( 4 "testing" 5 6 "github.com/expr-lang/expr/internal/testify/require" 7 8 "github.com/expr-lang/expr" 9 "github.com/expr-lang/expr/vm" 10 ) 11 12 func Benchmark_valueAdd(b *testing.B) { 13 env := make(map[string]any) 14 env["ValueOne"] = &customInt{1} 15 env["ValueTwo"] = &customInt{2} 16 17 program, err := expr.Compile("ValueOne + ValueTwo", expr.Env(env), ValueGetter) 18 require.NoError(b, err) 19 20 var out any 21 v := vm.VM{} 22 23 b.ResetTimer() 24 for n := 0; n < b.N; n++ { 25 out, err = v.Run(program, env) 26 } 27 b.StopTimer() 28 29 require.NoError(b, err) 30 require.Equal(b, 3, out.(int)) 31 } 32 33 func Benchmark_valueUntypedAdd(b *testing.B) { 34 env := make(map[string]any) 35 env["ValueOne"] = &customUntypedInt{1} 36 env["ValueTwo"] = &customUntypedInt{2} 37 38 program, err := expr.Compile("ValueOne + ValueTwo", expr.Env(env), ValueGetter) 39 require.NoError(b, err) 40 41 var out any 42 v := vm.VM{} 43 44 b.ResetTimer() 45 for n := 0; n < b.N; n++ { 46 out, err = v.Run(program, env) 47 } 48 b.StopTimer() 49 50 require.NoError(b, err) 51 require.Equal(b, 3, out.(int)) 52 } 53 54 func Benchmark_valueTypedAdd(b *testing.B) { 55 env := make(map[string]any) 56 env["ValueOne"] = &customTypedInt{1} 57 env["ValueTwo"] = &customTypedInt{2} 58 59 program, err := expr.Compile("ValueOne + ValueTwo", expr.Env(env), ValueGetter) 60 require.NoError(b, err) 61 62 var out any 63 v := vm.VM{} 64 65 b.ResetTimer() 66 for n := 0; n < b.N; n++ { 67 out, err = v.Run(program, env) 68 } 69 b.StopTimer() 70 71 require.NoError(b, err) 72 require.Equal(b, 3, out.(int)) 73 }