Skip to content

Cercle Blog

We've got something interesting

Understanding Memoization In JavaScript

Posted on 26 września, 2021 By admin Brak komentarzy do Understanding Memoization In JavaScript

czym jest Memoization

Memoization jest techniką optymalizacji, która przyspiesza aplikacje poprzez przechowywanie wyników drogich wywołań funkcji i zwracanie buforowanego wyniku, gdy te same dane wejściowe są ponownie dostarczane.

weźmy przykład, mamy tę metodę obliczania silni liczby za pomocą rekurencji.

function recursiveFac(n) { if (n === 0) { return 1 } else { return n * recursiveFac(n - 1) }}

ta funkcja będzie działać dobrze, ale na dłuższą metę będzie kosztowna. powiedzmy, że jeśli wywoła najpierw memoFac(7), a następnie memoFac (8), bez pamięci podręcznej do przechowywania naszych wcześniej obliczonych wartości, musimy powtórzyć cały proces, zwracając funkcję kolejne 7 razy.

const cache = {}function memoFac(n) { if (cache) { return cache } else { if (n === 0) { cache = 1 } else { cache = n * memoFac(n - 1) } return cache}

mamy więc inną funkcję memoFac () i globalny obiekt pamięci podręcznej, który będzie przechowywał wynik dla tego klucza.
teraz, jeśli wywołamy memoFac(8) po wywołaniu memoFac(7), zapisaliśmy już naszą obliczoną wartość dla silnia (7) w naszym obiekcie „cache”, który został przeniesiony poza funkcję w celu zachowania jej obliczeń buforowania. Tak więc, musimy tylko raz wywołać funkcję, obliczyć 8 * memoFac (7), która wysyła nas prosto do naszego „cache”, aby pobrać buforowaną wartość. Super!

ale poczekaj-jeśli memoizacja ma ten sam ogólny format (pobieranie wartości z pamięci podręcznej w zewnętrznym zakresie funkcji lub obliczanie wartości za pomocą funkcji anonimowego zamykania), czy nie moglibyśmy napisać ogólnej funkcji memoize? Tak, możemy!

koncepcja memoizacji w języku JavaScript opiera się głównie na dwóch koncepcjach.

  1. zamknięcia
  2. funkcje wyższego rzędu
function memoizerHoc(fun){ let cache = {} return function (n){ if (cache != undefined ) { return cache } else { let result = fun(n) cache = result return result } }}

Tutaj Mamy funkcję HOC memoizerHoc () i lokalny bufor zmiennych, który może być dostępny wewnątrz zwracanej funkcji (closure).

Articles

Nawigacja wpisu

Previous Post: Dieta neandertalczyka – od zębów do jelit-SAPIENS
Next Post: DIY Spinning Nerf Target

More Related Articles

New England Science Symposium – Ness Articles
Zbuduj komputer do gier w mniej niż minutę dzięki modułowemu pulpitowi Razer Articles
4.4: właściwości protonów, neutronów i elektronów Articles
Top 10 Unsexiest World Records Based Around Sex Articles
Naseptin Krem do nosa Articles
pomimo choroby zabijającej żaby, naukowcy odkrywają nowe gatunki żab Articles

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • luty 2022
  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021
  • sierpień 2021
  • lipiec 2021
  • czerwiec 2021
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org

Copyright © 2022 Cercle Blog.

Powered by PressBook Blog WordPress theme