Add a go test driver.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
d6826160c2
commit
d9c36b94f8
5 changed files with 52 additions and 1 deletions
2
go.mod
2
go.mod
|
|
@ -1,3 +1,5 @@
|
|||
module code.jmug.me/jmug/sqlite-wasm
|
||||
|
||||
go 1.23.6
|
||||
|
||||
require github.com/tetratelabs/wazero v1.9.0
|
||||
|
|
|
|||
2
go.sum
Normal file
2
go.sum
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I=
|
||||
github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM=
|
||||
47
main.go
Normal file
47
main.go
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"github.com/tetratelabs/wazero"
|
||||
)
|
||||
|
||||
//go:embed testdata/zig-out/bin/addUpTo.wasm
|
||||
var addUpToWasm []byte
|
||||
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
|
||||
// Create a new WebAssembly Runtime.
|
||||
r := wazero.NewRuntimeWithConfig(ctx, wazero.NewRuntimeConfig().WithCloseOnContextDone(true))
|
||||
defer r.Close(ctx)
|
||||
|
||||
// Compile the Wasm binary once so that we can skip the entire compilation time during instantiation.
|
||||
compiledWasm, err := r.CompileModule(ctx, addUpToWasm)
|
||||
if err != nil {
|
||||
log.Panicf("failed to compile Wasm binary: %v", err)
|
||||
}
|
||||
|
||||
start := time.Now()
|
||||
for range 1000 {
|
||||
// Instantiate a new Wasm module from the already compiled `compiledWasm`.
|
||||
instance, err := r.InstantiateModule(ctx, compiledWasm, wazero.NewModuleConfig().WithName(""))
|
||||
if err != nil {
|
||||
log.Panicf("failed to instantiate %v", err)
|
||||
}
|
||||
|
||||
f := instance.ExportedFunction("addUpTo")
|
||||
res, err := f.Call(ctx, 1000)
|
||||
if err != nil {
|
||||
log.Panicf("failed to call function: %v", err)
|
||||
} else {
|
||||
log.Printf("Got %d from wasm\n", res[0])
|
||||
}
|
||||
}
|
||||
end := time.Now()
|
||||
fmt.Printf("Took %v to run functions\n", end.Sub(start))
|
||||
}
|
||||
2
testdata/build.zig
vendored
2
testdata/build.zig
vendored
|
|
@ -11,7 +11,7 @@ pub fn build(b: *std.Build) void {
|
|||
const add_up_to_mod = b.createModule(.{
|
||||
.root_source_file = b.path("addupto.zig"),
|
||||
.target = wasmTarget,
|
||||
.optimize = .ReleaseFast,
|
||||
.optimize = .ReleaseSmall,
|
||||
});
|
||||
const add_up_to_native_mod = b.createModule(.{
|
||||
.root_source_file = b.path("addupto.zig"),
|
||||
|
|
|
|||
BIN
testdata/zig-out/bin/addUpTo.wasm
vendored
BIN
testdata/zig-out/bin/addUpTo.wasm
vendored
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue