9

依存関係がいくつかあるプログラムのwindingnumberのプロファイルを作成しようとしています。アレクサンダー・ドミトロフのProfile Haskell without installation installation profiling libraries for all dependenciesでの回答によると、プロファイリングを有効にしてすべての依存関係をビルドする (しようとする) ために cabal-dev を使用しています。私が試してみました

  • cabal-dev install --config=./cabal-dev.config、ここで cabal-dev.config は

    library-profiling: True
    executable-profiling: True
    package-db: /home/christopher/school/senior/senior_thesis/windingnumber_integration/cabal-dev/packages-7.6.1.conf
    local-repo: /home/christopher/school/senior/senior_thesis/windingnumber_integration/cabal-dev/packages
    user-install: False
    remote-repo: hackage.haskell.org:http://hackage.haskell.org/packages/archive
    remote-repo-cache: /home/christopher/.cabal/packages
    optimization: True
    build-summary: /home/christopher/school/senior/senior_thesis/windingnumber_integration/cabal-dev/logs/build.log
    remote-build-reporting: anonymous
    optimization: True
    
    install-dirs user
      prefix: /home/christopher/school/senior/senior_thesis/windingnumber_integration/cabal-dev/
    install-dirs global
    
  • cabal-dev install --cabal-install-arg='--enable-library-profiling' --cabal-install-arg='--enable-executable-profiling'

rm -rf cabal-devもちろん、元の環境から開始するための合間にあります。)それぞれのケースで、次の結果が得られます。

arch% cabal-dev/bin/windingnumber +RTS -p
cabal-dev/bin/windingnumber +RTS -p
windingnumber: the flag -p requires the program to be built with -prof
windingnumber: 
windingnumber: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
<snip>

---つまり、プロファイリングが有効になっていません。どうすれば有効にできますか?

ETA ソリューション:-profプロジェクトの .cabal ファイルの ghc-options に追加してください。どうやら cabal-dev 設定で「executable-profiling: True」を設定してもうまくいきませんでした。Daniel Fischer に感謝します。

4

1 に答える 1

4

実行するたびにcabal-dev書き換えるように見えます。ただし、編集してデフォルト値を設定./cabal-dev/cabal.configできます。~/.cabal/share/cabal-dev-$VERSION/admin/cabal-config.in

$  vim ~/.cabal/share/cabal-dev-0.9.1/admin/cabal-config.in
# Set executable-profiling and library-profiling to True
$ cabal unpack ghc-core
$ cd ghc-core-0.5.6
$ cabal-dev install --dependencies-only
$ cabal-dev configure -p
$ cabal-dev build
$ ./dist/build/ghc-core/ghc-core +RTS -p
# much success

で管理されているすべてのプロジェクトのプロファイリングを有効にしたくない場合は、オプションcabal-devを使用し--extra-config-fileます (--config自動生成された構成ファイルの場所を設定するだけです)。

$ cat cabal-dev.config 
executable-profiling: True
library-profiling: True
$ cabal-dev --extra-config-file='./cabal-dev.config' install
$ ./cabal-dev/bin/ghc-core +RTS -p
# success

プロファイリングを有効にするために .cabal ファイルのフィールドを使用するghc-optionsことはお勧めしません。Hackage からパッケージをインストールするすべての人にプロファイリングを使用してビルドしてもらいたくありません。cabal-dev configure -p --ghc-options="-fprof-auto"現在のビルドのみのプロファイリングを有効にするために使用します。

于 2013-01-01T19:15:15.240 に答える