特定の機能がどれくらいの期間使用されているかを素早く測定したい場合は、正確なタイミングを得るために何を呼び出す必要がありますか? VB6のタイミング関数が高精度ではないことを考えれば、代わりに呼び出すWindows API関数がありますか?VB6でタイミング機能/性能測定の最善の方法は何ですか?
他にどのような方法でアプリケーションのパフォーマンスを測定しますか?推奨するサードパーティのツールはありますか?
特定の機能がどれくらいの期間使用されているかを素早く測定したい場合は、正確なタイミングを得るために何を呼び出す必要がありますか? VB6のタイミング関数が高精度ではないことを考えれば、代わりに呼び出すWindows API関数がありますか?VB6でタイミング機能/性能測定の最善の方法は何ですか?
他にどのような方法でアプリケーションのパフォーマンスを測定しますか?推奨するサードパーティのツールはありますか?
通常、Windowsの解像度パフォーマンスカウンタを使用します。チェックアウトQueryPerformanceCounterとQueryPerfomanceFrequency
通常、私は単純なクラスを持ち、そのコンストラクタとデストラクタはQueryPerformanceCounterを呼び出し、実行中の合計に差を加えます。
ツールの場合devpartnerをご確認ください。それがうまくいく間に、コードのかなりの部分を装備することで、私のアプリケーションは驚くほど遅く動作します。私は通常、1つか2つの関数で正確なタイミングを得たいと思っているので、パフォーマンスカウンタ機能を使い、devpartnerを使わないことがよくあります。
VB Watchあなたが検討したいと思うかもしれないもう一つのツールです。
これらは、コードの疑わしい領域を分離できる場合に最も汎用性があります。このタイプの多くのツールでは、コードインストゥルメンテーションの適用範囲をモジュールまたは個々のプロシージャに限定したり、ステートメントレベルではなくプロシージャに制限したりできます。これは、プログラム全体の行単位計測に伴う痛みを軽減するのに役立ちます。
私は、高性能マルチメディアタイマを使用しています。以下はデバッグ プロファイリングライブラリのスニペットです。
Private Declare Function timeGetTime Lib "winmm.dll"() As Long
Private Declare Function timeBeginPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Private Declare Function timeEndPeriod Lib "winmm.dll" (ByVal uPeriod As Long) As Long
Private mlTimeStarted As Long
Public Sub StartTimer(Optional lPeriod As Long = 1)
10 Call timeBeginPeriod(lPeriod)
20 mlTimeStarted = timeGetTime()
End Sub
Public Function GetTimeElapsed() As Long
10 GetTimeElapsed = timeGetTime() - mlTimeStarted
End Function
Public Sub EndTimer(Optional lPeriod As Long = 1)
Debug.Assert lPeriod < 10
10 Call timeEndPeriod(lPeriod)
20 mlTimeStarted = 0
End Sub
Public Sub DebugProfileStop()
10 Call EndTimer
End Sub
Public Sub DebugProfileReset()
10 If mlTimeStarted > 0 Then
20 EndTimer
30 End If
40 Call StartTimer
End Sub
Public Sub DebugProfile(sText As String)
10 Debug.Print "Debug " & sText & " : " & CStr(GetTimeElapsed)
End Sub
使用法:
DebugProfileReset
DebugProfile("Before Loop")
For index = 0 to 10000
DebugProfile("Before Call To Foo")
Foo
DebugProfile("Before Call To Bar")
Bar
DebugProfile("Before Call To Baz")
Baz
Next index
DebugProfile("After Loop")
DebugProfileStop
あなたはQPCを使用してVB6のコードを投稿することができ、任意のチャンス? LARGE_INTEGERを宣言して使用する方法について私は興味があります。私は "VBの男"ではない。 –
私はこれを見つけました。非常に便利です:http://support.microsoft.com/kb/172338 – Gavin
devpartnerへのリンクが壊れています。私は会社が製品を引退したかどうか疑問に思います。 – TheCrazyProgrammer