大貧民

trubyが死ぬほど遅くて困っていたので,ちょっと見てみた.単一化アルゴリズムの実装がタコなので,そこを直そうと思っていたんだが,まてまて,デバッグプリントもかなり遅かったはずじゃないか.

let () = Debug.pp "T" "%a" print_tenv tenv in
  ...

みたいにしてたところを,

let () = if Debug.is_enabled "T" then Debug.pp "T" "%a" print_tenv tenv in
  ...

と書き直してみたら,それだけで4倍位速くなった.

上のバージョンだと,Debug.ppの中で出力先を切り替えるだけでプリティプリンティング自体は実行していたのだが,それをifでくくっちゃうことによって,一切実行しないようになったということ.


あれ?修論に,型推論が死ぬほど遅いのでごにょごにょごにょと,書いたような気がするんだが(困った).