Memoization is a technique for avoiding reevaluation of a function when the result of a new evaluation will be the same as the result of the previous evaluation. In that case, the previous result is returned instead of executing the function. The technique is only useful when function evaluation is more expensive than the total cost of remembering the old result and checking that the new result would actually equal the old one.
Stoffers et al. are running computer simulations in which particular models are simulated repeatedly, a poster case for memoization. Their problem is dealing with code written in C++, a language in which it may be quite difficult to determine the set of values influencing a result. The paper does a good job of explaining the issues and how they are addressed in the authors’ system. Performance data is presented for both a synthetic benchmark and a live simulation.
This is an interesting paper, one that clearly explains the memoization concept and extends its applicability to functions with side effects and complex interactions. There is a good discussion of related work and a comprehensive set of references. The paper is clearly written and accessible to anyone who has a reasonable understanding of C++.