言ひがかりはいけないと思ふ

雨谷の日和で、Java の実行速度についての話題が(→Java の性能)。

Java は、セキュリティを確保する目的から、実行時のエラーチェックを非常に厳密に行なつてゐる。C はそんなことしない。この一点だけをとつても、C のはうが圧倒的に速い。

また、Java のコードを実行するには、Java Virtual Machine が必要である。C にはこれが不要である。この点も C のはうが有利だ。間違ひない。

さらに、多くの C コンパイラは、実行するプラットフォームごとに別々に、ありとあらゆる最適化を行なふ。実行するプラットフォームは事前にわかつてゐるので、非常に高度な最適化が行なはれる。Java の場合、事前にプラットフォームを特定できないので、プラットフォームに依存する最適化は実行時にしか行なへない。ここでも C が有利。

言語仕様設計の話とかもすると、もつと C が有利になる。言語仕様の議論をするのに必要な専門知識を、屁理屈太郎はおほかた忘れてしまつたので、とりあへず逃げる。

まあともかくとにかく、C に比べて、Java は恐ろしく遅い。もし Java の遅さが気にならないのだとしたら、それはもともと速度を気にしなくて良い用途なのだ。

C で 3 秒かかる処理が、Java で 6 秒かかつたとしても、別に誰も気にしない。でも、C で 3 日、Java で 6 日だとしたら、どうだらう。さういふ業務をしてゐる人にとつては「Java なんて遅くて使い物にならん」と云ふのは、正しい。

「下手な組み方したらむしろ C の方が遅い」と云ふのはひどい言ひがかりで、こんなこと言つていいのなら、perl や BASIC だつて十分速いことになつてしまふ。同じプログラマーが C と Java の両方でコードを書いたら、それは間違ひなく C のはうが速いのだ。