В наших приложениях VB6 мы добавили несколько служебных функций для отслеживания количества времени, затраченного на выполнение функции. Мы сделали это, чтобы отслеживать узкие места в производительности.
По сути, это работало с использованием двух служебных функций: StartTickCount () и EndTickCount (). Вы должны передать имя функции в каждую, и функции будут использовать словарь для получения счетчика тиков при вызове StartTickCount (), а затем вычесть счетчик тиков при вызове EndTickCount (). Это было не идеально, потому что, конечно, не учитывалось, что вызовы для подсчета тиков требуют времени и т. Д., Но в основном это работало для наших целей. Боль в стыковой части заключалась в том, чтобы вызывать StartTickCount () в начале каждой функции и EndTickCount () в каждой точке выхода:
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), но если есть существующие инструменты для упрощения, я бы предпочел их использовать.