Abstract | ||
---|---|---|
An incremental computation updates its result based on a change to its input, which is often an order of magnitude faster than a recomputation from scratch. In particular, incrementalization can make expensive computations feasible for settings that require short feedback cycles, such as interactive systems, IDEs, or (soft) real-time systems. This paper presents i3QL, a general-purpose programming language for specifying incremental computations. i3QL provides a declarative SQL-like syntax and is based on incremental versions of operators from relational algebra, enriched with support for general recursion. We integrated i3QL into Scala as a library, which enables programmers to use regular Scala code for non-incremental subcomputations of an i3QL query and to easily integrate incremental computations into larger software projects. To improve performance, i3QL optimizes user-defined queries by applying algebraic laws and partial evaluation. We describe the design and implementation of i3QL and its optimizations, demonstrate its applicability, and evaluate its performance. |
Year | DOI | Venue |
---|---|---|
2014 | 10.1145/2660193.2660242 | OOPSLA |
Keywords | Field | DocType |
incremental computation,language constructs and features,reactive programming,scala | Scala,Programming language,Computer science,Partial evaluation,Theoretical computer science,Software,Reactive programming,Relational algebra,Operator (computer programming),Recursion,Computation | Conference |
Volume | Issue | ISSN |
49 | 10 | 0362-1340 |
Citations | PageRank | References |
7 | 0.46 | 40 |
Authors | ||
5 |
Name | Order | Citations | PageRank |
---|---|---|---|
Ralf Mitschke | 1 | 90 | 5.18 |
Sebastian Erdweg | 2 | 461 | 33.21 |
Mirko Köhler | 3 | 7 | 1.13 |
Mira Mezini | 4 | 3171 | 211.04 |
Guido Salvaneschi | 5 | 354 | 34.50 |