Andrew Giangrant

ANDREW GIANGRANT

Benchmarking Backend JavaScript Runtimes For Product Development Is Pointless

May 30, 2025

It’s 2025, and every time a new JavaScript runtime drops, we get another wave of benchmarking blog posts making their rounds at the usual places. You know the ones comparing “Hello World” across Bun, Deno, Node.js, TurboNode (which, let’s be honest, is probably in active development somewhere). We’re treated to the same benchmarking circus littered with misleading tables and charts and meaningless conclusions.

“Conclusion: It’s 48.9921% faster than Node.js when responding to a /healthz endpoint.”

Excellent. Now let’s get back to reality, where your backend is churning on complex business logic, processing authenticated requests, and possibly choking outside of the box on some complicated SQL/NoSQL queries missing a critical index on the 15th join buried in a 12 year old legacy codebase.

Does backend JavaScript performance matter?

If you’re building a product, the answer is almost always no.

And if the performance is actually that critical to your backend, then frankly, you shouldn’t be writing it in JavaScript in the first place. End of story.

Two Questions You Should Actually Be Asking

Let’s assume you’re building something where performance does matter. Ask yourself:

  1. Is the backend even the bottleneck?

If you’re processing millions of records per second, swapping Node for Bun isn’t going to save you. You’ll need to scale horizontally, optimize your architecture, and maybe stop querying DynamoDB and MongoDB like it’s a relational database.

  1. Am I doing heavy computation?

Crunching large datasets? Running complex algorithms? Doing math that makes your fan spin? Then ask the next logical question:

“Should I even be using JavaScript for this?”

Tools to consider when runtime performance matters

If you truly need high throughput, low latency, and better control over concurrency, these are all going to be better options than your JavaScript runtime:

These are designed with raw performance in mind. JavaScript is not, and that’s fine. Your versatile Swiss Army knife can do a lot things, but you won’t be cutting down trees with it.

Conclusion: Stop Chasing Benchmarks, Start Building Products

Blog posts might obsess over the runtime benchmarks of Node, Deno, Bun, etc., but in the trenches of real-world software development, they rarely matter. Even when they do, most of them time, it has nothing to do with the service runtime. Choosing a stack for your product should be based on the needs of your product, not the latest benchmarking hype. Shaving 3ms off your /healthz endpoint is not going to make or break your application.

Benchmarking is an important tool for those building the runtimes themselves, but save the benchmarking for academics. Build something users care about instead.