El conocimiento es el nuevo dinero.
Aprender es la nueva manera en la que inviertes
Acceso Cursos

Hono.js Benchmark: Node.js vs. Deno 2.0 vs. Bun - ¿Cuál es el más rápido?

· 5 min de lectura
Hono.js Benchmark: Node.js vs. Deno 2.0 vs. Bun - ¿Cuál es el más rápido?

Deno 2.0 acaba de salir y afirma ser más rápido que Bun y Node.js y de la misma manera Bun afirma ser más rápido. Esto captó mi interés, así que decidí poner a prueba su rendimiento y ver cómo se comparan en un escenario del mundo real.

Para realizar una comparación justa, necesito elegir un framework compatible con los tres entornos de ejecución de JavaScript (Node.js, Deno y Bun). Por eso decidí utilizar Hono.js, que se integra perfectamente con los tres.

Entorno de prueba:

  • SO: Ubuntu 24.04.1 LTS (WSL)
  • Sistema: Ryzen 5 5500U, 16GB RAM
  • Node.js: v22.9.0
  • Deno: v2.0.0
  • Bun: v1.1.30
  • Comando de prueba: bombardier -c 100 -d 30s http://localhost:3000

Comando de prueba:

bombardier -c 100 -d 30s http://localhost:3000

Para la evaluación comparativa, utilicé Bombardier, una herramienta de pruebas de carga basada en Go que se ejecuta durante 30 segundos con 100 conexiones simultáneas. Cada prueba se repitió tres veces para garantizar resultados más precisos, y se tomó la media de estas ejecuciones para cada entorno.

El framework: Hono.js

Elegí Hono.js por su flexibilidad y compatibilidad cruzada. Hono.js permite una fácil integración con los tres tiempos de ejecución de JavaScript - Node.js, Deno y Bun - lo que lo convierte en un marco ideal para este tipo de benchmark. Es ligero, rápido y tiene una API sencilla, lo que garantiza que las diferencias de rendimiento entre los tiempos de ejecución se destaquen sin mucha sobrecarga.

Para una comparación detallada, consulta mi entrada de blog: Hono.js vs Express.js

CPU
1 vCPU
MEMORIA
1 GB
ALMACENAMIENTO
10 GB
TRANSFERENCIA
1 TB
PRECIO
$ 4 mes
Para obtener el servidor GRATIS debes de escribir el cupon "LEIFER"

Configuración y código

Escribí una aplicación Hono.js básica para simular un servidor HTTP con fines de prueba:

Node.js

import { serve } from "@hono/node-server";
import { Hono } from "hono";

const app = new Hono();

app.get("/", (c) => {
  return c.text("Hello Hono!");
});

const port = 3000;

serve({
  fetch: app.fetch,
  port
});

Deno

import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Hono!')
})

Deno.serve(app.fetch)

Bun

import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Hono!')
})

export default { 
  port: 8000, 
  fetch: app.fetch, 
} 
view raw

Esta configuración básica simula un servidor sencillo que responde con «¡Hola Hono!» a cada solicitud. La simplicidad del código asegura que estamos probando el rendimiento bruto de cada tiempo de ejecución en lugar de la complejidad de la aplicación.

Resultado

  • Aquí están las peticiones medias y máximas por segundo para cada tiempo de ejecución:
(Request/sec)

Ganador: Bun

  • A continuación se muestra la latencia (en milisegundos por solicitud) de cada tiempo de ejecución:
(ms/req)

Ganador: Bun (Avg) & Deno (Max)

Análisis y principales conclusiones

De los resultados se desprenden los siguientes puntos clave:

  • Node.js: Aunque Node.js ha sido el estándar de la industria para JavaScript del lado del servidor durante años, muestra un rendimiento inferior en términos de peticiones por segundo en comparación con Deno y Bun. Su latencia media también es más alta, lo que sugiere que puede sufrir más bajo cargas concurrentes pesadas. Sin embargo, Node.js sigue siendo ampliamente adoptado por su amplio ecosistema y su estabilidad en entornos de producción.
  • Deno 2.0: El rendimiento de Deno es significativamente mejor que el de Node.js, con más del doble de peticiones por segundo y una latencia media mucho menor. Esto indica que Deno está altamente optimizado para manejar conexiones concurrentes y podría ser una alternativa sólida para aplicaciones de rendimiento crítico. Su diseño moderno y sus funciones integradas, como la compatibilidad con TypeScript, le otorgan una ventaja en los proyectos más recientes.
  • Bun: Bun superó tanto a Node.js como a Deno en términos de rendimiento bruto. Gestionó el mayor número de peticiones por segundo y mantuvo la latencia media más baja. Esto hace de Bun una opción convincente para proyectos en los que la velocidad es la máxima prioridad. Sin embargo, sigue siendo un tiempo de ejecución nuevo, y su ecosistema y comunidad aún no están tan maduros como los de Node.js.
En este benchmark, he probado el rendimiento de Deno 2.0, Bun, y Node .js utilizando Hono.js como framework en los tres entornos.

Los resultados muestran claramente que tanto Deno como Bun superan a Node.js en términos de velocidad bruta y latencia. Bun, en particular, brilla en escenarios de alto rendimiento, mientras que Deno ofrece una solución equilibrada centrada en las funciones de desarrollo modernas.

Aunque Node.js no sea la opción más rápida, sigue siendo una opción fiable, especialmente para proyectos que dependen de su maduro ecosistema. Por otro lado, si estás trabajando en un proyecto nuevo y necesitas maximizar el rendimiento, tanto Deno como Bun ofrecen alternativas convincentes.

En última instancia, la elección del tiempo de ejecución dependerá de las necesidades específicas de tu proyecto. Por el momento, Deno y Bun han demostrado ser los nuevos contendientes en la carrera de los tiempos de ejecución de JavaScript, con Bun a la cabeza en rendimiento.

Fuente