Everything about Memoization
Software programming optimization technique
In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs. It works by storing the results of expensive calls to pure functions, so that these results can be returned quickly should the same inputs occur again. It is a type of caching, normally implemented using a hash table. It is a typical example of a space–time tradeoff, where the runtime of a program is reduced by increasing its memory usage. Memoization can be implemented in any programming language, though some languages have built-in support that make it easy for the programmer to memoize a function, and others memoize certain functions by default. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: MemoizationA 5-minute orientation
- Skim a recent paper: Accelerating String-Key Learned Index Structures via Memoization-Based Incremental TrainingInfluential work since 2022
- Pick up a classic book: JavaScriptThe most-reprinted book on the subject
- Read the landmark paper: Fuzzy Memoization for Floating-Point Multimedia ApplicationsCited 131 times
- Go sideways: Recursion (computer science)A closely related topic
- Go sideways: Parser combinatorA closely related topic
📖 Definitions
Noun A technique in which partial results are recorded (forming a memo) and then can be re-used later without having to recompute them.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Fuzzy Memoization for Floating-Point Multimedia Applications
Spatial Memoization: Concurrent Instruction Reuse to Correct Timing Errors in SIMD Architectures
Leveraging Hardware Caches for Memoization
Low-Power FPGA Design Using Memoization-Based Approximate Computing
Intercepting Functions for Memoization
Performance problems you can fix: a dynamic analysis of memoization opportunities
Temporal Approximate Function Memoization
Selective memoization
🆕 Influential since 2022
Accelerating String-Key Learned Index Structures via Memoization-Based Incremental Training
Approximate function memoization
Synthesizing Efficient Memoization Algorithms
Memoization based priority-aware task management for QoS provisioning in IoT gateways
Speed Optimization in DEVS-Based Simulations: A Memoization Approach
📚 Books worth reading
JavaScriptDouglas Crockford, Ke luo ke fu de · 2008
Higher-Order PerlMark Jason Dominus · 2005- 📕Efficient Memoization Algorithms for Query OptimizationPit Fender · 2014
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Recursion (computer science) In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same…
- Parser combinator In computer programming, a parser combinator is a higher-order function that accepts several parsers as input and returns a new parser as its output. In…
- Parsing expression grammar In computer science, a parsing expression grammar (PEG) is a type of analytic formal grammar, i.e. it describes a formal language in terms of a set of…
- Packrat parser The Packrat parser is a type of parser that shares similarities with the recursive descent parser in its construction. However, it differs because it takes…
- Standard ML Standard ML (SML) is a general-purpose, high-level, modular, functional programming language with compile-time type checking and type inference. It is…
- Tail call In computer science, a tail call is a subroutine call performed as the final action of a procedure. If the target of a tail is the same subroutine, the…
- Recursion Recursion occurs when the definition of a concept or process depends on a simpler or previous version of itself. Recursion is used in a variety of disciplines…
- Anonymous recursion In computer science, anonymous recursion is recursion which does not explicitly call a function by name. This can be done either explicitly, by using a…