性能とプロファイル
このページの論議(英語)
訳注:本章は編集の都合と読みやすさの観点から、原文の中身を一部別パートに分割しています。
罪な引用...
「よい言語を採用するにあたって一つ深刻な障害がある。 速度のためにはなにもかも犠牲にするという考え方だ。 実生活と同じくコンピュータ言語でもスピードは人殺しだ。」 -- Mike Vanier
(訳注:全文はおそらくこちら)
(本文)
まとめ
あなたの書くプログラムから最高の性能を引き出すための秘訣をここでまとめる。
- できるだけ単純にプログラムを書く。実行時間が長すぎる場合はプロファイルを取って時間のかかっているところを見つけ、その部分の最適化に注力すること。
- 意図していない多相型がないかチェックして、コンパイラに型情報のヒントをあたえる。
- クロージャは単純な関数呼び出しよりも遅いが、メンテナンス性と可読性は上がる。
- 最後の手段としてプログラムのホットスポットを C で書き直す(ただし、まず OCaml コンパイラが吐いたアセンブリ言語をチェックして、これ以上よくならないかどうか見直すこと)
- 性能は外的要因に依存しているかもしれない(データベースのクエリやネットワークの速度だったりしないか?)。もしそうならどんな最適化を施しても無駄だ。
もっと読む
OCaml の内部表現の違いについては マニュアルの18章(「Objective Caml と C 言語のインタフェース」 (OCaml.JPにある日本語訳))や ヘッダファイル mlvalues.h
を見るとわかるだろう。