DISKON TERBATAS! Masukkan kupon "skillbaru" saat checkout di kelas apa saja
Skodev
Belajar coding dalam bahasa Indonesia
Runtime JavaScript yang sedang naik daun ini memiliki performa yang sangat cepat, tapi apakah benar Bun lebih cepat dan lebih ringan dari NodeJS?
Daftar Isi:
Teknologi JavaScript semakin pesat berkembang, salah satunya yang sedang naik daun adalah Bun. Bun merupakan sebuah runtime JavaScript yang dikembangkan dengan menggunakan bahasa pemrograman Zig dan juga JavaScriptCore. Bun diklaim lebih cepat dan lebih ringan dari NodeJS. Tapi apa sebenarnya Bun dan bagaimana cara kerjanya?
Bun adalah sebuah runtime JavaScript yang diklaim lebih cepat dan lebih ringan dari NodeJS. Bun sendiri dikembangkan oleh Jarred Summer yang merupakan memiliki pengalaman dibidang Frontend Engineer dan sekarang fokus mengembangkan Bun. Bun dikembangkan menggunakan teknologi yang berbeda dengan NodeJS, sehingga Bun dapat memberikan performa yang lebih baik.
Bun sendiri ditulis menggunakan bahasa pemrograman Zig dan juga didukung oleh JavaScriptCore yang membuat performa Bun lebih cepat.
Tujuan dari Bun ialah bisa menjalankan aplikasi server-side JavaScript dengan performa yang lebih baik dibandingkan NodeJS, sehingga bisa meng-improve performa, mengurangi complexity, dan meningkatkan developer productivity.
Secara sederhana, arsitektur Bun terdiri dari beberapa komponen, diantaranya adalah:
Ada beberapa fitur yang dimiliki oleh Bun, diantaranya adalah:
Untuk melakukan instalasi Bun pada sistem operasi Linux/MacOs/WSL, kita dapat menggunakan perintah berikut:
$ curl -fsSL https://bun.sh/install | bash
// Untuk versi yang lebih spesifik
$ curl -fsSL https://bun.sh/install | bash -s "bun-v1.1.13"
Jika kita ingin melakukan instalasi Bun pada sistem operasi Windows, kita dapat menggunakan perintah berikut:
powershell -c "irm bun.sh/install.ps1|iex"
Ada beberapa kelebihan dan kekurangan yang dimiliki oleh Bun, diantaranya adalah:
Untuk melakukan benchmark Bun, kita akan menggunakan kode JavaScript yang cukup simple. Kode ini akan membaca file TXT yang berisi data nama dan tanggal lahir yang masih terdapat duplikasi data dan kesalahan format, kemudian kita mengolah data tersebut untuk mendapatkan data yang unik.
Untuk jumlah data-nya kita akan menggunakan 5 juta baris data dengan ukuran file 289MB, dengan spesifikasi VM ( GCP ) sebagai berikut:
Berikut kode JavaScript yang akan kita gunakan:
const fs = require("fs");
const processFile = (filePath) => {
const content = fs.readFileSync(filePath, "utf8");
const lines = content.split("\n").slice(0, 5000000);
let baris = 0;
const words = [];
const uniqueWordsSet = new Set();
lines.forEach((line) => {
console.log(`Proses baris ke-${baris}`);
const columns = line.split(";");
if (columns.length < 2) return;
const fullName = columns[0].replace(/"/g, "").split(",");
const firstName = fullName[1] ? fullName[1].trim() : "";
const lastName = fullName[0] ? fullName[0].trim() : "";
const birthdates = columns[1].split("/");
const birthdate = {
year: birthdates[0],
month: birthdates[1],
day: birthdates[2],
};
const wordObj = {
fullName: `${firstName} ${lastName}`,
firstName,
lastName,
birthdate,
};
const wordStr = JSON.stringify(wordObj);
if (!uniqueWordsSet.has(wordStr)) {
uniqueWordsSet.add(wordStr);
words.push(wordObj);
}
baris++;
});
return words;
};
const words = processFile("data.txt");
fs.writeFileSync("words.json", JSON.stringify(words, null, 2));
console.log("Berhasil menyimpan data ke dalam file words.json");
Jika kita menggunakan NodeJS dengan menjalankan command time node main.js
, maka hasil benchmark yang kita dapatkan adalah sebagai berikut:
real 4m14.937s
user 3m14.671s
sys 1m3.863s
Yang artinya, proses tersebut membutuhkan waktu sekitar 4 menit 14 detik untuk menyelesaikan proses tersebut.
Jika kita menggunakan Bun dengan menjalankan command time bun main.js
, maka hasil benchmark yang kita dapatkan adalah sebagai berikut:
real 1m36.954s
user 0m36.953s
sys 0m56.480s
Yang artinya, proses tersebut membutuhkan waktu sekitar 1 menit 36 detik untuk menyelesaikan proses tersebut.
Note: Hasl benchmark ini tidak bisa menjadi patokan yang pasti, karena hasil benchmark bisa berbeda-beda tergantung dari spesifikasi hardware, software, dan kode yang digunakan.
Walau Bun masih dalam tahap pengembangan, namun Bun memiliki beberapa kelebihan yang cukup menarik, seperti lebih cepat, less memory usage, built-in TypeScript support, dan faster package installation. Dengan demikian, Bun bisa menjadi alternatif yang menarik untuk digunakan dalam pengembangan aplikasi NodeJS. Namun, kita juga perlu mempertimbangkan kekurangan Bun, seperti masih baru, kurangnya ekosistem, kurangnya dokumentasi, dan kurangnya komunitas. Oleh karena itu, sebaiknya kita melakukan evaluasi lebih lanjut sebelum menggunakan Bun dalam pengembangan aplikasi kita.
Hi folks, saya Abdur Rofi, seorang penjaga server cloud