Call-Graph Caching: Transforming Programs into Networks
Abstract
There are computer programs that use the same flow of control when run on different inputs. This redundancy in their program execution traces can be exploited by preserving suitably abstracted call-graphs for subsequent reuse. We introduce a new programming transformation Call-Graph Caching (CGC) which partially evaluates the control flow of sets of such programs into a network formed from their call-graphs. CGC can automatically generate efficient state-saving structure-sharing incremental algorithms from simple program specifications. As an example, we show how a straightforward, inefficient LISP program for conjunctive match is automatically transformed into the RETE network algorithm. Simple and understandable changes to elegant functional (and other) programs are automatically translated by CGC into new efficient incremental network algorithms; this abstraction mechanism is shown for a class of conjunctive matching algorithms. We establish criteria for the appropriate application of CGC to other AI methods, such as planning, chart parsing, consistency maintenance, and analogical reasoning.
Cite
Text
Perlin. "Call-Graph Caching: Transforming Programs into Networks." International Joint Conference on Artificial Intelligence, 1989.Markdown
[Perlin. "Call-Graph Caching: Transforming Programs into Networks." International Joint Conference on Artificial Intelligence, 1989.](https://mlanthology.org/ijcai/1989/perlin1989ijcai-call/)BibTeX
@inproceedings{perlin1989ijcai-call,
title = {{Call-Graph Caching: Transforming Programs into Networks}},
author = {Perlin, Mark},
booktitle = {International Joint Conference on Artificial Intelligence},
year = {1989},
pages = {122-128},
url = {https://mlanthology.org/ijcai/1989/perlin1989ijcai-call/}
}