Co oznacza „zapamiętywanie”?

Zapamiętywanie, które jest podobne do zapamiętywania, ale specyficzne dla komputerów, to metoda optymalizacji szybkości programu poprzez zwiększenie ilości zajmowanego przez niego miejsca. Ta technika bezpośrednio pociąga za sobą to, że program jest zbudowany do zapamiętywania obliczeń funkcji, a wynik jest przechowywany w pamięci podręcznej. Przy następnym wywołaniu funkcji program może pobrać obliczenia z pamięci podręcznej, zamiast powtarzać te same obliczenia. W przeciwieństwie do redukcji siły, która przyspiesza maszynę w oparciu o podobny kompromis w zakresie szybkości i przestrzeni, zapamiętywanie jest przenośne i może być używane na wielu maszynach.

Użytkownicy mogą tego nie widzieć, ale programy cały czas wykonują obliczenia. Kiedy ktoś kliknie przycisk w programie lub użyje wrodzonej funkcji, wymagane jest obliczenie, aby to zadziałało. Często użytkownik będzie korzystał z tej samej funkcji kilka razy bez żadnych zmian. Bez zapamiętywania, nawet jeśli program właśnie wykonał obliczenia, musiałby to zrobić ponownie. To sprawia, że ​​program działa wolniej, niż gdyby zapisywał wynik.

Wynik obliczenia jest przechowywany w obszarze pamięci podręcznej. W przypadku zapamiętywania, gdy użytkownik wykonuje te same lub podobne dane wejściowe, program pobiera odpowiedź z pamięci podręcznej zamiast wykonywać obliczenia, aby uzyskać odpowiedź. Dzięki temu program oszczędza czas i staje się zoptymalizowany i szybszy. Dane wejściowe mogą być podobne i nie dokładnie takie same, więc niektóre obliczenia mogą nie być całkowicie dokładne, ale niedokładność jest zwykle bardzo niewielka i jest mało prawdopodobne, aby powodowała błędy.

Technika zapamiętywania zasadniczo stanowi kompromis. Wszystkie programy są budowane z ograniczeniami rozmiaru i czasu. Tutaj poświęca się rozmiar, aby prędkość mogła wzrosnąć. Wyniki są przechowywane w pamięci podręcznej, więc program potrzebuje więcej pamięci. Ilość poświęcanej pamięci jest bardzo niewielka, ponieważ pamięć podręczna ma ograniczoną liczbę wyników, które może przechowywać, ale nadal zwiększa koszt miejsca.

Inną podobną, ale nie tak niezawodną techniką optymalizacji kompromisów jest redukcja wytrzymałości. Redukcja siły nie zmniejsza siły programu, ale siłę obliczeń, rozkładając je na słabsze, mniej kosztowne w pamięci funkcje. Na przykład mnożenie wymaga więcej czasu na przetwarzanie niż dodawanie, więc formuła zostanie zmieniona, aby umożliwić mniej czasochłonny proces. Ta technika jest w stanie przyspieszyć procesy, ale oszczędności mogą nie być widoczne na wszystkich komputerach i tylko oszczędza czas kompilacji.