Compiler code optimizations
Haskell compilers perform aggressive optimization transformations on code. GHC optimization passes are highly sophisticated, so much that one rarely needs to worry about performance. We have seen some of the effects of
ghc -O1 in our examples so far; in all cases,
-O1increased performance relative to no optimizations, or
-Onot, and in some optimizations passes were the difference between constant and exponential complexity.
Inlining and stream fusion
GHC performs aggressive inlining, which simply means rewriting a function call with the function's definition. Because all values in Haskell are referentially transparent, any function can be inlined within the scope of its definition. Especially in loops, inlining improves ...