| 現在、私は時間関係の処理を製作しています。
惑星別の年数の算出には成功したのですが、 月数の算出において処理速度の問題に引っかかっています。 尚、1年以内の総日数も既に算出してあります。 処理速度を気にしないのであれば、このような質問はしません。 ですが、この一連の処理では処理速度が最重要です。 算出されたデータは画面表示を行う予定なので。
使用している変数とサブルーチンは以下の通りです。 それぞれの役割を説明します。
変数「年数」…ここには算出された年数が入ってます。 変数「総日数」…ここには算出された総日数が入ってます。実際には1低い値ですが。 (↑変数「惑星名」が「地球」の時は「0≦X≦365」或いは「0≦X≦364」ですね。) 変数「惑星名」…ここにはその惑星の名前が入ってます。 変数「地名」…ここにはその惑星内での地名が入ってます。 変数「仮月数」…「1≦X≦576」の範囲を取る値が入ります。 (↑変数「惑星名」が「地球」の時は「1≦X≦12」ですね。)
サブルーチン「閏年判定」…その年が閏年かそうでないかを判定。 「閏年」であるなら「閏年」という文字列を、そうでないなら「普通の年」という文字列を算出します。 表記例(Call(閏年判定,年数,惑星名)) この情報はサブルーチン「月間日数算出」で使用しています。
サブルーチン「月間日数算出」…月数を入れるとその月の日数を返します。 表記例(Call(月間日数算出,仮月数,Call(閏年判定,年数,惑星名),地名,惑星名)) 変数「惑星名」が「地球」で変数「仮月数」が3の時は31が返ります。
サブルーチン「日数計算」…月数を入れるとその月までの合計日数を返します。 表記例(Call(日数計算,仮月数,年数,地名,惑星名)) 変数「惑星名」が「地球」で変数「仮月数」が3の時は閏年なら91、そうでなければ90が返ります。 現在処理内容が迷走しており、なにをやっても処理速度が遅いままです。 向上の手段があれば教えてください。
具体的には変数「仮月数」の値を1づつ増やし、 その値を代入したサブルーチン「日数計算」の算出結果と変数「総日数」の値を比較して、 変数「総日数」の値をサブルーチン「日数計算」の算出結果が超えたときの変数「仮月数」の値を 実際の月数としようと考えています。
処理に関してはDoコマンド、Forコマンド、Ifコマンドの全てを試しましたが、 処理速度は向上しませんでした。 スマートな方法でなくてもかまいませんので、処理速度が向上する方法を教えてください。
|