StopWatch_FS()  (Access 2000)

引数で指定した2つの関数の性能比を測定します。測定した性能比は、パーセントで返されます。

構文

StopWatch_FS(strFunc1 As String, strFunc2 As String, _
 Optional lngLoopCount As Long = 100000) As Long

引数

指定項目 内容
strFunc1 比較する関数名1を指定します。関数名1には、遅いと思われる方を指定します。
例: SlowMethhod  注:関数名の後に()は不要
strFunc2 比較する関数名2を指定します。関数名2には、速いと思われる方を指定します。
例: FastMethod   注:関数名の後に()は不要
lngLoopCount 関数名1および関数名2のループ回数を指定します。省略すると、100000回が仮定されます。


戻り値
性能比をパーセントで返します。例えば、50(%)が返されたときは、関数名2が関数名1の半分の時間で処理できたことになります。
性能比=関数名2の経過時間/関数名1の経過時間*100


使用例
データベースウィンドウからモジュールタブをクリックしたら新規作成のボタンをクリックしてモジュールウィンドウを表示させます。ツールから参照設定を選択してMyLib.mdaを登録してから比較する2つの関数を作成します。ここでは、SlowMethod()とFastMethod()を作成します。

SlowMethod(), FastMethod()では、StartTimer_FS, StopTimer_FS()を利用して戻り値として処理時間(ミリセカンド)を返します。StopWatch_FS()は、この処理時間を元に性能比を計算します。


' ******************************************
Function SlowMethod(lngLoop As Long) As Long
  Dim lngI As Long
  Dim strTemp As String

  StartTimer_FS
  For lngI = 0 To lngLoop
    strTemp = ""
  Next lngI
  SlowMethod = StopTimer_FS()
End Function

' ******************************************
Function FastMethod(lngLoop As Long) As Long
  Dim lngI As Long
  Dim strTemp As String

  StartTimer_FS
  For lngI = 0 To lngLoop
    strTemp = vbNullString
  Next lngI
  FastMethod = StopTimer_FS()
End Function


イミディエイトウィンドウから ? StopWatch_FS("SlowMethod", "FastMethod")のように入力して性能比を測定します。この例では、戻り値として29(%)が返されています。FastMethodの方が、SlowMethodの29%の処理時間で実行できたことになります。メモリ変数を初期化するとき、strTemp = ""よりstrTemp = vbNullString の方が効率が良いことが解ります。

Tip:
StopWatch_FS()関数を利用して、以下の使用例を比較して見てください。

Slow Method Fast Method
strTemp = "" strTemp = vbNullString
If strTemp = "" Then If Len(strTemp) = 0 Then
If UCase(strV1 = UCase(strV2) Then If StrComp(strV1, strV2, vbTextCompare) = 0 Then
strTemp = Left(strTemp, 3) strTemp = Left$(strTemp, 3)
intX = intI \ 7 intX = intI / 7
If x = 5 Then
   y = True
Else
  y = False
End If
y = (x = 5)
If x = True Then
  x = False
Else
  x = True
End If
If x Then
  x = False
Else
  x = True
End If
x = IIf(x, False, True) x = Not x
strValue = IIf(intI Mod 2 = 0, "Even", "Odd") If intI Mod 2 = 0 Then
  strValue = "Even"
Else
  strValue = "Odd"
End If




注)
使用例をテストするには、最新のライブラリーデータベース(
MyLib.mda)を組み込む必要があります。