mirror of
https://github.com/mii443/wasmer.git
synced 2025-08-23 00:45:32 +00:00
52 lines
1.5 KiB
Rust
52 lines
1.5 KiB
Rust
use criterion::{criterion_group, criterion_main, Criterion};
|
|
|
|
use wasmer::*;
|
|
|
|
static BENCHMARKS_ARTIFACTS_BASE_URL: &str = "https://pub-53a226d993e144159d6f8b993fe0cbf3.r2.dev";
|
|
|
|
pub fn serialize_deserialize(c: &mut Criterion, bytes: &[u8], name: &str) {
|
|
let engine = Engine::default();
|
|
|
|
c.bench_function(&format!("rkyv_from-binary_{name}"), |b| {
|
|
b.iter(|| {
|
|
let module = Module::from_binary(&engine, bytes);
|
|
assert!(module.is_ok());
|
|
drop(module);
|
|
})
|
|
});
|
|
}
|
|
|
|
pub fn serialize_deserialize_unchecked(c: &mut Criterion, bytes: &[u8], name: &str) {
|
|
let engine = Engine::default();
|
|
|
|
c.bench_function(&format!("rkyv_from-binary-unchecked_{name}"), |b| {
|
|
b.iter(|| unsafe {
|
|
let module = Module::from_binary_unchecked(&engine, bytes);
|
|
assert!(module.is_ok());
|
|
drop(module);
|
|
})
|
|
});
|
|
}
|
|
|
|
pub fn download_and_run(c: &mut Criterion) {
|
|
let modules = ["small", "medium", "large"];
|
|
|
|
for module in modules {
|
|
let bytes =
|
|
reqwest::blocking::get(format!("{BENCHMARKS_ARTIFACTS_BASE_URL}/{module}.wasm"))
|
|
.unwrap()
|
|
.bytes()
|
|
.unwrap();
|
|
serialize_deserialize(c, &bytes, module);
|
|
serialize_deserialize_unchecked(c, &bytes, module);
|
|
}
|
|
}
|
|
|
|
criterion_group!(
|
|
name = benches;
|
|
config = Criterion::default().sample_size(60);
|
|
targets = download_and_run
|
|
);
|
|
|
|
criterion_main!(benches);
|