I spent way too much time running these stupid benchmarks, but here's what you actually need to know about JavaScript runtime performance.
The HTTP Server Test That Made Me Question Everything
I threw together some Hello World servers to see if the performance claims were complete bullshit. Nothing fancy - just wanted to see what all the hype was about.
Node.js with Express: Started choking around 12-14K requests per second
Bun with native server: Hit like 50K+ req/s and kept going
Deno: Managed around 15-17K req/s
That's a massive difference, and I saw it consistently across multiple runs on my M2 MacBook with 16GB RAM. Your numbers will definitely be different depending on your hardware and network setup. Bun really is that much faster for HTTP - check TechEmpower benchmarks if you don't believe me.
But here's the thing: this only matters if you're actually serving tons of HTTP requests. Most apps spend their time waiting for database queries, not pumping out responses. That speed advantage disappears when your Postgres query takes 50ms.
CPU Tasks: Where JavaScriptCore Actually Shines
I threw together a stupid CPU test that sorts a bunch of random numbers - you know, the kind of thing that makes your laptop fan spin up.
Node.js: Took about 3.4 seconds
Bun: Finished in roughly half that time
Deno: Somewhere in between
JavaScriptCore (which Bun uses) starts fast and stays fast. V8 needs time to warm up but can be faster for long-running stuff. That's why Bun feels snappier for CLI tools and build scripts - things that run once and exit. Safari's engine optimization focuses on fast startup, while Chrome's approach prioritizes peak performance.
Memory Usage Reality Check
Bun seems to use less memory - maybe 20-30% less based on what I saw in htop, but I didn't do rigorous testing. Deno sits somewhere in the middle.
In practice, this means Bun might run better on cheap VPS instances, but unless you're really memory-constrained, it's not a huge deal. Memory optimization matters more for containerized deployments where you pay per MB.
The One Thing That Actually Changed My Daily Workflow
Package installation with Bun is stupidly fast. I'm talking npm takes 2+ minutes, Bun takes like 8 seconds for the same dependencies. It's written in Zig and optimized for speed, using modern package resolution algorithms.
This actually matters because waiting for npm install
is soul-crushing. My CI builds that used to take 5 minutes now finish in under 2 minutes with proper caching strategies.
TypeScript execution - both Bun and Deno just run .ts
files. No `ts-node` bullshit, no build steps. You run bun server.ts
and it works. This alone makes development way less annoying than Node.js's complex TypeScript setup.
The Gotchas That Will Waste Your Afternoon
Bun breaks random shit - some SQLite compatibility issue didn't work and I wasted 3 hours before finding a buried GitHub issue about it. Most popular npm packages work fine, but when something breaks, you're basically on your own without Stack Overflow answers.
Deno's permission system will confuse you at first. You'll get `PermissionDenied: access to "."` errors and spend 20 minutes figuring out you need --allow-read=.
or whatever. It's actually useful once you get used to it, but the initial learning curve sucks.
Node.js is boring and that's exactly what you want at 3am when something breaks in production. Everyone knows how to debug it, Stack Overflow has answers, and it just works.