Отслеживание продолжительности вызовов функций в vb.net

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

5
задан scott.korin 15 February 2012 в 15:02
поделиться