To make use of the profiling system all modules must be compiled and linked with the -prof option. Any SCC annotations you've put in your source will spring to life.
Without a -prof option, your SCCs are ignored; so you can compile SCC-laden code without changing it.
There are a few other profiling-related compilation options. Use them in addition to -prof. These do not have to be used consistently for all modules in a program.
GHC will automatically add
_scc_
constructs for all
top-level, exported functions.
All top-level functions,
exported or not, will be automatically
_scc_
'd.
The costs of all CAFs in a module are usually attributed to one “big” CAF cost-centre. With this option, all CAFs get their own cost-centre. An “if all else fails” option…
Ignore any _scc_
constructs, so a module which already has
_scc_
s can be compiled
for profiling with the annotations ignored.