aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md24
-rw-r--r--bench/snippets/spawn-hugemem.mjs13
-rw-r--r--bench/snippets/spawn-hugemem.node.mjs13
3 files changed, 49 insertions, 1 deletions
diff --git a/README.md b/README.md
index c8659ffc5..6169e7b05 100644
--- a/README.md
+++ b/README.md
@@ -1973,7 +1973,29 @@ The interface for `Bun.serve` is based on what [Cloudflare Workers](https://deve
## `Bun.spawn` – spawn a process
-`Bun.spawn` lets you quickly spawn a process. Available as of Bun v0.2.0.
+`Bun.spawn` lets you quickly spawn a process.
+
+Available as of Bun v0.2.0, it tends to perform around 60% faster than child_process and scales better as your application uses more memory.
+
+```zig
+bun/bench/snippets on  main
+❯ bun spawn.mjs
+cpu: Apple M1 Max
+runtime: bun 0.2.0 (arm64-darwin)
+
+benchmark time (avg) (min … max) p75 p99 p995
+--------------------------------------------------------- -----------------------------
+spawnSync echo hi 888.14 µs/iter (821.83 µs … 1.2 ms) 905.92 µs 1 ms 1.03 ms
+
+bun/bench/snippets on  main
+❯ node spawn.node.mjs
+cpu: Apple M1 Max
+runtime: node v18.9.1 (arm64-darwin)
+
+benchmark time (avg) (min … max) p75 p99 p995
+--------------------------------------------------------- -----------------------------
+spawnSync echo hi 1.47 ms/iter (1.14 ms … 2.64 ms) 1.57 ms 2.37 ms 2.52 ms
+```
```ts
import { spawn } from "bun";
diff --git a/bench/snippets/spawn-hugemem.mjs b/bench/snippets/spawn-hugemem.mjs
new file mode 100644
index 000000000..d6de9b08c
--- /dev/null
+++ b/bench/snippets/spawn-hugemem.mjs
@@ -0,0 +1,13 @@
+import { spawnSync } from "bun";
+import { bench, run } from "mitata";
+
+var memory = new Uint8Array(128 * 1024 * 1024);
+memory.fill(10);
+// prevent memory from being garbage collected
+globalThis.memory = memory;
+
+bench("spawnSync echo hi", () => {
+ spawnSync({ cmd: ["echo", "hi"] });
+});
+
+await run();
diff --git a/bench/snippets/spawn-hugemem.node.mjs b/bench/snippets/spawn-hugemem.node.mjs
new file mode 100644
index 000000000..d2a728e60
--- /dev/null
+++ b/bench/snippets/spawn-hugemem.node.mjs
@@ -0,0 +1,13 @@
+import { spawnSync } from "child_process";
+import { bench, run } from "mitata";
+
+var memory = new Uint8Array(128 * 1024 * 1024);
+memory.fill(10);
+// prevent memory from being garbage collected
+globalThis.memory = memory;
+
+bench("spawnSync echo hi", () => {
+ spawnSync("echo", ["hi"], { encoding: "buffer", shell: false });
+});
+
+await run();