From 0ed4a285dcd5e15ca4de9ac3d5c46ee9223a21b6 Mon Sep 17 00:00:00 2001 From: mohanson Date: Thu, 11 Sep 2025 15:25:58 +0800 Subject: [PATCH] Add a benchmark example using the blake2b --- README.md | 1 + example/blake2b_iter.py | 12 + example/blake2b_iter/.cargo/config.toml | 2 + example/blake2b_iter/.gitignore | 1 + example/blake2b_iter/Cargo.lock | 16 + example/blake2b_iter/Cargo.toml | 10 + example/blake2b_iter/bin/blake2b_iter.wasm | Bin 0 -> 30691 bytes example/blake2b_iter/bin/blake2b_iter.wat | 11448 +++++++++++++++++++ example/blake2b_iter/src/lib.rs | 17 + 9 files changed, 11507 insertions(+) create mode 100644 example/blake2b_iter.py create mode 100644 example/blake2b_iter/.cargo/config.toml create mode 100644 example/blake2b_iter/.gitignore create mode 100644 example/blake2b_iter/Cargo.lock create mode 100644 example/blake2b_iter/Cargo.toml create mode 100755 example/blake2b_iter/bin/blake2b_iter.wasm create mode 100644 example/blake2b_iter/bin/blake2b_iter.wat create mode 100644 example/blake2b_iter/src/lib.rs diff --git a/README.md b/README.md index 28df8369..97d6dd90 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ A brief description for `example` | ------------------------- | -------------------------------------------------------------------- | | example/blake2b.py | Blake2b hashing algorithm | | example/blake2b_direct.py | Make the hash result returned as a value, not as an output parameter | +| example/blake2b_iter.py | A benchmarking example using the blake2b hash function | | example/fibonacci.py | Fibonacci, which contains loop and recursion | | example/fibonacci_env.py | Call python/native function in wasm | | example/pi.py | Calculate π using the agm algorithm | diff --git a/example/blake2b_iter.py b/example/blake2b_iter.py new file mode 100644 index 00000000..7c2dacae --- /dev/null +++ b/example/blake2b_iter.py @@ -0,0 +1,12 @@ +import pywasm +import time + +runtime = pywasm.core.Runtime() +m = runtime.instance_from_file('example/blake2b_iter/bin/blake2b_iter.wasm') + +tic = time.time() +print('main: benchmarks ...') +r = runtime.invocate(m, 'blake2b_iter', [2048]) +assert r[0] == 129 +end = time.time() +print('main: benchmarks end', end - tic) diff --git a/example/blake2b_iter/.cargo/config.toml b/example/blake2b_iter/.cargo/config.toml new file mode 100644 index 00000000..f4e8c002 --- /dev/null +++ b/example/blake2b_iter/.cargo/config.toml @@ -0,0 +1,2 @@ +[build] +target = "wasm32-unknown-unknown" diff --git a/example/blake2b_iter/.gitignore b/example/blake2b_iter/.gitignore new file mode 100644 index 00000000..ea8c4bf7 --- /dev/null +++ b/example/blake2b_iter/.gitignore @@ -0,0 +1 @@ +/target diff --git a/example/blake2b_iter/Cargo.lock b/example/blake2b_iter/Cargo.lock new file mode 100644 index 00000000..4c440858 --- /dev/null +++ b/example/blake2b_iter/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "blake2b_iter" +version = "1.0.0" +dependencies = [ + "blake2ya", +] + +[[package]] +name = "blake2ya" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e6144a361a49cc2a282f75205a8e8658dac95e99020acdd7c9831fc4baf01" diff --git a/example/blake2b_iter/Cargo.toml b/example/blake2b_iter/Cargo.toml new file mode 100644 index 00000000..623f0140 --- /dev/null +++ b/example/blake2b_iter/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "blake2b_iter" +version = "1.0.0" +edition = "2024" + +[lib] +crate-type = ["cdylib"] + +[dependencies] +blake2ya = "1.0" diff --git a/example/blake2b_iter/bin/blake2b_iter.wasm b/example/blake2b_iter/bin/blake2b_iter.wasm new file mode 100755 index 0000000000000000000000000000000000000000..ca1d2f095519077de2ffbe4ef1acc9c70fb52db4 GIT binary patch literal 30691 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 size + min_overhead\00\b8\01\10\00)\00\00\00\ac\04\00\00\09\00\00\00assertion failed: psize <= size + max_overhead\00\00\b8\01\10\00)\00\00\00\b2\04\00\00\0d\00\00\00memory allocation of bytes failed\00\00`\02\10\00\15\00\00\00u\02\10\00\0d\00\00\00library/std/src/alloc.rs\94\02\10\00\18\00\00\00d\01\00\00\09\00\00\00\03\00\00\00\0c\00\00\00\04\00\00\00\07\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\08\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\09\00\00\00\0a\00\00\00\0b\00\00\00\0c\00\00\00\0d\00\00\00\10\00\00\00\04\00\00\00\0e\00\00\00\0f\00\00\00\10\00\00\00\11\00\00\00capacity overflow\00\00\00\14\03\10\00\11\00\00\00)00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899range start index out of range for slice of length \00\00\00\f9\03\10\00\12\00\00\00\0b\04\10\00\22\00\00\00range end index @\04\10\00\10\00\00\00\0b\04\10\00\22\00\00\00slice index starts at but ends at \00`\04\10\00\16\00\00\00v\04\10\00\0d\00\00\00copy_from_slice: source slice length () does not match destination slice length (\00\00\00\94\04\10\00&\00\00\00\ba\04\10\00+\00\00\000\03\10\00\01\00\00\00")) diff --git a/example/blake2b_iter/src/lib.rs b/example/blake2b_iter/src/lib.rs new file mode 100644 index 00000000..6fe8c598 --- /dev/null +++ b/example/blake2b_iter/src/lib.rs @@ -0,0 +1,17 @@ +// This function runs the blake2b hash algorithm n times in a loop. +#[unsafe(no_mangle)] +pub extern "C" fn blake2b_iter(n: u32) -> u8 { + let mut data = vec![0x00; 64]; + let mut s = 0u8; + for _ in 0..n { + let mut p = blake2ya::blake2b_params(); + p.digest(64); + let mut h = blake2ya::blake2b(p); + h.update(&data); + h.digest(&mut data); + for u in data.iter() { + s = s.wrapping_add(*u); + } + } + s +}