HyqerCard Referrenceはこちらです。
ご質問やご要望があればコメントにお書き込みください。

高速化

ゲームなどで処理を速くしたい場合は、この記事を参考にして下さい。

 

行数を減らす

 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

 

とした方が速いのです。ただし可読性が落ちる場合があります。

 


読み飛ばし


以下は読み飛ばします。

  1. 空白行
  2. コメント行
  3. 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が使えないため利用できないシーンが多いかと思います。