Performance/Modules
From HaskellWiki
(Difference between revisions)
(+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: Techniques: |
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.
