Javaでも書いてみたのと明日

さて今日は遅く起きてしまったぐったりしている。振動のレポートも加工実習の図面・工程表も全くやっていないので危機感を感じてきた。まわりのやつらは振動のモデルとかたてて微分方程式解いてたなあと思い出す。でもやる気がしないのでやっていない。という駄目な状況。

さて、昨日Fortranで書いたボールを上に投げ上げるのをJavaでも書いてみた。無駄なことしてる気がするけれど、計算速度を見たかったわけで。ソースは以下の通り。Fortranのは昨日のに載ってるけど、Javaのほうが面倒くさい。Java素人なので詳しい人いたらここが駄目だって言ってくれるとありがたい。

import java.io.*;
public class OutFile {
public static void main(String[] args) {
try {
PrintWriter outfile=new PrintWriter(new BufferedWriter
(new FileWriter("out.dat")));
double x,v,t,dt,g;
int i;
dt=0.001;g=9.8;
x=1;v=10;t=0;
for(i=1;i<=3000;i++){
t=t+dt;
v=v-g*dt;
x=x+g*dt;
outfile.println(x+" "+v+" "+t);
}
outfile.close();
}
catch (Exception e) {
System.out.println("write file error"+e);
System.exit(1);
}
}
}

ということで時間を計ってみよう。多分この計算でdt=0.001だとあんまり差がつかないだろうから、さらにそれを10分割してやってみよう。計測開始。お、以外にFortran遅い。実はあんまりメリットないんじゃないかFortran。時間は、

  • Java

javac:5秒、java:4秒

  • Fortran

g77:7秒、a.exe:1秒

うーん大して変わらんな・・と思ったけれど、二回目から違う。Javaは二回目で多少高速になったけど、時間かかってて、Fortranはプログラム新しくしても一瞬で終わる。一日の最初だと遅いんだろうか。と思ってさらに10分割してやってみたら、

  • Java

javac:5秒、java:7秒、合計12秒

  • Fortran

g77:0.5秒くらい、a.exe:1秒:合計1.5秒

ということでFortranの勝というか圧勝。なんか最初だけ遅いけど、それから後は刻み幅が激しくなっても計算時間がほとんどかかってないのかな。

素人考えだからよくわからないけれど。あー課題やらないと。明日、ロード新歓の予定だけど雨降りそうでやだなあ。雨だと中止だろうから晴れて欲しい。

ロード新歓、明日やるにしてもやらないにしても相模湖からのルートどうしようかな。大垂水峠のあとに413号に抜けて、牧馬峠(まきめとうげ)に行くコースとそのまま橋本に直行するコースを考えた。峠二つくらい行ってみたいけどみんなの調子しだいだろうなあ。

橋本直行:http://route.alpslab.jp/watch.rb?id=a35afa24272d7cebb3174bebf9b45ddb

牧馬峠へ:http://route.alpslab.jp/watch.rb?id=401a15444a3e169dd7a912f0254b5a99

コメント