というわけで、実際に以下の二つのコードで検証してみました。
If A = 0 ThenElseIf A = 1 ThenElseIf A = 2 ThenElseIf A = 3 ThenElseIf A = 4 ThenElseIf A = 5 ThenElseIf A = 6 ThenElseIf A = 7 ThenElseIf A = 8 ThenElseIf A = 9 ThenEnd If | Select Case ACase 0Case 1Case 2Case 3Case 4Case 5Case 6Case 7Case 8Case 9End Select |
A(Long型)の値 | 速い方 | 遅い方 | 速度倍率 |
0 | If...ElseIf... | Select Case... | 1.56 |
1 | If...ElseIf... | Select Case... | 1.42 |
2 | If...ElseIf... | Select Case... | 1.32 |
3 | If...ElseIf... | Select Case... | 1.26 |
4 | If...ElseIf... | Select Case... | 1.20 |
5 | If...ElseIf... | Select Case... | 1.20 |
6 | If...ElseIf... | Select Case... | 1.15 |
7 | If...ElseIf... | Select Case... | 1.15 |
8 | If...ElseIf... | Select Case... | 1.13 |
9 | If...ElseIf... | Select Case... | 1.13 |
条件次第ではSelectの方が速くなることもあるかもしれませんが(未確認)、基本的にはIfの方が高速と見て差し支えないようです。
ところで、この表を見ているともっと興味深いことがわかります。
SelectからIfに移行する際、早い段階で条件が当てはまるようにすればさらに効果が高まるということです。
もちろん、移行する前からよく当てはまる条件を前に持ってきているのが一番なのですが。