数値演算は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。
夕飯少なかったからなんか減った。
最近のコメント