VB6アプリケーションでは、関数に費やされた時間を追跡するためのユーティリティ関数をいくつか追加しました。パフォーマンスのボトルネックを追跡するためにこれを行いました。vb.netでの関数呼び出しの追跡時間
基本的には、2つのユーティリティ関数StartTickCount()とEndTickCount()がありました。 StartTickCount()が呼び出されたときにはティックカウントを取得するためにディクショナリを使用し、EndTickCount()が呼び出されたときにはティックカウントを減算します。これは完璧ではありませんでした。なぜなら、ティックカウントに時間がかかるなどの呼び出しは考慮しなかったのですが、基本的には私たちの目的のために働いていました。バット部分の痛みは、各出口点での各機能とEndTickCount()の先頭にStartTickCount()を呼び出してください作っていました:とにかく
Private Function SomeFuction() as String
' indicate the function started
StartTickCount("MyClass.SomeFunction")
' some logic that causes the function to end
If (some logic) Then
EndTickCount("MyClass.SomeFunction")
Return "Hello!"
End If
' final exit point
EndTickCount("MyClass.SomeFunction")
Return "World"
End Function
、内蔵任意の機能は、いずれかのVS 2010を通じて、そこにありますデバッガまたはSystem.Reflection
名前空間で、VB.NETで同様のことをするには?
基本的には、各関数が呼び出された回数、その関数で費やされた時間の合計、その関数で費やされた平均秒数、および関数で費やされた最大時間をログに記録します。その関数内の単一の呼び出し。
私は確かにこれを手書きで書くことができます(既にVB6で1回行ったので)。しかし、既存のツールを使用して簡単にすると、むしろ使いたいと思います。
考えがありますプロファイラ? –
プロファイラーのようなサウンドは、少なくともデバッグモードで動作していると動作します。しかし、クライアントサーバ(VS2010ツールを持たない)で性能をチェックする必要があるかもしれないので、コーディングオプションもありますか? –