複数の分岐判定でCase文、if文、Elseif文を使った時の処理時間を計測した。
結論はCase文>if文≒Elseif文の順に処理時間が長い。
1.背景
バタイユゲーム支援ツール強化版の高速化の為に複数分岐判定を見直せないか検討した。
具体的には、今まではif文を使っていたがCase文やElseif文に変えて処理時間を測定した。
2.測定結果
(1)処理時間を計測したEXCELシート(今までと同じ)
(2)処理時間
VBAの処理時間(射撃判定のみ)は次の通り。3項の処理時間(各々10ケ)を合計したもの。
バタイユゲーム支援ツール強化版の高速化の為にはElseif文を使うことにした。
分岐判定 | Case文 | if文 | Elseif |
処理時間(秒) | 5.77 | 5.08 | 4.99 |
3.具体的な変更内容
(1)今まで使っていたif文
(A)判定文
(B)測定結果(偶数行のway1の値がVBA処理時間(秒))
(C)EXCELの結果(今回は射撃判定のみ測定したので、損失や士気判定の有無は影響ない)
(2)Case文
(A)判定文
(B)測定結果(偶数行のway1の値がVBA処理時間(秒))
(C)EXCELの結果(今回は射撃判定のみ測定したので、損失や士気判定の有無は影響ない)
(3)Elseif文
(A)判定文
(B)測定結果(偶数行のway1の値がVBA処理時間(秒))
(C)EXCELの結果(今回は射撃判定のみ測定したので、損失や士気判定の有無は影響ない)
(4)時間測定の箇所
pythonプログラムでVBAマクロ(射撃判定)の前後に時間取得(枠内の箇所)を追加した。
4.参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・【Excel VBA】If Elseとは違う条件式(Select Case)について
・【Excel VBA入門】Select Case文の使い方。複数条件をスッキリ書く!
<個人的な感想>
Case文より単純なif(elseif)文の方が処理時間は少しだけ早い。
プログラムの分かり易さから言えばCase文の方が良いが・・・。