Static caching for incremental computation
Authors:
Open Access
- 1 May 1998
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 20 (3) , 546-585
Abstract
A systematic approach is given for deriving incremental programs that exploit caching. The cache-and-prune method presented in the article consists of three stages: (I) the original program is extended to cache the results of all its intermediate subcomputations as well as the final result, (II)) the extended program is incrementalized so that computation on a new input can use all intermediate results on an old input, and (III) unused results cached by the extended program and maintained by the incremental program are pruned away, leaving a pruned extended program that caches only useful intermediate results and a pruned incremental program that uses and maintains only useful results. All three stages utilize static analyses and semantics-preserving transformations. Stages I and III are simple, clean, and fully automatable. The overall method has a kind of optimality with respect to the techniques used in Stage II. The method can be applied straightfowardly to provide a systematic approach to program improvement via caching.Keywords
This publication has 43 references indexed in Scilit:
- Attribute grammar paradigms—a high-level methodology in language implementationACM Computing Surveys, 1995
- Optimization of functional programs by grammar thinningACM Transactions on Programming Languages and Systems, 1995
- Systematic derivation of incremental programsScience of Computer Programming, 1995
- The Pan language-based editing systemACM Transactions on Software Engineering and Methodology, 1992
- The promotion and accumulation strategies in transformational programmingACM Transactions on Programming Languages and Systems, 1984
- Incremental Context-Dependent Analysis for Language-Based EditorsACM Transactions on Programming Languages and Systems, 1983
- Finite Differencing of Computable ExpressionsACM Transactions on Programming Languages and Systems, 1982
- Tabulation Techniques for Recursive ProgramsACM Computing Surveys, 1980
- High level iterators and a method for automatically designing data structure representationComputer Languages, 1975
- Semantics of context-free languagesTheory of Computing Systems, 1968