5.2. プロファイルについてのコンパイルオプション

-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がより攻撃的な最適化を行なえるので、このオプションはプロファイルされるコードの実行を高速化する傾向がある。このオプションは進入回数に興味がないときに便利である(たとえばヒーププロファイルだけを意図している場合)。