MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Optimistic Evaluation: An Adaptive Evaluation Strategy for Non-Strict Programs (2003) [8 citations — 1 self]

by Robert Ennals ,  Simon Peyton Jones
In ICFP ’03: Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Add To MetaCart

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