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  }