Memahami MEMOISASI Dalam JavaScript - CRUDPRO

Memahami MEMOISASI Dalam JavaScript

Memahami MEMOISASI Dalam JavaScript

Memoisasi adalah teknik pengoptimalan yang dapat digunakan untuk mengurangi runtime perhitungan dengan menyimpan input sebelumnya ke sesuatu yang disebut cache dan mengembalikan hasil darinya.

Mari kita permudah,

  • Misalkan Anda harus bekerja di apotek selama satu hari, bukan paman Anda. Ini hari pertama Anda di toko itu & pada jam pertama pelanggan datang dan meminta Anda untuk "tablet Paracetamol", sekarang karena ini hari pertama Anda, Anda tidak tahu tentang penempatan obat di toko besar itu.
  • Sekarang Anda akan mulai mencari toko untuk obat tersebut, mungkin ada kasus terbaik bahwa laci pertama yang Anda buka penuh dengan tab Paracetamol dan juga mungkin ada kasus terburuk setelah mencari di seluruh toko Anda menemukan tab tersebut di laci terakhir.
  • Mari kita lihat kasus terburuk, sekarang mencari seluruh toko menghabiskan banyak waktu, lalu Anda memberikan obat itu kepada pembeli itu.
  • tetapi sekarang Anda tahu bahwa tab Parasetamol ada di laci khusus itu (Anda menghafalnya, Anda menyimpannya di suatu tempat)

  • Sekarang jika ada orang lain yang datang dan meminta tab Paracetamol, tanpa mencari dan menghabiskan lebih banyak waktu, Anda dapat dengan mudah mengambil obat dari laci hafalan itu dan Anda memberikannya kepada pembeli dalam waktu singkat.

Sama halnya,

Untuk memahami konsep yang luar biasa namun rumit ini, mari pelajari kodenya.

Di sini, saya telah menulis sebuah fungsi sederhana yang memicu loop dan menjalankannya 'n' beberapa kali, di mana 'n' adalah inputnya. Dan setiap kali for loop berjalan, itu akan menambahkan indeks ke jumlah, dan kemudian mengembalikan jumlah.

Memahami MEMOISASI Dalam JavaScript

Sekarang ini adalah kode yang bagus untuk beberapa input kecil, tetapi jika inputnya besar maka ini akan sangat mahal.

Misalkan, saya ingin loop ini berjalan 1 Juta kali, Jadi, saya harus menulis kode

console.time();
console.log(calc(1000000));
console.timeEnd(); //this line will print runtime in 'ms'

console.time();
console.log(calc(1000000));
console.timeEnd(); //this line will print runtime in 'ms'

Menjalankan ini akan memakan waktu berapa lama login konsol terlampir di bawah ini:

Memahami MEMOISASI Dalam JavaScript

Untuk input yang sama, loop akan berjalan 1 Juta kali setiap kali kita memberikan input 1 Juta, dan itu tidak bagus untuk software, tidak hemat biaya.

Jadi kita akan menggunakan teknik MEMOIZATION, dimana kita akan menyimpan nilai output, ketika input 1 Juta (atau apapun).

Memahami MEMOISASI Dalam JavaScript
console.time();
console.log(ans(100000000));
console.timeEnd();

console.time();
console.log(ans(100000000));
console.timeEnd();

Di sini kita dapat melihat bahwa waktu yang dibutuhkan untuk menghitung 1 Juta pertama kali besar dalam 'ms' tetapi untuk waktu berikutnya, sekecil yang dapat diabaikan.

Memahami MEMOISASI Dalam JavaScript

Saya harap ini membantu.