DISKON TERBATAS! Masukkan kupon "skillbaru" saat checkout di kelas apa saja

Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

BUN JAVASCRIPT RUNTIME, ALTERNATIF NODEJS YANG LEBIH CEPAT

Runtime JavaScript yang sedang naik daun ini memiliki performa yang sangat cepat, tapi apakah benar Bun lebih cepat dan lebih ringan dari NodeJS?

Bun Javascript Runtime, Alternatif NodeJS yang lebih cepat

Daftar Isi:

Apa Itu Bun.js?
Arsitektur Bun
Fitur Bun
Instalasi Bun
Kelebihan dan Kekurangan Bun
Melakukan Benchmark Bun
Kesimpulan
Referensi

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?

Apa Itu Bun.js?

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.

Benchmark Bun

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.

Arsitektur Bun

Bun Architecture

Secara sederhana, arsitektur Bun terdiri dari beberapa komponen, diantaranya adalah:

Fitur Bun

Ada beberapa fitur yang dimiliki oleh Bun, diantaranya adalah:

Instalasi Bun

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"

Kelebihan dan Kekurangan Bun

Ada beberapa kelebihan dan kekurangan yang dimiliki oleh Bun, diantaranya adalah:

Kelebihan Bun

Kekurangan Bun

Melakukan Benchmark Bun

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.

Kesimpulan

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.

Referensi

Penulis: Abdur Rofi

/ @mrofisr_

Hi folks, saya Abdur Rofi, seorang penjaga server cloud

Daftar newsletter skodev masukkan emailmu untuk dapat informasi menarik dari dunia koding