● If と Select はどっちが速い? ●

If と IIf はどっちが速い? に引き続きやっちゃっいました。

まず、環境を形式的に表示しておく。(前回と一緒だけど)

 機種   Compaq DeskPro 
     100MHZ、 RAM:64MB、 HDD:1GB 
 OS   Microsoft Windows NT 4.0 (SP2) 
 言語   Visual Basic 5.0 Enterprise Edition (SP3) 

んで、調査するために書いたコードは、それぞれ以下の通り。

  For i = 0 To 10000
    If ret = 0 Then
      ret = 1
    ElseIf ret = 1 Then
      ret = 2
    ElseIf ret = 2 Then
      ret = 3
    ElseIf ret = 3 Then
      ret = 4
    Else
      ret = 0
    End If
  Next i

  For i = 0 To 10000
    Select Case ret
      Case 0
        ret = 1
      Case 1
        ret = 2
      Case 2
        ret = 3
      Case 3
        ret = 4
      Case Else
        ret = 0
    End Select
  Next i

例によって、10000の部分は1000、5000、10000、15000 … 50000と変えて調査した。すると、意外や意外!!以下の様な結果になった。

IfとSelectの速度比較(18.4KB)

If の方が Select より速いんだね。意外や意外!! とさっき書いたけど、これはC言語では If より Switch の方が速いと聞いていたんで、 VBでも Select の方が速いと思っていたから。自分でもびっくりだね。ホント。だからといって Select を使わないといったことはない。If って分岐あると書くのが面倒だし、Select で書いた方が断然見やすいもんね。しかも50000回ループで If との差はたったの約30ミリ秒。気にしない、気にしない。

調査するケースが1通りなので必ずしも正確というわけではないが、この結果はVBの特徴の1つとして記憶に留めていても良いのではないか。


戻る