GHC compiles Haskell code either directly to native
code or using LLVM as a
back-end. GHC can also generate C code as an intermediate
target for porting to new platforms.
The interactive environment compiles Haskell to bytecode, and supports
execution of mixed bytecode/compiled programs.

Profiling
is supported, both by time/allocation and various kinds of heap
profiling.