Profile

Data.List.unionは結構重そう

数独ソルバー効率化第2回です…今回も20%程度の効率化なのですが内容が面白みにかけるのでさらっと…数独では一つのマスの値が決定したときにそのマスと依存関係にあるマスの制約条件が厳しくなります。時にはそれだけで値が決定してしまうこともあるわけです…

リスト操作のコスト

さて、前回のプロファイルの結果で明らかになった数独ソルバーの最悪のホットスポットはexcludeという関数だったのですが、一体何をやっていたのでしょう…500万回呼び出されて250Mバイトものメモリーを消費していました…excludeは実は次のような関数でした… …

Haskellのプログラムをプロファイルしてみる。

GHCではプログラムのプロファイルをとってくれる機能があります。 数独ソルバーのパ実行フォーマンスを見るのに使ってみました。GHCのマニュアルを見れば出ていることなのですが、GHCのプロファイラはいくつかモードがあって、ものによってはメモリの消費情…