double x, v; // 位置 x と速度 v double theta, omega; // 角度 θ と角速度 ω |
double t = 0; // 時刻を表す変数 while(t < 20){ // t=20 になるまで繰り返し // 運動方程式を数値的に解いて台車と振り子の状態 (x, v, θ, ω) を一ステップ進める処理 (省略) // もし車が壁にぶつかったら、ループを抜け出す処理 (省略) t = t + dt; // 時刻を dt だけ進める } |
for(int i=0 ; i<10 ; i++){ double t = 0; // 時刻を表す変数 while(t < 20){ // t=20 になるまで繰り返し // 運動方程式を数値的に解いて台車と振り子の状態 (x, v, θ, ω) を一ステップ進める処理 (省略) // もし車が壁にぶつかったら、ループを抜け出す処理 (省略) t = t + dt; // 時刻を dt だけ進める } } |
方法 | 時間 | 備考 |
C++ コンソールアプリ | 33.8 [秒] | Pentium M 1.2 GHz / Linux (Fedora Core 6) / g++ 4.1.2 / コンパイルオプション -O3 -ffast-math |
Java コンソールアプリ | 52.1 [秒] | Pentium M 1.2 GHz / Linux (Fedora Core 6) / Java 1.6 u 10 |
Java GUI アプリ (アプレット) | 132.2 [秒] | Pentium M 1.2 GHz / Linux (Fedora Core 6) / Firefox 3.0.3 / Java 1.6 u 10 |