Jadual Kandungan
Pengenalan kepada fungsi pembantu ingatan
Pelaksanaan fungsi bantu Memoization
Contoh 4
Kesimpulan
Rumah hujung hadapan web tutorial js Terangkan pelaksanaan fungsi bantuan ingatan

Terangkan pelaksanaan fungsi bantuan ingatan

Sep 03, 2023 pm 12:21 PM

Terangkan pelaksanaan fungsi bantuan ingatan

Memoisasi ialah fungsi tambahan, atau kita boleh katakan ia adalah teknik yang meningkatkan kecekapan program dengan menjejaki nilai yang telah dikira oleh fungsi pada masa lalu. Dalam artikel ini, kami akan membincangkan ciri Pemolong Memoisasi melalui contoh yang berbeza dan membincangkan semua contoh secara terperinci supaya kami dapat memahami Memoisasi dengan lebih baik.

Sekarang mari kita bincangkan fungsi pembantu Memoisasi secara mendalam dalam bahagian berikut dan lihat pelaksanaan serta penjelasannya.

Pengenalan kepada fungsi pembantu ingatan

Memoisasi ialah teknik pengaturcaraan yang digunakan untuk meningkatkan kerumitan masa dan kerumitan ruang program dengan menjejaki nilai yang telah dikira oleh fungsi pada masa lalu. Dengan menyimpan hasil panggilan fungsi dalam cache, program menjadi lebih cekap. Kami sering membuang masa dengan menjalankan fungsi berulang kali dengan parameter yang sama yang dikira sebelum ini. Kami kemudiannya boleh menyimpan nilai yang dikira dan mengembalikannya apabila memanggil fungsi dengan parameter yang sama.

Pelaksanaan fungsi bantu Memoization

Di sini kami akan meneroka banyak contoh dan penjelasan untuk membantu anda memahami fungsi pembantu ingatan dengan lebih baik.

Contoh 1

Mari kita lihat bagaimana fungsi pembantu memori berfungsi melalui contoh ini, dalam contoh ini kita akan membincangkan kod, output dan penjelasan untuk lebih memahami konsep -

function add(num1,num2){
   for(let i=0;i<100000;i++){
   }
   return num1+num2;
}
console.log(add(5,4));
console.log(add(5,4));
Salin selepas log masuk

Di sini kami mentakrifkan fungsi tambah, menghantar dua parameter num1 dan num2 untuk melakukan penambahan integer num1 dan num2. Dalam fungsi ini, kita menjalankan gelung for, selepas itu kita perlu mengembalikan jumlah dua integer.

Dalam kes ini, kami memanggil fungsi penambahan, tetapi fungsi kami mengambil sedikit masa kerana gelung for. Kami memanggil fungsi itu lagi dan lagi dengan parameter yang sama. Jadi jika kita menggunakan memori dengan menyimpan nilai tambah supaya kita dapat menjimatkan masa, maka kita akan mengembalikan nilai cache. Kami tidak perlu mengira nilai tambahan untuk parameter yang sama.

Contoh 2

Mari kita lihat berapa lama fungsi kita untuk menentukan nilai tambah (5,4) dengan bantuan kod dan penjelasan -

function add(num1,num2){
   for(let i=0;i<100000;i++){
   }
   return num1+num2;
}
console.time("Time taken");
console.log(add(5, 4));
console.timeEnd("Time taken");
Salin selepas log masuk

Fungsi kami mengambil masa 14.441ms untuk menambah integer 5 dan 4.

Dengan menggunakan teknik memoisasi, kita boleh cache nilai yang telah dikira dan kemudian mengembalikannya apabila memanggil fungsi dengan parameter yang sama, sekali gus menjadikan fungsi lebih cekap.

Contoh 3

Sekarang mari kita bincangkan cara menggunakan teknik memoisasi untuk mengurangkan masa yang diperlukan untuk melaksanakan fungsi berulang kali dengan parameter yang sama.

function memoizeFunction(func) {
   let storage = {};
   return function (val1, val2) {
      const val = val1.toString() + val2.toString();
      if (!storage[val]) {
         storage[val] = func(val1, val2);
      }
      return storage[val];
   }
}
function add(num1, num2) {
   for (let i = 0; i < 10000000; i++) {
   }
   return num1 + num2;
}
console.time("First time, time taken");

let func = memoizeFunction(add);
console.log(func(5, 4));
console.timeEnd("First time, time taken");
console.time("Second time, time taken");

func = memoizeFunction(add);
console.log(func(5, 4));
console.timeEnd("Second time, time taken");
console.time("Third time, time taken");

func = memoizeFunction(add);
console.log(func(5, 4));
console.timeEnd("Third time, time taken");
Salin selepas log masuk

Nota - Tempoh masa yang diperlukan untuk menyelesaikan tugas mungkin berubah.

Dalam kes ini, kami cache nilai yang dikira sebelum ini menggunakan fungsi memori. Apabila kita mula-mula menggunakan func(4,5), argumen mula-mula ditukar kepada bentuk rentetan dan kemudian disimpan dalam objek "storan" bersama-sama dengan nilai yang dikira.

Selain itu, apabila fungsi dipanggil dengan parameter yang sama, ia mula-mula menentukan sama ada ia sudah wujud dalam "storan" objek. Jika ia telah dikira, ia tidak akan dikira lagi, tetapi hanya nilai yang terkandung dalam "storan" objek akan dikembalikan.

Seperti yang anda lihat daripada output, menambah 5 dan 4 mengambil masa yang lebih sedikit setiap kali anda menggunakan fungsi dengan parameter yang sama.

Luangkan masa anda setiap masa -

98.885 ms
83.375 ms
13.071 ms
Salin selepas log masuk

Jadi, seperti yang terbukti daripada output, teknik memoisasi membantu mengurangkan masa yang diperlukan setiap kali kita memanggil fungsi dengan parameter yang sama berulang kali.

Contoh 4

Mari bincangkan satu lagi contoh fungsi pembantu ingatan jujukan Fibonacci.

function memoizeFunction(func) {
   let storage = {};
   return function (val) {
      const value = val.toString();
      if (!storage[value]) {
      storage[value] = func(val);
      }
      return storage[value];
   }
}
function fibonacci(num) {
   if (num === 0 || num === 1)
   return num;
   else
   return fibonacci(num - 1) + fibonacci(num - 2);
}
console.time("First time, time taken");

let func = memoizeFunction(fibonacci);
console.log(func(6));
console.timeEnd("First time, time taken");
console.time("Second time, time taken");

func = memoizeFunction(fibonacci);
console.log(func(6));
console.timeEnd("Second time, time taken");
console.time("Third time, time taken");

func = memoizeFunction(fibonacci);
console.log(func(6));
console.timeEnd("Third time, time taken");
Salin selepas log masuk

Jika semua langkah dilakukan tanpa bantuan teknik ingatan, masa pelaksanaan jujukan Fibonacci akan meningkat secara eksponen. Dengan menyimpan hasil sebelumnya, kita boleh mendapatkan hasil yang dipratentukan, mengurangkan pemeriksaan lanjut hasil pengiraan, dan langkah boleh diambil untuk membuat linear.

Kesimpulan

Dalam artikel ini, kami mengetahui bahawa Memoization ialah fungsi pembantu atau teknik yang meningkatkan kecekapan program dengan menjejaki nilai yang telah dikira oleh fungsi pada masa lalu. Dengan menyimpan hasil panggilan fungsi dalam cache, program menjadi lebih cekap. Kami kemudiannya boleh menyimpan nilai yang dikira dan mengembalikannya apabila memanggil fungsi dengan hujah yang sama.

Atas ialah kandungan terperinci Terangkan pelaksanaan fungsi bantuan ingatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Mar 18, 2025 pm 03:16 PM

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

10 cara untuk meningkatkan prestasi jQuery anda dengan serta -merta 10 cara untuk meningkatkan prestasi jQuery anda dengan serta -merta Mar 11, 2025 am 12:15 AM

Artikel ini menggariskan sepuluh langkah mudah untuk meningkatkan prestasi skrip anda dengan ketara. Teknik -teknik ini adalah mudah dan boleh digunakan untuk semua tahap kemahiran. Tetap dikemas kini: Gunakan pengurus pakej seperti npm dengan bundler seperti Vite untuk memastikan

Menggunakan pasport dengan sekuel dan mysql Menggunakan pasport dengan sekuel dan mysql Mar 11, 2025 am 11:04 AM

Sequelize adalah node.js Orm berasaskan janji. Ia boleh digunakan dengan PostgreSQL, MySQL, MariaDB, SQLite, dan MSSQL. Dalam tutorial ini, kami akan melaksanakan pengesahan untuk pengguna aplikasi web. Dan kami akan menggunakan Pasport, Pengesahan Middlew Popular

Cara Membina Slider JQuery Mudah Cara Membina Slider JQuery Mudah Mar 11, 2025 am 12:19 AM

Artikel ini akan membimbing anda untuk membuat karusel gambar mudah menggunakan perpustakaan jQuery. Kami akan menggunakan perpustakaan BXSlider, yang dibina di atas jQuery dan menyediakan banyak pilihan konfigurasi untuk menubuhkan karusel. Pada masa kini, Gambar Carousel telah menjadi ciri yang mesti ada di laman web - satu gambar lebih baik daripada seribu perkataan! Selepas membuat keputusan untuk menggunakan karusel gambar, soalan seterusnya adalah bagaimana untuk menciptanya. Pertama, anda perlu mengumpul gambar-gambar resolusi tinggi yang berkualiti tinggi. Seterusnya, anda perlu membuat karusel gambar menggunakan HTML dan beberapa kod JavaScript. Terdapat banyak perpustakaan di web yang dapat membantu anda membuat karusel dengan cara yang berbeza. Kami akan menggunakan Perpustakaan BXSlider Sumber Terbuka. Perpustakaan BXSlider menyokong reka bentuk responsif, jadi karusel yang dibina dengan perpustakaan ini dapat disesuaikan dengan mana -mana

See all articles