diff options
Diffstat (limited to 'bench/ffi/deno.js')
-rw-r--r-- | bench/ffi/deno.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/bench/ffi/deno.js b/bench/ffi/deno.js new file mode 100644 index 000000000..ee6206108 --- /dev/null +++ b/bench/ffi/deno.js @@ -0,0 +1,27 @@ +import { run, bench, group } from "../node_modules/mitata/src/cli.mjs"; + +const extension = "darwin" !== Deno.build.os ? "so" : "dylib"; +const path = new URL( + "src/target/release/libffi_napi_bench." + extension, + import.meta.url +).pathname; + +const { + symbols: { ffi_noop, ffi_hash, ffi_string }, +} = Deno.dlopen(path, { + ffi_noop: { parameters: [], result: "void" }, + ffi_string: { parameters: [], result: "pointer" }, + ffi_hash: { parameters: ["pointer", "usize"], result: "u32" }, +}); + +const bytes = new Uint8Array(64); + +group("deno:ffi", () => { + bench("noop", () => ffi_noop()); + bench("hash", () => ffi_hash(bytes, bytes.byteLength)); + bench("c string", () => + new Deno.UnsafePointerView(ffi_string()).getCString() + ); +}); + +await run(); |