github.com/bananabytelabs/wazero@v0.0.0-20240105073314-54b22a776da8/internal/integration_test/vs/bench_factorial.go (about)

     1  package vs
     2  
     3  import (
     4  	_ "embed"
     5  	"testing"
     6  
     7  	"github.com/bananabytelabs/wazero/internal/testing/require"
     8  )
     9  
    10  var (
    11  	// catFS is an embedded filesystem limited to test.txt
    12  	//go:embed testdata/fac.wasm
    13  	factorialWasm   []byte
    14  	factorialParam  = uint64(30)
    15  	factorialResult = uint64(9682165104862298112)
    16  	factorialConfig *RuntimeConfig
    17  )
    18  
    19  func init() {
    20  	factorialConfig = &RuntimeConfig{
    21  		ModuleName: "math",
    22  		ModuleWasm: factorialWasm,
    23  		FuncNames:  []string{"fac-ssa"},
    24  	}
    25  }
    26  
    27  func factorialCall(m Module, _ int) error {
    28  	_, err := m.CallI64_I64(testCtx, "fac-ssa", factorialParam)
    29  	return err
    30  }
    31  
    32  func RunTestFactorial(t *testing.T, runtime func() Runtime) {
    33  	testCall(t, runtime, factorialConfig, testFactorialCall)
    34  }
    35  
    36  func testFactorialCall(t *testing.T, m Module, instantiation, iteration int) {
    37  	res, err := m.CallI64_I64(testCtx, "fac-ssa", factorialParam)
    38  	require.NoError(t, err, "instantiation[%d] iteration[%d] failed", instantiation, iteration)
    39  	require.Equal(t, factorialResult, res)
    40  }
    41  
    42  func RunTestBenchmarkFactorial_Call_CompilerFastest(t *testing.T, vsRuntime Runtime) {
    43  	runTestBenchmark_Call_CompilerFastest(t, factorialConfig, "Factorial", factorialCall, vsRuntime)
    44  }
    45  
    46  func RunBenchmarkFactorial(b *testing.B, runtime func() Runtime) {
    47  	benchmark(b, runtime, factorialConfig, factorialCall)
    48  }