aboutsummaryrefslogtreecommitdiff
path: root/bench/ffi/deno.js
diff options
context:
space:
mode:
Diffstat (limited to 'bench/ffi/deno.js')
-rw-r--r--bench/ffi/deno.js27
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();