-prof
:
プロファイルシステムを使うには、全てのモジュールが-prof
オプション付きでコンパイルされ、-prof
オプションつきでリンクされていなければならない。ソース中の全てのSCC
注釈が意味を持つようになる。
-prof
オプションが与えられていないとき、SCC
は無視される。このため、SCC
を満載したコードを変更せずにコンパイルできる。
この他にもいくつかプロファイルに関連したコンパイルオプションがある。これらは-prof
と併用すること。これらのオプションは全てのモジュールで一斉に使う必要はない。
-fprof-auto
:
INLINE指定されていない全ての関数は、エクスポートされているか、最上位が局所的かにかかわらず、SCC
注釈が自動的に与えられる。INLINE関数に付属したコスト集約点が欲しい場合は手動で付け加えなければならない。
-fprof-auto-top
:
INLINE指定されていない全ての最上位の関数に、GHCがSCC
注釈を自動的に加える。INLINE関数に付属したコスト集約点が欲しい場合は手動で付け加えなければならない。
-fprof-auto-exported
:
INLINE指定されていない全てのエクスポートされた関数に、GHCがSCC
注釈を自動的に加える。INLINE関数に付属したコスト集約点が欲しい場合は手動で付け加えなければならない。
-fprof-auto-calls
:
全ての呼び出し地点に自動的にSCC
注釈を加える。これはスタックトレースを生成する目的でプロファイルを使っている場合に特に便利である。詳細は、Debug.Trace
モジュールのtraceStack
かRTSフラグ-xc
(4.17.7. ハックする者、デバッグする者、及び好奇心過剰な魂のためのRTSオプション)を見よ。
-fprof-cafs
:
一つのモジュール内の全てのCAFのコストは通常一つの「大きな」CAFというコスト集約点に割り当てられる。このオプションを使うと、全てのCAFが独自のコスト集約点を持つようになる。「他のことがうまくいかなかったら」試すオプションである。
-fno-prof-auto
:
既に指定された-fprof-auto
、-fprof-auto-top
、-fprof-auto-exported
オプションを無効にする。
-fno-prof-cafs
:
既に指定された-fprof-cafs
オプションを無効にする。
-fno-prof-count-entries
:
このモジュールについて、実行時に関数が何回進入されたかの情報(時間プロファイルの「entries」列)を収集しないようGHCに指示する。正しい進入回数を管理する必要がないときはGHCがより攻撃的な最適化を行なえるので、このオプションはプロファイルされるコードの実行を高速化する傾向がある。このオプションは進入回数に興味がないときに便利である(たとえばヒーププロファイルだけを意図している場合)。