Home » Javascript » Javascript Memoization

Javascript Memoization

Ditulis oleh Segi Henggana · 16 March 2019
Javascript Memoization

Fungsi adalah bagian yang sangat penting dalam dunia programming. Fungsi membantu kita membuat kode yang modular dan reusable.

Sangat umum untuk membagi program kedalam fungsi-fungsi yang kemudian dapat kita panggil untuk melakukan suatu aksi.

Tapi, terkadang suatu fungsi membutuhkan waktu yang lama ketika diproses berkali-kali. Ada cara untuk dapat membuat fungsi tersebut lebih cepat dieksekusi, yaitu caching.

Cara sebuah fungsi mengingat (cache) nilai kembalian dari fungsi tersebut disebut dengan Memoization. Pengertian formalnya adalah sebagai berikut:

Memoization adalah teknik optimaliasi yang digunakan untuk mempercepat program komputer dengan cara menyimpan hasil dari pemanggilan fungsi dan mengembalikan hasil yang tersimpan tersebut ketika input (argumen) yang sama digunakan lagi saat pemanggilan fungsi tersebut.

Singkatnya, memoizing adalah memorizing atau menyimpan kedalam memory. Fungsi yang memoized biasanya dijalankan lebih cepat karena ketika fungsi tersebut dipanggil untuk kesekian kalinya dengan argumen yang sama, maka sebenarnya kita tidak lagi mengeksekusi fungsi tersebut, melainkan kita mengambil nilai kembalian fungsi tersebut dari dalam cache.

Keren kan? Lebih keren lagi kalo ternyata untuk memahami suatu fungsi memoize sangat mudah.

Berikut contoh sederhana dari fungsi memoize:

function memo(func){
  var cache = {};
    return function(){
      var key = JSON.stringify(arguments);
      if (cache[key]){
        return cache[key];
      }
      else{
        val = func.apply(null, arguments);
        cache[key] = val;
        return val; 
      }
  }
}

Apakah Memoization sama dengan Caching?

Iya, memoization sebenarnya adalah jenis spesifik dari caching. Caching adalah istilah umum yang dipakai untuk menjelaskan teknik penyimpanan yang akan digunakan di masa depan. Sedangkan memoization adalah teknik caching yang menyimpan nilai kembalian dari suatu fungsi.

Kapan Function Memoization digunakan?

  • Pastikan fungsi yang akan di memoize adalah fungsi yang pure, atau fungsi tersebut akan mengembalikan nilai yang sama setiap kali argumen yang diberikan ke dalam fungsi tersebut sama.
  • Konsekuensi penambahan memori yang dibutuhkan untuk menyimpan cache. Jadi harus dipastikan kalau fungsi yang di meoize itu memiliki range inputan yang terbatas sehingga nilai yang tersimpan dalam cache bisa lebih sering terpakai
  • Walaupun terlihat sepertinya kita juga perlu me-memoize pemanggilan API, tetapi sebenarnya tidak karena browser juga sudah secara otomatis melakukan caching. Lihat HTTP caching untuk detailnya.
  • Kasus paling tepat untuk memoize sebuah fungsi adalah fungsi dengan operasi komputasi yang tinggi.

Baca juga link tentang Memoization di bawah ini

Saya masih ingat waktu pertama kali bikin layout website pas SMA, pake TABLE :facepalm:. Sekarang bekerja di Bukalapak sebagai Front End Engineer. Tidak sedang mencari pekerjaan baru.