From 398b2af4ea37be98093bdf7ac185a468c62c4aef Mon Sep 17 00:00:00 2001 From: Henry Gressmann Date: Tue, 12 Mar 2024 18:48:45 +0100 Subject: test: make tests work on more targets (#11) - Tests can now be run on more targets (Fixes #7) - Nightly version has been updated to fix broken builds in some cases (Fixes #8) --- crates/benchmarks/benches/fibonacci.rs | 76 ---------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 crates/benchmarks/benches/fibonacci.rs (limited to 'crates/benchmarks/benches/fibonacci.rs') diff --git a/crates/benchmarks/benches/fibonacci.rs b/crates/benchmarks/benches/fibonacci.rs deleted file mode 100644 index 8a4dab2..0000000 --- a/crates/benchmarks/benches/fibonacci.rs +++ /dev/null @@ -1,76 +0,0 @@ -mod util; -use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use util::wasm_to_twasm; - -fn run_tinywasm(twasm: &[u8], iterations: i32, name: &str) { - let (mut store, instance) = util::tinywasm(twasm); - let fib = instance.exported_func::(&store, name).expect("exported_func"); - fib.call(&mut store, iterations).expect("call"); -} - -fn run_wasmi(wasm: &[u8], iterations: i32, name: &str) { - let (module, mut store, linker) = util::wasmi(wasm); - let instance = linker.instantiate(&mut store, &module).expect("instantiate").start(&mut store).expect("start"); - let fib = instance.get_typed_func::(&mut store, name).expect("get_typed_func"); - fib.call(&mut store, iterations).expect("call"); -} - -fn run_wasmer(wasm: &[u8], iterations: i32, name: &str) { - use wasmer::*; - let compiler = wasmer::Singlepass::default(); - let mut store = Store::new(compiler); - let import_object = imports! {}; - let module = wasmer::Module::from_binary(&store, wasm).expect("wasmer::Module::from_binary"); - let instance = Instance::new(&mut store, &module, &import_object).expect("Instance::new"); - let fib = instance.exports.get_typed_function::(&store, name).expect("get_function"); - fib.call(&mut store, iterations).expect("call"); -} - -fn run_native(n: i32) -> i32 { - let mut sum = 0; - let mut last = 0; - let mut curr = 1; - for _i in 1..n { - sum = last + curr; - last = curr; - curr = sum; - } - sum -} - -fn run_native_recursive(n: i32) -> i32 { - if n <= 1 { - return n; - } - run_native_recursive(n - 1) + run_native_recursive(n - 2) -} - -const FIBONACCI: &[u8] = include_bytes!("../../../examples/rust/out/fibonacci.wasm"); -fn criterion_benchmark(c: &mut Criterion) { - let twasm = wasm_to_twasm(FIBONACCI); - - { - let mut group = c.benchmark_group("fibonacci"); - group.bench_function("native", |b| b.iter(|| run_native(black_box(60)))); - group.bench_function("tinywasm", |b| b.iter(|| run_tinywasm(&twasm, black_box(60), "fibonacci"))); - group.bench_function("wasmi", |b| b.iter(|| run_wasmi(FIBONACCI, black_box(60), "fibonacci"))); - group.bench_function("wasmer", |b| b.iter(|| run_wasmer(FIBONACCI, black_box(60), "fibonacci"))); - } - - { - let mut group = c.benchmark_group("fibonacci-recursive"); - group.measurement_time(std::time::Duration::from_secs(5)); - group.bench_function("native", |b| b.iter(|| run_native_recursive(black_box(26)))); - group.bench_function("tinywasm", |b| b.iter(|| run_tinywasm(&twasm, black_box(26), "fibonacci_recursive"))); - group.bench_function("wasmi", |b| b.iter(|| run_wasmi(FIBONACCI, black_box(26), "fibonacci_recursive"))); - group.bench_function("wasmer", |b| b.iter(|| run_wasmer(FIBONACCI, black_box(26), "fibonacci_recursive"))); - } -} - -criterion_group!( - name = benches; - config = Criterion::default().significance_level(0.1); - targets = criterion_benchmark -); - -criterion_main!(benches); -- cgit v1.3.1