· via dev.to (home feed)
Bun 1.4 vs Node 24 and 26: benchmark shows up to 1.8x faster HTTP and far lower memory
Fresh single-machine benchmarks on dev.to put Bun 1.4.3 ahead of Node.js 24 and 26 on HTTP throughput, startup and memory use, while pointing to Bun's garbage collector as the weak spot on large heaps.

An independent benchmark published on dev.to measures Bun 1.4.3 against Node.js 24.22, the current LTS line, and Node.js 26.12, which the author notes moves into LTS on October 28. Bun wins most of the rounds — sometimes by wide margins — across HTTP throughput, memory use, startup time, installs and native addon compatibility, though the results also expose a clear weak spot in Bun's garbage collector on large heaps.
How the tests were run
The benchmark's author, who publishes as fabwaseem on dev.to, ran everything on a single 8-vCPU Intel Xeon VM with 15 GB of RAM, pinning each server process to two cores and generating load with oha on the remaining six cores at 64 concurrent connections. Identical application code ran on all three runtimes: a bare node:http server, a Hono 4.13 app, an Express 5.3 app and a Hono route that queries PostgreSQL 18 through a 10-connection pool. Every configuration was warmed up for four seconds, measured for ten, repeated three times and reported as the median, with hyperfine used for command-line timings. The author is candid about the limits of the setup: one machine, one configuration, and a Postgres instance competing for the same unpinned CPU.
Throughput and latency
On a Hono route serving a ten-item JSON payload, Bun handled 98,145 requests per second against 53,408 for Node 24 and 60,431 for Node 26 — a 1.84x and 1.62x lead. The advantage narrowed but persisted across the stack: 1.55x on Express 5, 1.42x on raw node:http and 1.48x on the Postgres-backed route, while Bun's own Bun.serve API pushed past 128,000 requests per second. Tail latency followed the same pattern, with p99 at 1.17 ms on Bun for the Hono route versus 2.10 ms on Node 24.
Two secondary findings stand out. Bun held roughly a 1.5x edge even with a real database query on every request, although the author cautions that a local, fast database flatters that figure and network round trips would narrow it. Separately, Node 26 ran 8–16% faster than Node 24 on four of the five HTTP tests, so a plain Node upgrade is the easiest performance gain available to teams staying put.
Memory, and one exception
Memory is where Bun's lead is widest. Under load the Hono app settled at 105 MB on both Node versions versus 36 MB on Bun, and on the Postgres route Node 24 grew to 206 MB against 61 MB for Bun. Idle footprints were similarly lopsided: 58 MB for a node:http server on Node 24 compared with 23 MB on Bun and 16 MB with Bun.serve.
A 600,000-entry in-memory cache test complicates the story. Bun started smaller but briefly peaked at 491 MB, above Node 24's 455 MB. The author ties this to a known issue: a Bun pull request from this year described garbage-collection behaviour that left allocation-heavy handlers running at about half of Node's speed with a 150 MB live set, and that pull request was closed without merging. Bun still finished that test 28% faster than Node 24, but the recommendation is to benchmark a real workload rather than extrapolate from toy servers.
Startup, TypeScript and installs
Bun starts dramatically faster: 3.3 ms for an empty script versus 28.5 ms on Node 24, and 3.8 ms versus 62.6 ms to execute a TypeScript file directly, with Node's WebAssembly-based type-stripping parser adding roughly 34 ms. According to the dev.to post, bun install ran 13 to 29 times faster than npm across the author's tests — a cold Next.js install took 1.15 seconds with bun against 15.4 seconds with npm — and bun run beat npm run at 3.1 ms versus 95.1 ms. Native addons including sharp, better-sqlite3, bcrypt and argon2 worked on all three runtimes.
What changed in Bun 1.4
Bun 1.4, which shipped on August 20, 2026, is the first release written in Rust rather than Zig. Per the release notes cited by the author, it reports itself as Node.js 26, incorporates 1,517 tests from the Node.js test suite, fixes more than 2,900 issues, cuts idle CPU fivefold and folds common dependencies into the runtime as built-ins such as Bun.Image, Bun.WebView, Bun.markdown, Bun.cron and Bun.Terminal. Upgrading is not free: stricter TLS verification, YAML 1.2 parsing and the end of automatic .env loading when Bun is invoked as node are listed as breaking changes, and Vercel makes 1.4 an explicit opt-in on its platform as a result.
Why it matters
The numbers turn runtime choice into an evidence-based decision. The pragmatic split the author suggests is to adopt bun as a package manager and script runner now, since it changes nothing at runtime; to consider Bun as the runtime for new, dependency-light APIs, CLIs and serverless functions, where the tests showed 1.4–1.8x throughput and 25–70% less memory under load; and to stay on Node for large services that rely on Node-specific APM tooling, long-running stability or exotic native addons — ideally on Node 26. The garbage-collector results are the one caveat that should give pause on heap-heavy workloads, and single-machine benchmarks always warrant replication before a migration.
- #bun
- #node-js
- #javascript
- #benchmarks
- #runtimes