stackでのプロファイルのとり方
ghcでは以下の通り
code: pr1
ghc -rtsopts -prof -fprof-auto Hoge.hs
./Hoge +RTS -p
stackでは以下の通り
code: pr2
stack build --profile --ghc-options="-fprof-auto -rtspots"
ghc-optionsは省略可能.
実行時には気をつける必要がある.
code: pr3
stack --profile run -- hoge <args> +RTS -p
stack test --profile hoge --test-arguments '+RTS -xc'
プロファイル用のキャッシュは別扱いで通常のstack execやstack runで使われないので,--profileオプションを使うこと
プロファイルビルドしたバイナリは大きくなる上遅いので注意.
-p 時間プロファイル.プロファイルビルドが必要
-s 簡単な統計情報.プロファイルビルドは不要(rtsoptsが指定されていれば大丈夫.通常stackのpackage.yamlで指定されている)
-hT ヒーププロファイル.hp2any-managerとかでpostscriptを直接描画できる.プロファイルビルド不要(同上)
-l 実行時イベントのログ.threadscopeで描画できる.プロファイルビルドが必要
-xc スタックトレースの出力.プロファイルビルドが必要.