DEV Community

Cover image for Javascript Buffer/s? What is Buffer/s?
Muhammad Fauzan
Muhammad Fauzan

Posted on

Javascript Buffer/s? What is Buffer/s?

Javascript memiliki bawaan yang membuatnya tidak dapat mengelola data biner, karena awalnya didesain untuk lingkungan browser saja dan unicode-friendly, Javascript memakai unicode untuk proses encoding dalam bentuk String/s atau karakter (char) untuk tujuan pertukaran data, itu alasan kenapa Javascript tidak membaca File menggunakan Buffer melainkan menggunakan Blob yang bisa dibaca dalam bentuk string atau data biner, atau mengonversikannya menjadi ReadableStream sedangkan NodeJS sudah memiliki bawaan instansi Buffer untuk mengelola File menggunakan data biner.

Apa itu unicode?

Unicode adalah standar sistem pengkodean yang digunakan untuk mewakili karakter dari hampir semua bahasa yang dimengerti manusia.

Apa itu String/s?

String/s adalah data dari sekumpulan karakter (char) yang membentuk teks.

Apa itu Encoding?

Encoding adalah proses konversi data dari satu format ke format lainnya diantaranya:

  1. Utf-8 ke hex
  2. Hex ke base64
  3. Octal ke hex
  4. Hex ke HTML

Hasil dari encoding disebut sebagai encoded strings, yang berarti data dalam bentuk String/s tersebut dihasilkan dari proses encoding.

Apa perbandingan antara menggunakan String/s dan Buffer/s?

Penggunaan String/s dibanding menggunakan Buffer/s secara langsung untuk pemrosesan data dalam jumlah besar kurang efisien (contohnya pada kasus pemrosesan File), alasannya karena kita harus memformat terlebih dahulu dari unicode, oleh karena itu Buffer/s tidak berjalan dengan cepat di String operations karena v8 akan memperbarui kode yang sudah dihasilkan untuk Buffer/s object, alasannya karena String/s sudah bawaan pada v8 dan mengalokasikan memori pada VM, dan karena tujuan utama Buffer/s bukan untuk membuat cepat String operations seperti slice, atau concat, namun hanya untuk mempresentasikan data biner dalam jumlah besar.

Apa itu v8?

v8 adalah mesin yang digunakan pada bahasa pemrograman Javascript yang menggunakan sebuah compiler dan sebuah interpreter, dan menggunakan JIT (just in time) compilation untuk meningkatkan performa.

Apa itu Buffer/s?

Buffer/s adalah context atau area dimana data biner berasal dari Stream/s berada. Contohnya adalah data biner yang berasal dari fs.createReadStream di Javascript.

Stream/s memiliki banyak definisi yang bisa anda temukan di sumber lain namun intinya adalah:

contoh kasus penggunaan untuk memproses data dalam jumlah besar yang tidak secara langsung disimpan pada memori.

Beberapa bahasa pemrograman memiliki mekanisme untuk menyimpan Stream/s pada memori, contohnya C# yang dapat menggunakan MemoryStream untuk menyimpan Stream/s pada memori.

Di Javascript, terdapat class Buffer dimana didesain untuk mengelola data biner mentah, setiap buffer dibuat bertindak sebagai array dari bilangan bulat (<Buffer 00 00 00 00 00 00 00 00>) dengan Buffer sebagai instansi-nya, tetapi tidak dapat diubah ukurannya dan memiliki banyak metode khusus untuk data biner, ketika kita menampilkan data tersebut menggunakan console.log(), kita akan melihat rantai nilai dengan nilai heksadesimal.

Contohnya:

const buffer = Buffer.alloc(12);

console.log(buffer); // <Buffer 00 00 00 00 00 00 00 00 00 00 00 00>
Enter fullscreen mode Exit fullscreen mode

Kenapa menggunakan Buffer/s?

Tanpa Buffer/s I/O (Input/output) berarti setiap pemrosesan data akan ditangani langsung dari sistem operasi secara internal, yaitu dari disk, network, atau operasi lain yang membutuhkan resource yang besar dan mahal, dimana ini lebih tidak efisien dibandingkan menggunakan area atau context pada memori yang disebut sebagai Buffer/s contohnya pada pemrosesan File yang mempunyai jumlah data yang besar.

Referensi :

Discussion (0)