¿Qué tiene Bun?

Bun es la nueva estrella en ascenso de JavaScript/TypeScript. Pero, ¿qué tiene de especial? ¿Por qué deberías preocuparte? ¡Descubrámoslo!

2 min para leer
webdev
bun
javascript
typescript
nodejs

TLDR🥱!!!

  • Sí, Bun es realmente impresionante y también fue una experiencia de desarrollo increíble 😳.
  • Pero aún no descartes a NodeJs ⚠️.

Instalando Bun 📦
Solo echa un vistazo a la documentación para esto 😒, sitio web de Bun

Poniendo a Bun en el Horno 🥖

Así que estoy utilizando Bun v1.22.0 aquí y lo estoy ejecutando todo en WSL-2, Ubuntu 22 en Windows 11.
Y inicialicé un nuevo proyecto de Bun con bun init (tal como dicen los documentos)

Inicializando Proyecto Predeterminado de Bun

Bueno, ahora, veamos rápidamente si las cosas funcionan correctamente :-
(y no olvidemos esa pequeña ‘n’ ahora 🫣)

probando bun

Y las cosas funcionaban perfectamente, así que ahora vamos a lo bueno.

Trato de Bun (Benchmarks) 📊

El código que utilicé es este👇🏻 y simplemente genera una serie de números de Fibonacci de forma recursiva y los escribe en un archivo.

const timeStart = new Date().getTime(); // iniciar temporizador function fibRecursive(n: number): number { return n <= 1 ? n : fibRecursive(n - 1) + fibRecursive(n - 2); } function generateFibNumbers(count: number): number[] { const fibNumbers: number[] = []; for (let i = 0; i < count; i++) { fibNumbers.push(fibRecursive(i)); } return fibNumbers; } const fibs = generateFibNumbers(40); // escribir en archivo (Específico de Bun), para Node solo usa fs Bun.write("fibs.json", JSON.stringify(fibs, null, 2)); const timeEnd = new Date().getTime(); // detener temporizador const diff = timeEnd - timeStart; console.log(`Listo en ${diff}ms`);

Dos cosas a tener en cuenta aquí 👇🏻

  • Sé que este no es un código de benchmarking elegante y no estoy utilizando alguna biblioteca elegante aquí 😒, pero es una prueba simple para ver cómo se compara Bun con NodeJs.
  • Todo lo que estoy diciendo es que si ejecutamos exactamente el mismo código en la misma máquina para ambas ejecuciones, podemos tener una buena idea de cómo se comparan.

Datos Demos 📈

Así que lo ejecuté varias veces con Bun y NodeJs, y aquí está lo que obtuve:

  • Tiempo Promedio de Bun - (853 + 875 + … + 846)/8 = 868.25ms
  • Tiempo Promedio de Node - (1376 + 1352 + … + 1370)/7 = 1360.57ms

Así que Bun es aproximadamente 1.5 veces más rápido que NodeJs en mi máquina para generar 40 números de Fibonacci y escribirlos en un archivo JSON.

Entonces, ¿Qué tiene Bun? 🤔

Entonces, ¿cuáles son esos números que ves en el sitio web de Bun, donde dicen que Bun es simplemente increíblemente rápido?
Bueno, no están mintiendo, pero están hablando de servir solicitudes HTTP y no solo de hacer cálculos y operaciones básicas de archivos.

Si estás pensando en abandonar tu aplicación de Electron (que utiliza NodeJs en el hilo principal para todas las cosas relacionadas con el sistema de archivos) por algo que se ejecuta en Bun, lo cual podría tener un soporte menos completo en comparación con NodeJs, entonces es posible que quieras pensarlo de nuevo.

Node está bien por ahora, pero definitivamente es algo a tener en cuenta en el futuro 👀.

Prueba de esos datos 👇🏻

Benchmarking de BunBenchmarking de NodeJs