diff --git a/bench/bun.lockb b/bench/bun.lockb index 2b23aa48ae..5016112d98 100755 Binary files a/bench/bun.lockb and b/bench/bun.lockb differ diff --git a/bench/package.json b/bench/package.json index 3cafcffe82..1e9d5bc9bb 100644 --- a/bench/package.json +++ b/bench/package.json @@ -8,10 +8,12 @@ "braces": "^3.0.2", "esbuild": "^0.14.12", "eventemitter3": "^5.0.0", + "execa": "^8.0.1", "fast-glob": "3.3.1", "fdir": "^6.1.0", "mitata": "^0.1.6", - "string-width": "^7.0.0" + "string-width": "^7.0.0", + "zx": "^7.2.3" }, "scripts": { "ffi": "cd ffi && bun run deps && bun run build && bun run bench", diff --git a/bench/snippets/shell-spawn.mjs b/bench/snippets/shell-spawn.mjs new file mode 100644 index 0000000000..c7f6bb9593 --- /dev/null +++ b/bench/snippets/shell-spawn.mjs @@ -0,0 +1,38 @@ +import { $ as zx } from "zx"; +import { $ as execa$ } from "execa"; +import { bench, run, group } from "./runner.mjs"; + +const execa = execa$({ stdio: "ignore", cwd: import.meta.dirname }); + +group("echo hi", () => { + if (typeof Bun !== "undefined") + bench("$`echo hi`", async () => { + await Bun.$`echo hi`.quiet(); + }); + + bench("execa`echo hi`", async () => { + await execa`echo hi`; + }); + + bench("zx`echo hi`", async () => { + await zx`echo hi`.quiet(); + }); +}); + +group("ls .", () => { + if (typeof Bun !== "undefined") + bench("$`ls .`", async () => { + await Bun.$`ls .`.quiet(); + }); + + bench("execa`ls .`", async () => { + await execa`ls .`; + }); + + bench("zx`ls .`", async () => { + await zx`ls .`.quiet(); + }); +}); + + +await run();