PR

プロファイル・ツールを自作する

 今回はGHCに同梱されているhp2psを使ってヒープ・プロファイルの結果を出力しました。ほかにも同様のツールが存在します。

 例えば,OpenGLで実装されたhp2any-graphでは,コンピュータ上またはネットワーク上にあるHaskellプログラムを実行し,ヒープ・プロファイルの結果をウィンドウに表示できます。またGtk2Hsで実装されたhp2any-managerは,*.hpファイルにあるヒープ・プロファイルの結果をウィンドウにに表示します。

 これらは共にhp2any-coreパッケージを使って実装されています。hp2any-coreパッケージでは,hp2any-graphやhp2any-managerの動作に必要な機能が提供されています。hp2any-coreパッケージを使って自家製のツールを作ってみるのもおもしろいでしょう(参考リンク)。


著者紹介 shelarcy

 今回見たように,GHCのヒープ・プロファイラは数多くの情報を提供してくれます。ヒープ・プロファイラが必要になるようなプログラムは書かないという方も,すでに性能がわかっているプログラムに対してヒープ・プロファイラを使ってみると,新たな発見があるでしょう。

 例えば,「fib = 1 : 1 : zipWith (+) fib (tail fib) が遅いかどうかは,使い方に依存する」というmkothaさんによる分析があります(参考リンク)。ヒープ・プロファイラを使えば,この分析が正しいかどうかを確認できます。あるいは,今回の例を最適化オプション付きでコンパイルし,結果を比べてみるのもおもしろいかもしれません。