From 01491fd98625edf4f82cad31150c877b20f9f016 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Mon, 1 Jul 2019 11:17:31 -0700 Subject: [PATCH] add instance creation benchmark --- examples/no_abi_simple_plugin.rs | 11 ++++ examples/no_abi_simple_plugin.wasm | Bin 0 -> 36284 bytes lib/runtime/Cargo.toml | 4 ++ lib/runtime/benches/many_instances.rs | 84 ++++++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 examples/no_abi_simple_plugin.rs create mode 100755 examples/no_abi_simple_plugin.wasm create mode 100644 lib/runtime/benches/many_instances.rs diff --git a/examples/no_abi_simple_plugin.rs b/examples/no_abi_simple_plugin.rs new file mode 100644 index 000000000..15ea39f98 --- /dev/null +++ b/examples/no_abi_simple_plugin.rs @@ -0,0 +1,11 @@ +extern "C" { + fn it_works() -> i32; +} + +#[no_mangle] +pub fn plugin_entrypoint(n: i32) -> i32 { + let result = unsafe { it_works() }; + result + n +} + +fn main() {} diff --git a/examples/no_abi_simple_plugin.wasm b/examples/no_abi_simple_plugin.wasm new file mode 100755 index 0000000000000000000000000000000000000000..84066e68f3263733c6224dc30489aee4e1af13ec GIT binary patch literal 36284 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 literal 0 HcmV?d00001 diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index e7026aff8..6616b54b9 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -42,3 +42,7 @@ singlepass = ["wasmer-singlepass-backend"] [[bench]] name = "nginx" harness = false + +[[bench]] +name = "many_instances" +harness = false diff --git a/lib/runtime/benches/many_instances.rs b/lib/runtime/benches/many_instances.rs new file mode 100644 index 000000000..e1c655c78 --- /dev/null +++ b/lib/runtime/benches/many_instances.rs @@ -0,0 +1,84 @@ +#[macro_use] +extern crate criterion; +use criterion::Criterion; +use tempfile::tempdir; +use wasmer_runtime::{ + cache::{Cache, FileSystemCache, WasmHash}, + compile, func, imports, instantiate, validate, ImportObject, +}; +use wasmer_runtime_core::vm::Ctx; + +fn it_works(_ctx: &mut Ctx) -> i32 { + 5 +} + +static SIMPLE_WASM: &[u8] = include_bytes!(concat!( + env!("CARGO_MANIFEST_DIR"), + "/../../examples/no_abi_simple_plugin.wasm" +)); + +fn hashing_benchmark(c: &mut Criterion) { + c.bench_function("HASH", |b| b.iter(|| WasmHash::generate(SIMPLE_WASM))); +} + +fn validate_benchmark(c: &mut Criterion) { + c.bench_function("validate", |b| b.iter(|| validate(SIMPLE_WASM))); +} + +fn compile_benchmark(c: &mut Criterion) { + c.bench_function("compile", |b| b.iter(|| compile(SIMPLE_WASM))); +} + +fn create_instance_benchmark(c: &mut Criterion) { + let imports = imports!( + "env" => { + "it_works" => func!(it_works), + }, + ); + c.bench_function("instantiate", move |b| { + b.iter(|| instantiate(&SIMPLE_WASM[..], &imports).unwrap()) + }); +} + +fn create_instance_from_cache_benchmark(c: &mut Criterion) { + let imports = imports!( + "env" => { + "it_works" => func!(it_works), + }, + ); + let tempdir = tempdir().unwrap(); + let mut cache = unsafe { + FileSystemCache::new(tempdir.path()).expect("unable to create file system cache") + }; + let module = compile(SIMPLE_WASM).unwrap(); + let hash = WasmHash::generate(SIMPLE_WASM); + cache + .store(hash, module) + .expect("unable to store into cache"); + c.bench_function("instantiate from cache", move |b| { + b.iter(|| { + let module = cache.load(hash).unwrap(); + module.instantiate(&imports).unwrap(); + }) + }); +} + +fn calling_fn_benchmark(c: &mut Criterion) { + let imports = imports!( + "env" => { + "it_works" => func!(it_works), + }, + ); + let instance = instantiate(SIMPLE_WASM, &imports).unwrap(); + c.bench_function("calling fn", move |b| { + let entry_point = instance.func::<(i32), i32>("plugin_entrypoint").unwrap(); + b.iter(|| entry_point.call(2).unwrap()) + }); +} + +criterion_group! { + name = instance_bench; + config = Criterion::default().sample_size(20); + targets = compile_benchmark, validate_benchmark, hashing_benchmark, create_instance_from_cache_benchmark, calling_fn_benchmark, create_instance_benchmark, +} +criterion_main!(instance_bench);