OCaml は関数型言語の中では速いことになっているし(wikipediaには OCaml と他のML系言語の最大の差はパフォーマンスである とまで書いてある)、たしかに速いと思うんだけど、本当か?という気もしないでもない。
よく引き合いに出されるのが The Computer Language Shootoutの結果で、この順位から上位10を選ぶとこうなる。
- D Digital Mars 38.33 0
- SML MLton 29.61 0
- OCaml 25.58 1
- C Intel 24.28 5
- C gcc 24.03 4
- Ada 95 GNAT 23.09 3
- Pascal Free Pascal 17.46 5
- C# Mono 17.43 1
- Eiffel SmartEiffel 17.42 7
- Haskell GHC 16.35 3
なんだ意外に GHC もいいじゃないかとか、さすがは OCaml、 C より速いなんてすげえーとか思うんだけどよく見てください。 MLton (SML実装のひとつ)に負けてんじゃん。ちなみに数値は前者がスコア、後者が「できなかった課題の数」です。
ただまあ、見てみると、この「できなかった課題の数」というのはけっこう効いているんじゃないかと思っていて、 C の順位がここまで低いのもそれが理由じゃないかなと。とはいえ、仮にこれが認められたとしてもスコア上は MLton とどっこいどっこいでしょうな。本当にパフォーマンスがいいなんて言えるのか?
もちろんこのスコアがすなわちパフォーマンスや速度に対応するかとかいう問題もあるわけだけど、むしろ、パフォーマンスも大事だけど、もっと他のところに積極的な価値を見い出した方がいいんじゃないかと思った次第。
というわけで今日の結論は「D言語最強」ということで(あれ?)