Supero
This is my effort to optimise Haskell. This project is also known as -O11, after the compiler flag in Yhc which will implement these features.
Related work
- Positive Supercompilation for a higher order call-by-value language, by Peter A. Jonsson - similar stuff, but for a strict language.
Downloads
- darcs get --partial http://www.cs.york.ac.uk/fp/darcs/supero
- Related blog posts
- A Supercompile for Core Haskell - submitted to the post proceedings of IFL 2007 (abstract)(hide abstract)Haskell is a functional language, with features such as higher order functions and lazy evaluation, which allow succinct programs. These high-level features present many challenges for optimising compilers. We report practical experiments using novel variants of supercompilation, with special attention to let bindings and the generalisation technique. Results include runtime reductions of up to 55% when our supercompiler is used in conjunction with GHC.(bibtex)(hide bibtex)@unpublished{mitchell:supero_2007_12_10
,title = "A Supercompile for Core {Haskell}"
,author = "Neil Mitchell and Colin Runciman"
,year = "2007"
,month = "December"
,day = "10"
,note = "Draft, submitted to the post proceedings of IFL 2007"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/draft-supero-10_dec_2007.pdf'"
} - Supero: Making Haskell Faster - from IFL 2007 (abstract)(hide abstract)Haskell is a functional language, with features such as higher order functions and lazy evaluation, which allow succinct programs. These high-level features are difficult for fast execution, but GHC is a mature and widely used optimising compiler. This paper presents a whole-program approach to optimisation, which produces speed improvements of between 10% and 60% when used with GHC, on eight benchmarks.(bibtex)(hide bibtex)@inproceedings{mitchell:supero_2007_9_27
,title = "Supero: Making {Haskell} Faster"
,author = "Neil Mitchell and Colin Runciman"
,year = "2007"
,month = "September"
,day = "27"
,booktitle = "IFL 2007: Draft Proceedings of the 19th International Symposium on Implementation and Application of Functional Languages"
,location = "Freiburg, Germany"
,publisher = "Tech. Report No. 12-07 of the Computing Laboratory, University of Kent, UK"
,editor = "Olaf Chitil"
,pages = "334--349
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/paper-supero_making_haskell_faster-27_sep_2007.pdf'"
} - Faster Haskell - from Anglo Haskell 2007 (bibtex)(hide bibtex)@misc{mitchell:supero_2007_8_10
,title = "Faster {Haskell}"
,author = "Neil Mitchell"
,year = "2007"
,month = "August"
,day = "10"
,note = "Presentation from Anglo Haskell 2007"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-faster_haskell-10_aug_2007.pdf'"
} - Fastest Lambda First - from PLASMA (bibtex)(hide bibtex)@misc{mitchell:supero_2007_5_30
,title = "Fastest Lambda First"
,author = "Neil Mitchell"
,year = "2007"
,month = "May"
,day = "30"
,note = "Presentation from PLASMA"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-fastest_lambda_first-30_may_2007.pdf'"
} - Haskell With Go Faster Stripes - from PLASMA (bibtex)(hide bibtex)@misc{mitchell:supero_2006_11_30
,title = "Haskell With Go Faster Stripes"
,author = "Neil Mitchell"
,year = "2006"
,month = "November"
,day = "30"
,note = "Presentation from PLASMA"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-haskell_with_go_faster_stripes-30_nov_2006.pdf'"
}