単純な数値計算で速度比較
数値計算といえばC/C++とかそんなイメージですが(fortranとか)
Javaだとどうなのか?というところからどっかのサイトに乗ってたアルゴリズムを使って時間を計りました.
※凄い雑なので,ループが多くて割り算があってくらいのプログラムです.
※オマケでRubyもやってみました
- プログラム
#include <cstdlib> using namespace std; int main(int argc, char** argv) { double sum = 0; for(int i=0;i<1000*1000*1000;i++){ sum+=1./(double)(i+1)/(double)(i+1); } return 0; }
public class Main{ public static void main(String args[]){ double sum=0.; for(int i=0;i<1000*1000*1000;i++){ sum+=1./(double)(i+1)/(double)(i+1); } System.out.println(sum); } }
object Main { def main(args: Array[String]): Unit = { var sum = 0.0; for(i <- 0 to 1000*1000*1000){ sum += 1.0/(i.toDouble+1.0)/(i.toDouble+1.0) } } }
RubyはDoubleではなくfloatで(そして,あくまでforです)
- - Ruby
sum = 0.0 for i in 0 .. 1000*1000*1000 sum += 1.0/(i.to_f+1)/(i.to_f+1) end
- 実行環境
- 実行結果(timeで測定)
C | 21.73s |
Java | 18.10s |
Scala | 19.14s |
Ruby | 772.10s |
Python | 587.06s |