Personal tools

Performance/Modules

From HaskellWiki

< Performance(Difference between revisions)
Jump to: navigation, search
(+cat)
(Haskell-All-In-One)
Line 12: Line 12:
   
 
* The compiler has more flexibility regarding calling conventions and the like for functions that are not visible beyond the current compilation unit.
 
* The compiler has more flexibility regarding calling conventions and the like for functions that are not visible beyond the current compilation unit.
  +
  +
== Manual whole program compilation ==
  +
  +
For compilers with separate module compilation, a whole-program compilation and optimization can be achieved semi-automatically
  +
by merging a bundle of modules using [http://www.cs.utah.edu/~hal/HAllInOne/ Haskell All-In-One].

Revision as of 08:27, 15 June 2007

Haskell Performance Resource

Constructs:
Data Types - Functions
Overloading - FFI - Arrays
Strings - Integers - I/O
Floating point - Concurrency
Modules - Monads

Techniques:
Strictness - Laziness
Avoiding space leaks
Accumulating parameter

Implementation-Specific:
GHC - nhc98 - Hugs
Yhc - JHC

1 Use an explicit export list

(note: this only applies to compilers based on separate compilation like GHC, not to those based on whole-program compilation like JHC).

If you do not have an explicit export list in a module, the compiler must assume that everything in that module will be exported. This disables various useful optimisations:

  • If a function is used only once in the current module, and not exported, there is no penalty for inlining the function at its single use point.
  • If a function is not used at all, and not exported, its definition can be discarded.
  • The compiler has more flexibility regarding calling conventions and the like for functions that are not visible beyond the current compilation unit.

2 Manual whole program compilation

For compilers with separate module compilation, a whole-program compilation and optimization can be achieved semi-automatically by merging a bundle of modules using Haskell All-In-One.