Tabulation Techniques for Recursive Programs
ACM Computing Surveys (CSUR)
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
The chunking of goal hierarchies: a model of practice and stimulus-response compatibility
The chunking of goal hierarchies: a model of practice and stimulus-response compatibility
Dynamic Programming via Static Incrementalization
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
PROLEARN: towards a prolog interpreter that learns
AAAI'87 Proceedings of the sixth National conference on Artificial intelligence - Volume 2
PROLEARN: towards a prolog interpreter that learns
AAAI'87 Proceedings of the sixth National conference on Artificial intelligence - Volume 2
Hi-index | 0.00 |
A common program optimization strategy is to eliminate recomputation by caching and reusing results. We analyze the problems involved in automating this strategy: deciding which computations are safe to cache, transforming the rest of the program to make them safe, choosing the most cost-effective ones to cache, and maintaining the optimized code. The analysis extends previous work on caching by considering side effects, shared data structures, program edits, and the acceptability of behavior changes caused by caching. The paper explores various techniques for solving these problems and attempts to make explicit the assumptions on which they depend. An experimental prototype incorporates many of these techniques.