Я заинтересован в измерении времени, которое требуется для выполнения определенных методов.
Я подумал, что было бы действительно удобно сделать это, используя пользовательский атрибут вместо засорения методов кодом для запуска / остановки секундомера.и отправка в логгер.Если бы я мог украсить метод, о котором идет речь, с помощью атрибута, это было бы очень удобно!
Я смог бы создать собственный атрибут, следуя этой статье: https://docs.microsoft.com/en-us/dotnet/standard/attributes/writing-custom-attributes
Примерно так:
public class MonitorExecutionTime : Attribute
{
private Stopwatch measureExecution;
// Start measuring on instantiation
public MonitorExecutionTime()
{
measureExecution = new Stopwatch();
measureExecution.Start();
}
// how do I hook into end invoke?
public MethodHasEnded()
{
measureExecution.Stop();
TimeSpan timeSpan = measureExecution.Elapsed;
Console.WriteLine("Time: {0}h {1}m {2}s {3}ms", timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);
}
}
Но я не уверен, как «захватить» точки запуска существа и завершить его, чтобы запустить секундомер и остановить секундомер (чтобы измерить время и зарегистрировать его).
Кто-нибудь использовал этот подход в приложении ядра .net?Заранее спасибо за любые указатели!