-threaded
と-prof
の組み合わせは全く問題なく、実際+RTS -N
オプションを使って複数のプロセッサ上で走っているプログラムのプロファイルを取ることは可能である。[12]
ただしいくつか注意点がある。現在の実装では、ロックを要する共有データ構造をプロファイル実装にいくつか使っているため、プロファイル版プログラムは通常よりずっとスケールしない可能性が高い。さらに、プロファイル版プログラムが収集するメモリ確保量の統計は、共有メモリに置かれるものの(速度のために)ロックされない。したがってこれらの数字は並列プログラムについては不正確なものになる。
複数コア上でプロファイルを取るためにプログラムをコンパイルするときは、-fno-prof-count-entries
を使うことを強く推奨する。これは、進入回数もまた共有メモリにあり、複数のコアでこれを常に更新し続けるのは極めて遅いためである。
また、並列プログラムのプロファイルを取るにはThreadScopeを使うことを推奨する。これは並列実行を視覚化するGUIを提供し、GHCが提供する時間と空間プロファイルを補完する。