|
ABSTRACT
Function caching is the technique of remembering previous function calls and avoiding the cost of recomputing them. Function caching provides a simple way of implementing dynamic programming algorithms and can provide a facility for incremental computation. Previous discussions of function caching have generally relied on the user to purge items from the function cache or have proposed a strategy such as least-recently-used without any analysis of the appropriateness of that strategy. We describe a formal model that allows us to describe the potential of a function cache and use that model to develop a practical cache replacement strategy that performs substantially better than currently used strategies. Benchmarks show that in use in an incremental theorem prover, our caching strategy produces almost a factor of four improvement in running time over a system running without function caching and almost a factor of two improvement in running time over a system using a standard cache replacement strategy.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
All78
|
|
 |
Coh79
|
|
 |
FWW76
|
Daniel P. Friedman , David S. Wise , Mitchell Wand, Recursive programming through table look-up, Proceedings of the third ACM symposium on Symbolic and algebraic computation, p.85-89, August 10-12, 1976, Yorktown Heights, New York, United States
[doi> 10.1145/800205.806326]
|
| |
Hil76
|
J. Hilden, Elimination of recursive calls using a small table of 'randomly' selected function values, BIT, Vo116 no. 1, pp60-73 (1976)
|
| |
Hug85
|
|
 |
KS86
|
|
| |
Mic68
|
Donald Michie, "Memo" Functions and .Machine Learning, Nature, No. 218, pp19-22 (April 1968)
|
| |
MC85
|
Jack Mostow and Donald Cohen, Automating Program Speedup by Deciding What to Cache, Proc. of the Ninth International Joint Conference on Artificial Intelligence, 18-23 August, 1985, Vol. 1, pp 165-172.
|
| |
Pug88
|
|
 |
RT84
|
|
 |
Rob87
|
|
|