При использовании EventSource я должен регистрировать два события или вычислять продолжительность и регистрировать только одно?
Предположим, у меня есть метод, для которого я хочу отслеживать информацию о производительности. С помощью System.Diagnostics.Tracing.EventSource
Я вижу два логических способа сделать это; сначала можно записать два события, одно в начале и одно в конце, а затем получатель событий может вычислить продолжительность:
MySource.Log.OperationStart();
RunMyOperation();
MySource.Log.OperatingFinish();
Или я могу сам вычислить продолжительность и написать только одно событие:
var sw = System.Diagnostics.Stopwatch.StartNew();
RunMyOperation();
sw.Stop();
MySource.Log.OperationFinish(sw.ElapsedTicks);
Плюсом этого второго метода является то, что математика не используется; Недостатком является то, что я должен создать секундомер, манипулировать им и записывать данные, даже когда никто не слушает. Это также дополнительная строка кода, и она не такая "симпатичная", субъективно.
Какой метод предпочтительнее? Что говорят "лучшие практики"?
1 ответ
Всегда регистрируйте 2 события! Добавьте к первому методу запуск кода операции и код операции остановки ко второму, чтобы увидеть, какое событие является какой операцией.