はじめて「ひとりごと」というカテゴリを使います。
今回、ある変数の値で60パターンに条件分岐するプログラムを書くことになりました。
処理速度の問題から、最適なパターンは何なのか考える必要が出てきました。
私が思いついたのは以下の3通りの方法です。
①単純にif文を連ねる
if a=0 { DoSomething() } if a=1 { DoSomething() } if a=2 { DoSomething() } if a=3 { DoSomething() } …
②条件に当てはまらなかったときのみ、以降の条件を行う。
③条件に当てはまった時点で判定を終了する。
if a=0 { DoSomething() } else : if a=1 { DoSomething() } else : if a=2 { DoSomething() } else : if a=3 { DoSomething() …
なお、switchマクロは展開後の形から、③のパターンに相当します。
if a=0 { DoSomething() : goto *last } if a=1 { DoSomething() : goto *last } if a=2 { DoSomething() : goto *last } if a=3 { DoSomething() : goto *last } …
さて、普通に考えて①が最も遅いことはわかります。
例えばa=0の場合、2行目以降は無駄な評価になってしまうからです。
②と③ではelseを処理する負荷がない分、僅差で③が勝つと予想されました。
そこで、以上のことを確認してみました。