Это на самом деле плохой пример - вы обычно не должны описывать что-то тривиальное.
В конечном счете, это выбор, что вы хотите профилировать. Там есть крючок для таких вещей, как ADO.NET, но если вы хотите, чтобы он профайл за пределами, да: вам нужно дать ему руку.
Re "littered", ну, это субъективно. И лучший подход обычно заключается в том, чтобы ограничить приборы очень высоким уровнем операций, а затем только увеличить масштаб с более подробными операциями, которые вам нужны (из-за выявленного проблемного пятна); Например, вы могли бы:
...
using(profiler.Step("Refresh customer"))
{
// ...
}
...
и только тогда, когда вы обнаружите, что принимая 1800ms приближать:
...
using(profiler.Step("Refresh customer"))
{
using(profiler.Step("Query LDAP"))
{ ... }
using(profiler.Step("Query primary customer DB"))
{ ... }
using(profiler.Step("Query aux db"))
{ ... }
using(profiler.Step("Print, scan, and OCR"))
{ ... }
}
...
Существует также .Inline(...)
метод для отдельных команд.
ли или не вы думаете, что это «мусор»:
- подчеркивает performance is a feature (и, действительно, часто является обязательным требованием) - это нормально, чтобы иметь код для поддержки функции! В самом деле, это форма доказательств того, что у вас есть считается (и измеряемое) производительность нового/измененного фрагмента кода
- это совершенно контекстная как зернистая вы сделаете это
- это, следовательно, обеспечивает значимый уровень детализации для пользователя - без безумных количеств мелочей в журнале и без агрессивного характера большинства журналов
большое спасибо, кстати, как вы сделали это выпадающее меню на каждой странице, которая выводит результаты? как-то зацепился за профайлер? т. е. сохранять каждый журнал в кеше request.items? – codecompleting
@codecompleting есть подключаемый API для обеспечения как краткосрочного, так и долгосрочного хранения. По умолчанию он использует хранилище ASP.NET в памяти, IIRC - но внутри мы используем SQL-Server для долгосрочного (для этого легко написать плагин). Это был вопрос? –
Я хочу сделать что-то вроде: http://community.mediabrowser.tv/uploads/site_1/2314/profiler.png любопытно, как вы агрегируете все запросы для данного запроса. используя request.items? – codecompleting