The Glorious Glasgow Haskell Compiler.

The Glorious Glasgow Haskell Compiler.
非正格評価をデフォルトとするHaskellは、注意を怠るとしばしばスペースリークと呼ばれる非効率なメモリの使い方を引き起こす。幸いなことにGHCには多くの場合において有効なヒーププロファイラを備えているので、実際にスペースリークを特定するのはそれほど難しくない。 GHCのヒーププロファイラについて解説した文書としてはGHCの公式マニュアルがあるが、これだけで効果的に使うのは難しいのと、非公式のツールの使い方は紹介されていないので、それらを含めてまとめてみたい。 スペースリークの正格な定義があるのかはさておき、実際の使われ方としては、プログラマが意図しない非効率なメモリの使い方を指すと言ってよいと思う。一口にスペースリークと言っても様々な原因があり、これらを分類する試みとしては例えばSpace leak zooがある。いくつかの例はあとで触れることにして、まずはスペースリークの見つけ方につい
プログラムを実行する際、コマンド行の+RTS ... -RTSの間で。(4.17.1.1. コマンド行でRTSオプションを設定する) コンパイル時に、--with-rtsoptsを使って。(4.17.1.2. コンパイル時にRTSオプションを設定する) 環境変数GHCRTSで。(4.17.1.3. RTSOPTSでRTSオプションを設定する) ランタイムシステムの“フック”を上書きすることによって。(4.17.1.4. RTSの振る舞いを変更するためのフック) リンク時に-rtsoptsフラグを適切に設定していたなら、プログラムを実行するときにRTSオプションをコマンド行で与えることができる。 Haskellプログラムの実行が開始されるとき、RTSはコマンド行引数から+RTSと-RTSで囲まれた部分を自分用に抽出する。以下のような例を考える。 $ ghc prog.hs -rtsopts
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く