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.
-fprof-auto:
          
        All bindings not marked INLINE,
          whether exported or not, top level or nested, will be given
          automatic SCC annotations.  Functions
          marked INLINE must be given a cost centre manually.
-fprof-auto-top:
          
          
        GHC will automatically add SCC
	  annotations for all top-level bindings not marked INLINE. If
	  you want a cost centre on an INLINE function, you have to
	  add it manually.
-fprof-auto-exported:
          
          
        GHC will automatically add SCC
          annotations for all exported functions not marked
	  INLINE. If you want a cost centre on an INLINE function, you
	  have to add it manually.
-fprof-auto-calls:
          
        Adds an automatic SCC annotation to
            all call sites.  This is particularly
            useful when using profiling for the purposes of generating
            stack traces; see the
            function traceStack in the
            module Debug.Trace, or
            the -xc RTS flag
            (Section 4.17.7, “RTS options for hackers, debuggers, and over-interested
    souls”) for more
            details.
-fprof-cafs:
          
        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…
-fno-prof-auto:
          
        Disables any previous -fprof-auto,
          -fprof-auto-top, or
          -fprof-auto-exported options.
          
-fno-prof-cafs:
          
        Disables any previous -fprof-cafs option.
          
-fno-prof-count-entries:
          
        Tells GHC not to collect information about how often functions are entered at runtime (the "entries" column of the time profile), for this module. This tends to make the profiled code run faster, and hence closer to the speed of the unprofiled code, because GHC is able to optimise more aggressively if it doesn't have to maintain correct entry counts. This option can be useful if you aren't interested in the entry counts (for example, if you only intend to do heap profiling).