Bun 11x mais rápido que o Node 🤯
O que é o Bun?
Bun, é um novo runtime para JavaScript e TypeScript desenvolvido com a linguagem Zig. Seu principal objetivo é melhorar a experiência do desenvolvedor removendo a necessidade bundling / transpiling e aumentando a performance.
Será mesmo que é tão rápido?
Para verificarmos, vamos usar um problema de exemplo e executá-los com Node e depois com o Bun.
O problema
Somar uma sequência de números no intervalo [0, N - 1)
, em que N
será um número inteiro definido pelo usuário.
Criando a implementação
sum.js
// Necessário para obter valores passados para o script via terminal
import process from "process";
// Valor default caso nenhum outro seja passado
const DEFAULT_ITERATIONS = 100_000_000;
const getLastCommandLineArgument = () => process.argv.at(-1);
const getIterationsCount = () => {
const userIterations = getLastCommandLineArgument();
const iterations = +userIterations || DEFAULT_ITERATIONS;
return iterations;
};
// Constrói um array [0, 1, 2, ..., N - 1]
const makeSequenceArray = (iterations) =>
Array.from({ length: iterations }, (_, index) => index);
const sum = (values) =>
values.reduce((accumulator, value) => accumulator + value);
const sequence = makeSequenceArray(getIterationsCount());
const addedSequence = sum(sequence);
console.log("Sum:", addedSequence);
Como executar
Muito simples, basta passar um número para o script pelo terminal:
node sum.js 1000
bun run sum.js 1000
Ou podemos ainda usar o valor default de 100 mil apenas omitindo o valor na linha de comando
node sum.js
bun run sum.js
Medindo a performance
Para medir a performance podemos utilizar o comando time
dos sistemas linux
. Esse comando indica o tempo e a quantidade de processamento gasta por algum processamento.
$ time node sum.js
Sum: 4999999950000000
node sum.js 8,92s user 0,56s system 100% cpu 9,447 total
$ time bun run sum.js
Sum: 4999999950000000
bun run sum.js 0,54s user 0,28s system 102% cpu 0,805 total
Apurando o resultado
Como pudemos ver, o tempo total gasto para o Node foi de 9,447
enquanto que o do Bun foi de 0,805
. Isso é 11,74
vezes mais rápido! 🤯
Conclusão
Apesar de ainda ser um projeto em construção, o Bun chegou para ser um concorrente de peso do Node (e do Deno? 🤔). Vale a pena acompanhar a evolução do projeto, pois ele promete!