3

私は GHC 7.4.1 を使用していて、コードの一部をプロファイリングしようとしています。残念ながら、プロファイラーの出力は、main関数ごとに複数のコスト センターに分割するのではなく、1 つの大きなコスト センターを関数に割り当てます。

これは、コードをプロファイリングするために従う手順です。私が間違っていることへのポインタをいただければ幸いです。

まず、ライブラリを再インストールして、最適化とプロファイリングを有効にします。

cabal install -p -O2

次に、プロファイリングするコードを再コンパイルします。

ghc -rtsopts -prof -fprof-auto -fforce-recomp --make -O2 "Main.hs"

最後に、いくつかのプロファイリング オプションを指定して実行します。

./Main +RTS -K100M -s -p -hy

これが結果です。

COST CENTRE MODULE  %time %alloc

main        Main    100.0  100.0

私が間違っていることは明らかですか?

4

1 に答える 1

6

( GHC 7.4 の時点では-auto-all)-fprof-autoオプションは、エクスポートされていないものを含め、すべてのトップレベル関数をコストセンターとして自動的にマークします。

ただし、そのオプションは現在コンパイルされているモジュールにのみ影響するため、そのオプションを使用してライブラリもコンパイルする必要がある場合があります。これを行うには、ライブラリの .cabal ファイルにghc-prof-options: -O2 -auto-all(resp. ) を設定します。-fprof-auto

注: コスト センターの注釈はパフォーマンスに大きな影響を与える可能性があるため、-auto-allresp. -fprof-auto現在検査中のライブラリにのみ使用する必要があります。他のライブラリは、-autoresp. -fprof-auto-topまたは-fprof-auto-exported

于 2012-07-31T19:27:33.630 に答える