久しぶりにJavaに触れてみた

数値演算はRubyには荷が重い。

ということで、久しぶりにJavaに触ってみたりした。

速度比較としてfor二重ループをC(GCC)とjavaとrubyで回してみた。

ループの中で浮動小数点を掛け算して足しているだけ。

 

ruby: 1117 sec

java: 10.6sec

GCC:最適化なし 33.6 sec

GCC: –O3 10.2sec

GCC: –O3 -march=native 2.5sec

 

環境:win10 64bit core i5

 

まずgccの-O3とjavaが同じ速度というのに驚いた。

はや!JAVA速い!

十分に数値演算に使えるぜこれは。

ただ、GCCのCPUに合わせたコンパイルは反則的でなんと4倍速。

JavaのVMもここまで最適化してくれると・・・さすがに無理か。

そしてRubyはJavaの100倍遅い。

まぁ、そういう言語じゃないので仕方がない。

とはいえ、遅いな・・・

 

ということで、for文を多用する数値演算の場合は・・・

 

ruby:きつい。

Java:普通の最適化されたC言語のプログラム並みに速い。

C:Javaと同様レベルだけど、CPU限定の反則コンパイルをすればJavaの4倍ぐらい早くなるかも。

 

というよう感じ。

まぁ、データ描画とかも考えてJavaにしておくのが無難そう。

 

コードはこんな感じ。(Cだけど他も同じ内容)

float total = 0;
int i,j;

 

for(i=0;i<100000;i++){
  float s = 1.0f * i;
  for(j=0;j<100000;j++){
    total += s * s;
  }
}

 

片付けたものは古いプログラム類。

また実物じゃない。

消したり圧縮したりしてフォルダを整理した。

体重は65.0kg。

夕飯少なかったからなんか減った。

SNSでもご購読できます。

コメントを残す