aboutsummaryrefslogtreecommitdiff
path: root/bench/ffi/deno.js
blob: 8f4c76ca2e45da8b3dcca2ab845ae53c189a1cbc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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: ["buffer", "u32"], result: "u32" },
});

const bytes = new Uint8Array(64);

group("deno:ffi", () => {
  bench("noop", () => ffi_noop());
  bench("hash", () => ffi_hash(bytes, bytes.byteLength));
  bench("c string", () => Deno.UnsafePointerView.getCString(ffi_string()));
});

await run();