2004.02.23付で書いた「Javaの性能」について、ご意見の表明があった。
こんなところなんて誰も読んでないだろうとたかをくくっていたので、正直嬉しい。
以下、そのご意見の私なりの要約である。(詳細な主張は、リンク先を参照頂きたい)
へこり日記「言いがかりはいけないと思う」より要約
- 最適化
- 理由は不明だが、言語仕様上、Javaの実行速度は遅い(らしい)
ここで屁理屈太郎氏が挙げている論点は、Javaの実行速度が遅いと主張する人の典型的なものだと私は思う。
これらについては、おいおい一つ一つ私見を書くつもりでいる。
しかしとりあえずは、現実を見てみよう。理屈はそれからでも良いだろう。
似たようなコードをCとJavaで作成し、その実行速度を比較してみる。
/* Cのソース */ #includeint main(void) { int i; FILE *out; out = fopen("c_log.txt", "w"); for(i = 0; i < 10000000; ++i)fprintf(out, "Hello world!\n"); fclose(out); return (0); }
/* Javaのソース */ import java.io.PrintWriter; import java.io.FileWriter; class Test { public static void main(String[] args) throws Exception { PrintWriter out = new PrintWriter(new FileWriter("j_log.txt")); for(int i = 0; i < 10000000; ++i)out.print("Hello world!\n"); out.close(); } }
上記二つをコンパイルし、以下のようにして実行した。(Cのものが先、Javaのが後)
# 実行用スクリプト #! /bin/sh date '+%H:%M:%S' test.exe date '+%H:%M:%S' java Test date '+%H:%M:%S'
で、こちらが結果である。
Pentium4:2.4GHz WindowsXP + cygwin + jdk1.4 + gcc 19:08:50 19:09:06 19:09:14