Saya ingin tahu apa perbedaan sebenarnya antara caching
dan memoization
.
Seperti yang saya lihat, keduanya melibatkan menghindari panggilan fungsi berulang untuk mendapatkan data dengan menyimpannya .
Apa perbedaan inti antara keduanya?
Saya ingin tahu apa perbedaan sebenarnya antara caching
dan memoization
.
Seperti yang saya lihat, keduanya melibatkan menghindari panggilan fungsi berulang untuk mendapatkan data dengan menyimpannya .
Apa perbedaan inti antara keduanya?
Jawaban:
Memoization adalah bentuk khusus dari caching yang melibatkan caching nilai kembalian suatu fungsi berdasarkan parameternya .
Caching adalah istilah yang lebih umum; misalnya, cache HTTP adalah cache tetapi bukan memoisasi.
Wikipedia mengatakan :
Meskipun terkait dengan caching, memoization mengacu pada kasus spesifik dari pengoptimalan ini, membedakannya dari bentuk caching seperti buffering atau penggantian halaman.
If-Match
dan kedaluwarsa. Memoisasi hanya masuk akal untuk fungsi murni, yang jarang dimiliki HTTP.
Seperti yang telah saya lihat digunakan, "memoization" adalah "menyimpan hasil dari fungsi deterministik" yang dapat direproduksi kapan saja dengan fungsi dan masukan yang sama.
"Caching" pada dasarnya mencakup strategi buffering keluaran, baik nilai sumber dapat direproduksi atau tidak pada waktu tertentu. Faktanya, caching juga digunakan untuk merujuk pada strategi buffering input , seperti cache-tulis pada disk atau memori. Jadi ini adalah istilah yang jauh lebih umum.
Saya pikir istilah caching biasanya digunakan ketika Anda menyimpan hasil operasi IO, atau pada dasarnya data apa pun yang datang kepada Anda dari luar (file, jaringan, kueri db). Memo istilah biasanya berlaku untuk menyimpan hasil perhitungan Anda sendiri, misalnya dalam konteks pemrograman dinamis.
Memoization adalah bentuk khusus dari caching hasil dari fungsi deterministik. Artinya, hasil caching di luar fungsi bukanlah memoization karena fungsi tersebut harus mengubah cache saat menghitung hasil baru (belum ada di cache) sehingga tidak akan menjadi fungsi (murni) lagi. Memoization umumnya menyiratkan penerusan cache sebagai argumen tambahan (dalam fungsi helper). Memoisasi akan mengoptimalkan fungsi yang perlu menghitung nilai beberapa kali untuk satu akses. Caching akan mengoptimalkan fungsi yang dipanggil beberapa kali dengan parameter yang sama. Dengan kata lain, Memoisasi akan mengoptimalkan akses pertama apakah caching hanya akan mengoptimalkan akses berulang.