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();
adbe698969453d9b2271e29c5?s=13&d=retro' width='13' height='13' alt='Gravatar' /> Aral Roca Gomez 1-1/+1 2023-10-17perf(bun-types): remove needless some call (#6550)Gravatar Mikhail 1-1/+1 2023-10-16fix(runtime): make some things more stable (partial jsc debug build) (#5881)Gravatar dave caruso 116-1446/+1830 2023-10-16fix(runtime): improve IPC reliability + organization pass on that code (#6475)Gravatar dave caruso 15-98/+266 2023-10-16Simplify getting Set of extentions (#4975)Gravatar Mikhail 1-3/+3 2023-10-16Fix formattingGravatar Ashcon Partovi 1-3/+1 2023-10-16fix(test): when tests run with --only the nested describe blocks `.on… (#5616)Gravatar Igor Shapiro 2-13/+45 2023-10-16perf(node:events): optimize `emit(...)` function (#5485)Gravatar Yannik Schröder 3-11/+132 2023-10-16fix: don't remove content-encoding header from header table (#5743)Gravatar Liz 2-2/+25 2023-10-16fix(sqlite) Insert .all() does not return an array #5872 (#5946)Gravatar Hugo Galan 2-7/+11 2023-10-16Fix formattingGravatar Ashcon Partovi 2-5/+4 2023-10-16Fix `Response.statusText` (#6151)Gravatar Chris Toshok 10-238/+269 2023-10-16fix-subprocess-argument-missing (#6407)Gravatar Nicolae-Rares Ailincai 4-2/+40 2023-10-16Add type parameter to `expect` (#6128)Gravatar Voldemat 1-3/+3 2023-10-16fix(node:worker_threads): ensure threadId property is exposed on worker_threa...Gravatar Jérôme Benoit 6-15/+75 2023-10-16Fix use before define bug in sqliteGravatar Ashcon Partovi 2-5/+5 2023-10-16fix(jest): fix toStrictEqual on same URLs (#6528)Gravatar João Alisson 2-13/+16 2023-10-16Fix `toHaveBeenCalled` having wrong error signatureGravatar Ashcon Partovi 1-2/+2 2023-10-16Fix formattingGravatar Ashcon Partovi 1-2/+1 2023-10-16Add `reusePort` to `Bun.serve` typesGravatar Ashcon Partovi 1-0/+9 2023-10-16Fix `request.url` having incorrect portGravatar Ashcon Partovi 4-1/+92 2023-10-16Remove uWebSockets header from Bun.serve responsesGravatar Ashcon Partovi 1-6/+6 2023-10-16Rename some testsGravatar Ashcon Partovi 3-0/+0 2023-10-16Fix #6467Gravatar Ashcon Partovi 2-3/+10 2023-10-16Update InternalModuleRegistryConstants.hGravatar Dylan Conway 1-3/+3 2023-10-16Development -> Contributing (#6538)Gravatar Colin McDonnell 2-1/+1 2023-10-14fix(net/tls) fix pg hang on end + hanging on query (#6487)Gravatar Ciro Spaciari 3-8/+36 2023-10-13fix installing dependencies that match workspace versions (#6494)Gravatar Dylan Conway 4-2/+64 2023-10-13fix lockfile struct padding (#6495)Gravatar Dylan Conway 3-3/+18