User:MatthewHammer/Incremental computing
Incremental computing, also known as incremental computation (IC) consists of software techniques that exploit the dependency structure of a computer program as its input changes over time. The goal of IC is to update the salient output of a program quickly and avoid redundant re-computation. When IC is successful, it can be significantly faster than computing new outputs naively. [1] [2]
For example, spreadsheet software packages commonly use incremental computation to selectively update cells whose formula depend on other cells that change, while avoiding the re-computation of cells that are not affected by changes.
Programming Models
[edit]Various programming models have been proposed for creating incremental computations. They vary in their generality, and in what they require from the programmer.
Explicit versus Implicit
[edit]Different IC approaches vary in what they require from the programmer. Explicit approaches require the programmer to specify how data-structures are permitted to change over time, and provide special abstractions to work with such data. By contrast, Implicit approaches permit the programmer to eschew these details, and program in a more conventional manner.[3]
Implementation Techniques
[edit]The efficient implementation of incremental computations often leverage either a form of dependency graphs, or a form of memoization, or some combination of both techniques.[4] [5]
Related concepts
[edit]Incremental computation is related to other software concepts, such as reactive systems and partial evaluation.
Reactive systems
[edit]Reactive systems often use incremental computing techniques to increase their responsiveness. Spreadsheet software gives an everyday example.
See also:
Partial Evaluation
[edit]Partial evaluation stages computations whose inputs can be divided into two classes: those that are fixed for all time and known a priori ("static") and those that may change over time, from one run to the next ("dynamic"). Incremental computing is more general than partial evaluation. In particular, IC techniques do not assume the presence of "static" inputs that are known a priori.
References
[edit]- ^ Umut A. Acar (2005). Self-Adjusting Computation (PDF) (Ph.D. thesis).
- ^ Camil Demetrescu, Irene Finocchi, and Andrea Ribichini (2011). "Reactive Imperative Programming with Dataflow Constraints". Proceedings of the 26th ACM International Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 2011). ACM. pp. 407–426. doi:10.1145/2048066.2048100. ISBN 978-1-4503-0940-0.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help)CS1 maint: multiple names: authors list (link) - ^ Yan Chen and Joshua Dunfield and Matthew A. Hammer and Umut A. Acar. ICFP 2011 (PDF).
- ^ Umut A. Acar (2005). Self-Adjusting Computation (PDF) (Ph.D. thesis).
- ^ Camil Demetrescu, Irene Finocchi, and Andrea Ribichini (2011). "Reactive Imperative Programming with Dataflow Constraints". Proceedings of the 26th ACM International Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 2011). ACM. pp. 407–426. doi:10.1145/2048066.2048100. ISBN 978-1-4503-0940-0.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help)CS1 maint: multiple names: authors list (link)