Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Подсчёт времени выполнения методов

Нужно померить время выполнения методов. написать так:
Stopwatch.Start(); Method(); Stopwatch.Stop();
не проблема.
Но возникает вопрос: можно сделать разумное логирование например так:
using(MyCustomProfiler p = new MyCustomProfiler()) {
Method(); Method2(); //////// MethodN(); }
И что бы логировался каждый метод внутри using
Может кто то знает элегантные решения, вместо использования ContextBoundObject, IContextProperty, IContributeServerContextSink, IMessageSink
Если вдруг есть еще способ логировать вызовы внутренних вызовов методов, то это будет шикарно.
Нужно написать решение (код), а не использовать профайлер.
StackTrace и StackFrame тоже не очень подходят.


Ответ

В .NET можно использовать Profiling API. И, возможно, что CLR выводит информацию о вызовах в ETW (Event Tracing for Windows). В nuget-пакете Microsoft.Diagnostics.Tracing.TraceEvent есть классы для работы с ETW.

Комментариев нет:

Отправить комментарий