構文
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
' ******************************************
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)を組み込む必要があります。