VBで速度比較

タイトルの通りです。速度計測用のプログラムを使って計測しています。
表は、速度倍率順に並んでいます。
速度倍率は、ここでは遅い方が速い方の何倍の時間がかかったかという数値のことです。
速度倍率が大きいほど速い方を使った時に効果があります。
速い方遅い方速度倍率解説
テーブルを利用Choose関数20.6解説
Ifで場合分けSwitch関数20.4解説
Selectで場合分けChoose関数9.26解説
Ifで場合分けIIf関数4.84解説
Moveメソッドプロパティ指定3.08解説
テーブルを利用Selectで場合分け2.15解説
If...ElseIf...Select Case...1.56解説
WithありWithなし1.30解説
If A * B = 0 ThenIf A = 0 Or B = 0 Then1.11解説
引数をByVal渡し引数をByRef渡し1.06解説
何のことを書いているのかよくわからなければ、解説を見ると実際に使ったコードがあるので大体わかると思います。

ゴーストに注意!

この速度比較は、当然のことながら、二つのコードを実行する条件は同じにしなければなりません。
しかしながら、それは簡単なことではありません、というより完全にはまず無理です。
したがって、ある程度正確にする手段を講じて、後は妥協したほうがいいでしょう。
その手段として、空ループの時間を引くという手段を講じました。
これまではこれだけでも充分でしたが、WindowsXPではそうもいかなくなったようです。
それが、ビジー状態のときに現れるゴーストウィンドウです。
速度比較のプログラムは、ビジー状態をわざと作っているわけですから、それを邪魔されては困るわけです。
実際、ゴーストウィンドウがあるときは実際のウィンドウは非表示になっていますから、ゴーストウィンドウ表示中の方が若干速くなります。
以下のコードで、色の変わり目にゴーストウィンドウが現れるように調整してやると、後者のほうが1割程度速くなります。
'ループ前に背景色を白にします
Picture1.Left = Rnd * 1000
'ループ前に背景色を黒にします
Picture1.Left = Rnd * 1000
これは、処理がゴーストウィンドウ出現直前に終わるように調整するか、予めウィンドウを非表示にしておくことで、回避できそうです。
(参考ページ)