高速化実験(iモード用)


本項目は、当分 実用にならないと思います。
アイデアを思いついたら実験するという感じです。
参考程度と思ってください。

−−

高速化実験(iモード用)

履歴
2011-2-26 初版
2011-3-6 画像割付高速化
2011-3-24 ミサイルオブジェクト追加(サンプル4)
2011-4-5 ミサイル移動の細かさを倍にしたサンプル追加(サンプル4)
2011-4-25 RPG風のサンプル追加(サンプル5)
2011-5-8 MML音楽演奏のサンプル追加(サンプル6)

ここでは、spalmの高速化を考えます。
全体的な高速化は 実力的にも無理なので、複数の命令を1度に実行するような、
新しい命令を追加する アプローチをとることにします。
(文字列配列の一括表示等)

高速化実験版 spalmmx ダウンロードページ

1.1.実行時間測定 他
上記実験版で追加した命令を使って、サンプルプログラムを書き換えて、
変更前と変更後の メインループのループ1回分の実行時間を測定します。
また、いくつかの新機能についても サンプルプログラムを作成して 動作を確認します。

サンプル1 ドライブゲーム
実行サンプル1101(変更前)(ソースコード)
実行サンプル1102(変更後)(ソースコード)
実行サンプル1103(変更後+画像割付)(ソースコード)

サンプル2 回転障害物ゲーム
実行サンプル1201(変更前)(ソースコード)
実行サンプル1202(変更後)(ソースコード)

サンプル3 増殖ゲーム
実行サンプル1301(変更前)(ソースコード)
実行サンプル1302(変更後)(ソースコード)

サンプル4 ミサイル弾幕のようなもの
実行サンプル1401(ミサイルオブジェクト使用)(ソースコード)
実行サンプル1402(ミサイル移動の細かさを倍にした)(ソースコード)

サンプル5 RPG風のサンプル
実行サンプル1501(split,trim,randint等使用)(ソースコード)
(RPG風のサンプルの操作説明)

サンプル6 MML音楽演奏のサンプル
実行サンプル1601(addmml等使用)(ソースコード)

1.2.結果
確認機種 SH-06B

サンプル1
実行サンプル1101(変更前)
平均:24msec程度
最小:22msec程度
最大:36msec程度
実行サンプル1102(変更後)
平均:14msec程度
最小:13msec程度
最大:25msec程度
実行サンプル1103(変更後+画像割付)
平均:18msec程度
最小:16msec程度
最大:36msec程度

サンプル2
実行サンプル1201(変更前)
平均:40-200msec程度
最小:40msec程度
最大:240msec程度
実行サンプル1202(変更後)
平均:30-50msec程度
最小:30msec程度
最大:80msec程度

サンプル3
実行サンプル1301(変更前)
平均:65-100msec程度
最小:65msec程度
最大:330msec程度
実行サンプル1302(変更後)
平均:55-90msec程度
最小:55msec程度
最大:150msec程度

サンプル4
実行サンプル1401(ミサイルオブジェクト使用)
平均:30msec程度
最小:19msec程度
最大:50msec程度
実行サンプル1402(ミサイル移動の細かさを倍にした)
平均:30msec程度
最小:21msec程度
最大:60msec程度

サンプル5〜6
新機能の動作を確認

1.3.まとめ
サンプル1〜3について、変更前と変更後の実行時間の測定を行った。
描画が多くなるようなケースでは、2〜3倍程度の高速化がはかれた。
描画が少ない場合の平均速度については 若干の高速化にとどまった。

体感的には、サンプル2で障害物が増えた場合の高速化が一番大きく感じられた。
また、サンプル1についても高速化が感じられた(操作が難しい)。
サンプル3については それほど差を感じなかった。

また、サンプル1では別途、画像割付版を作成した。文字に画像を割付可能とすることで、
プログラムを大きく変更せずに 画像を表示できるようになった。
(しかし速度的には 変更後より若干遅くなった)

また、サンプル4〜6では、新機能を使用するサンプルプログラムを作成した。
ミサイルオブジェクト、データ処理、MML演奏等について、
実際に実機で動作することを確認した。