В наших приложениях 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), но если есть инструменты, облегчающие его, я бы лучше их использовал.