Fiz alguns testes também sem bibliotecas em uma máquina linux com fedora 38 (dell Intel® Core™ i5-8350U × 8)
1. Teste de Operações com BigInt (Números de Fibonacci):
console.time("Execution Time");
const n = 1000000;
let a = BigInt(0), b = BigInt(1);
for (let i = BigInt(0); i < n; i++) {
[a, b] = [b, a + b];
}
console.timeEnd("Execution Time");
Resultados:
Node.js: 13.770s
Bun: 32.01s
2. Teste de Operações de I/O:
console.time("Execution Time");
const n = 1000000;
for (let i = BigInt(0); i < n; i++) {
console.log("Item: " + i);
}
console.timeEnd("Execution Time");
Resultados:
Node.js: 17.787s
Bun: 5.27s
3. Teste de Alocação de Memória:
console.time("Memory Allocation Execution Time");
const n = 1000;
for (let i = 0; i < n; i++) {
let arr = new Array(100000).fill(0);
}
console.timeEnd("Memory Allocation Execution Time");
Resultados:
Node.js: 2.162s
Bun: 1.78s
4. Teste de Manipulação de Strings:
console.time("String Manipulation Execution Time");
let result = "";
const baseString = "abcdefghijklmnopqrstuvwxyz";
const n = 100000;
for (let i = 0; i < n; i++) {
result += baseString;
}
console.timeEnd("String Manipulation Execution Time");
Resultados:
Node.js: 9.487ms
Bun: 4.12ms
5. Teste de Manipulação de Arrays:
console.time("Array Operations Execution Time");
const n = 100000;
let arr = [];
for (let i = 0; i < n; i++) {
arr.push(i);
}
for (let i = 0; i < n; i++) {
let item = arr[i];
}
for (let i = 0; i < n; i++) {
arr.pop();
}
console.timeEnd("Array Operations Execution Time");
Resultados:
Node.js: Média de 8.347ms
Bun: Média de 7.91ms
6. Teste de Operações Matemáticas Básicas:
console.time("Basic Math Operations Execution Time");
let result = 0;
const n = 1000000;
for (let i = 1; i <= n; i++) {
result += i;
result -= i;
result *= i;
result /= i;
}
console.timeEnd("Basic Math Operations Execution Time");
Resultados:
Node.js: Média de 11.115ms
Bun: Média de 15.423ms
Parece que o bun se destaca em operações de I/O, agora o Node.js tem uma vantagem em operações aritméticas, especialmente com BigInt