Memoization - это просто модное слово для кеширования. Если ваши расчеты обходятся дороже, чем извлечение информации из кеша, то это хорошо. Проблема в том, что процессоры работают быстро, а память работает медленно. Поэтому я обнаружил, что использование заметок обычно намного медленнее, чем просто повторение расчетов.
Конечно, существуют и другие методы, которые действительно дают вам значительные улучшения. Если я знаю, что мне нужно f (10) для каждой итерации цикла, то я буду хранить это в переменной. Поскольку поиск в кэше отсутствует, обычно это выигрыш.
РЕДАКТИРОВАТЬ
Давай, опускай меня, сколько хочешь. Это не изменит того факта, что вам нужно делать реальный бенчмаркинг, а не просто слепо начинать бросать все в хеш-таблицы.
Если вы знаете свой диапазон значений во время компиляции, скажем, потому что вы используете n! а n - это 32-битное целое число, тогда вам лучше использовать статический массив.
Если ваш диапазон значений большой, скажем, любое двойное, то ваша хеш-таблица может стать настолько большой, что станет серьезной проблемой.
Если один и тот же результат используется снова и снова в сочетании с данным объектом, то может иметь смысл сохранить это значение вместе с объектом.
В моем случае я обнаружил, что более 90% времени входные данные для любой данной итерации совпадают с последней итерацией. Это означает, что мне просто нужно сохранить последний ввод и последний результат, и только пересчитать, если ввод изменился. Это было на порядок быстрее, чем использование памятки для этого алгоритма.