高速化
ゲームなどで処理を速くしたい場合は、この記事を参考にして下さい。
行数を減らす
HyqerCardでは(javacriptの)setTimeoutで間隔を置いて1行ずつ読んで実行しています。間隔はspeed設定(実行速度の調整を参照)に応じて変えています。
- 0: 4ミリsec(Javascriptの仕様で4ミリsecが最小値のようです)
- 1: 8ミリsec
- 2: 16ミリsec
- 3: 24ミリsec
なので、行数が少なければ処理が速くなります。
if 条件式 then
命令1
else
命令2
end if
とするより
if 条件式 then 命令1 else 命令2
とした方が速いのです。ただし可読性が落ちる場合があります。
読み飛ばし
以下は読み飛ばします。
- 空白行
- コメント行
- if文で条件がfalseの時の命令行(if,repeat,else,endなどの文は読み飛ばしません)
基本的に空白行とコメント行は読み飛ばすので、可読性のための空白行やコメント行は入れましょう。読み飛ばしのための負荷は0ではありませんが本当に微々たるものです。ただし、ハンドラ内の1行目は空白行、コメント行も読んでしまうので、1行目は有効な命令やif,repeat文などを記述してください。
on handler
-- コメント ← 1業目なので読み飛ばされない
命令1
← 空白行なので読み飛ばされる
命令2
-- コメント ← 読み飛ばされる
if 1 = 1 then
命令3
else
命令4 ← 読み飛ばされる
if 2 = 2 then
命令5 ← 読み飛ばされる(if 1 = 1の条件に対してfalseであるため)
else
命令6 ← 読み飛ばされる
end if
end if
end handler
裏技(関数の使用)
ハンドラ内の命令は複数行あれば複数回に渡って読み出し・実行しますが、関数内の命令は複数行あっても実行する時は一気に実行してしまいます。本来、関数は引数を渡して何らかの演算をして値を返すものですが、上記仕組みを利用して複数行を一気に1行分の読み込みで実行させることができます。なので以下のようなことができます。
on handler
get kansu
end handler
function kansu
show cd btn 1
show cd btn 2
show cd btn 3
show cd btn 4
return true
end kansu
ハンドラにshowコマンドを書けば4回の読み出し・実行が必要になりますが、上記の例だと1回ですみます。ただし、関数は非常に制限が多いので使用にご注意を。特にrepeatが使えないため利用できないシーンが多いかと思います。