При использовании 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 события! Добавьте к первому методу запуск кода операции и код операции остановки ко второму, чтобы увидеть, какое событие является какой операцией.

Другие вопросы по тегам