Performance/Modules

From HaskellWiki
< Performance
Revision as of 15:31, 10 January 2006 by Simonmar (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Use an explicit export list

(note: this only applies to compilers based on separate compilation, 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.