限界インターバル

ロシア船来寇の方も、少しずつ作成していま
して、再入港を可能にした他、現在は小樽浜
の作成をしています。
史実をネットで読んだところ、露船が現れた
のは、北蝦夷の他は釧路ということなので、
移動限界線を動かし、2港を追加することに
しました。

「小樽は往時、北のウォール街と言われた
繁栄した街で・・」という観光案内を見て、
家屋や守備隊ユニットを増やしたのですが、
性能の限界を超えたのか、描画されない、
位置ずれ、というエラーが出てきました。
この場合の限界は 250msの更新インターバル
内に、描画、その他の処理を終えないと、
尻切れトンボのように、次の描画を最初から
始めてしまうという意味です。

Java Scriptはインタープリタ言語ですが、
HTML の読込後は、多少最適化されていると
思います。例えば、コメント文が多くても、
動作が止まることは無いので、処理フローと
して無視していると言えます。

思い当たる点としては、配列変数を無計画に
追加を繰り返しており、小樽では全部で
6ユニット+和船数隻が同時に動くように
配列を増やしていっていました。

他のステージと変数を共通化して、開始時に
配列化した値を代入すれば、処理ループ的に
負担が減りそうです。通常の変数か、配列
変数にするかで迷いますが、簡単な計測を
行いました。

変数10個で、2万回計算表示ループをする
次のプログラムの開始、終了時刻の差を記録
します。同様のことを配列変数でします。

$x0=0;
$x1=0;
$x2=0;
$x3=0;
$x4=0;
$x5=0;
$x6=0;
$x7=0;
$x8=0;
$x9=0;

for($i = 0 ; $i <= 20000 ; $i++){
$x0=$i;
$x1=$x0+1;
$x2=$x1+1;
$x3=$x2+1;
$x4=$x3+1;
$x5=$x4+1;
$x6=$x5+1;
$x7=$x6+1;
$x8=$x7+1;
$x9=$x8+1;

$y=$x0+$x1+$x2+$x3+$x4+
$x5+$x6+$x7+$x8+$x9;

print "y=$y \n";

}


結果は次の通りでした。(5回の平均秒)

通常変数 0.574
配列変数 0.586

12ミリ秒、通常変数の方が高速処理でした。
たぶん、配列変数は一応要素数分の範囲を
走査するからではないかと思います。

変数をグローバル化して、ローカルで宣言、
代入しないのも有効だと思います。
インターバル時間を増やし、ゆっくりゲーム
にすると言う手もありますが・・・

今まで作成した4面分も変更しなければなり
ません。厄介な作業ですが、動いてほしい。

kurohige.png

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント