Abstract:
Lazy programs are beautiful, but they are slow because they build many thunks. Simple measurements show that most of these thunks are unnecessary: they are in fact always evaluated, or are always cheap. In this paper we describe Optimistic Evaluation --- an evaluation strategy that exploits this observation. Optimistic Evaluation complements compile-time analyses with run-time experiments: it evaluates a thunk speculatively, but has an abortion mechanism to back out if it makes a bad choice. A run-time adaption mechanism records expressions found to be unsuitable for speculative evaluation, and arranges for them to be evaluated more lazily in the future.
Citations
|
353
|
Multilisp: a language for concurrent symbolic computation
– Halstead
- 1985
|
|
327
|
The Java language environment: A white paper
– Gosling, McGilton
- 1995
|
|
244
|
Why functional programming matters
– Hughes
- 1989
|
|
190
|
R.H.: Lazy task creation – a technique for increasing the granularity of parallel programs
– Mohr, Kranz, et al.
- 1991
|
|
148
|
The Jalapeño Dynamic Optimizing Compiler for Java
– Burke, Choi, et al.
- 1999
|
|
145
|
Branch prediction for free
– Ball, Larus
- 1993
|
|
142
|
K.H.: The implementation of the Cilk-5 multithreaded language
– Frigo, Leiserson, et al.
- 1998
|
|
86
|
Adaptive optimization for SELF: Reconciling high performance with exploratory programming. Thesis CS-TR-94-1520
– Holzle
- 1994
|
|
39
|
Asynchronous exceptions in Haskell
– MARLOW, JONES, et al.
- 2001
|
|
32
|
Engines build process abstractions
– Haynes, Friedman
|
|
23
|
The Chalmers Lazy-ML compiler
– Augustsson, Johnsson
- 1989
|
|
19
|
Speculative Computation, Parallelism, and Functional Programming
– Burton
- 1985
|
|
10
|
Code Optimisation Techniques for Lazy Functional Languages
– Boquist
- 1999
|
|
8
|
Imprecise exceptions, co-inductively
– Moran, Lassen, et al.
- 1999
|
|
6
|
Hybrid Eager and Lazy Evaluation for Efficient Compilation of Haskell
– Maessen
- 2002
|
|
5
|
Cheap eagerness: Speculative evaluation in a lazy functional language
– Fax'en
- 2000
|
|
4
|
Eager Haskell: Resource-bounded execution yields efficient iteration
– Maessen
- 2002
|
|
4
|
An effective speculative evaluation technique for parallel supercombinator graph reduction
– Mattson
- 1993
|
|
4
|
Local Speculative Evaluation for Distributed Graph Reduction
– Griswold
- 2002
|
|
3
|
Lazy thread and task creation in parallel graph-reduction
– Chakravarty
- 1998
|
|
1
|
Dynamic cheap eagerness
– Faxén
- 2001
|
|
1
|
A type-based sharing analysis for update avoidance and optimisation
– Gustavsson
- 1998
|
|
1
|
Speculative computation and priorities in concurrent logic languages
– Huntback
- 1991
|
|
1
|
Isn’t this tail recursive? Message posted to the Haskell mailing list: http://haskell.org/ pipermail/haskell/2002-March/009126.html
– Maurer
- 2002
|