top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
いがぴょんの日記v1 (旧称: ある開発者の日記) から移植しました。
意外な結果が出ました。VC5++より Javaの方が高速(?) まずは条件と結果を示します。
ソースコードおよびロードモジュールを公開します。10360 byte (C++部分はソースコードの一部分のみ)。jarファイルとして圧縮されています。LHMelting などを用いて解凍してください。
実行には JDK1.1.6 および JFC 1.1 (including Swing 1.0.2) のインストールとセットアップが必要です。
JDK1.1.6 + JFC 1.1 のみを利用して コンパイル可能です。
付属のソースコードは JBuilder2にて もっとも扱いやすいです。
VisualC++5.0j
JDK1.1.6
対C++比性能
JDK(nojit)
対C++比性能
32bit整数演算
1302
460
2.83倍
7601
0.17倍
32bit浮動小数点演算
3115
1562
1.99倍
16304
0.19倍
ファイル書出
90
120
0.75倍
150
0.6倍
単位:ミリ秒。数が多いほうが性能が低いことをあらわします。
ソースコードにあるように、単純な演算ではありません。これは最適化のプロセスでソースコードが消えてしまうのを避ける工夫です。
32bit整数は、Javaではint . C++ではintかlong . 32bit浮動小数点は Javaでは float . C++では doubleとなります。混乱してしまいそうです。(もしかしたら 依然混乱しているかもしれ増せん)
nojitは java -nojit のように指定して JITコンパイラを無効化していることをあらわします。
Microsoft VisualC++5.0j と JDK とで比較しました。
なおJDK環境は
JDK1.1.6 (Symantec Java! JustInTime Compiler Version 3.00.039(x) for JDK 1.1.x が付属しているバージョン)
JIT Update for JDKTM 1.1.6 Software, Early Access 2 を適用
考察
まず、私の常識を破壊しています。
常識内:
ファイル出力は C++の方が Javaより高速。Javaは3割引程度のようです。
JIT無しを設定したら、C++の5倍程度時間がかかる。→2割程度の性能しか持たない。(これが従来のJavaの速度)
これは悩みます。現状のJavaは ずいぶんスループットが出ている模様です。継続的にまじめに調べる必要性を感じました。
なお、GUIに関しては、依然VisualC++5.0の方が高速なのだと予測しています。これも近々プロトタイピングを行ってみようと思っています。私が仕事で扱うような、現実的なGUIプログラムが VC5.0++と同様のスループットを出すのだとしたら、天変地異になります(^^)
関連する日記
http://www.nsg.co.jp/nbb/ss/joy/ig981005.htm . 日記: Java狂: HP-UXにおける Java と C言語 を速度比較