Могу ли я использовать профилировщик mvc mini в консольном приложении?
Как я могу использовать mvc-mini-profiler в консольном приложении С#?
Также интересно, делает ли mvc мини-профайлер фактическую профилированную статистику в левой части каждой веб-страницы или это просто пользовательский код javascript, сделанный вручную?
Я загрузил и запустил образец mvc и не могу найти этот код, который помещает результаты в это всплывающее окно javascript.
Ответы
Ответ 1
да, вы можете! И я создал пакет NuGet, чтобы упростить его запуск.
Посмотрите MiniProfiler.Windows:
http://nootn.github.com/MiniProfiler.Windows/
Также для подробной статьи о том, как создать хорошее консольное приложение для профилирования:
http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html
Ответ 2
Основной объект синхронизации (MiniProfiler) должен работать нормально, как и профилированные соединительные крючки и т.д.; однако вам нужно будет:
- добавьте свой собственный пользовательский интерфейс, чтобы показать результаты
- определите свою собственную область действия/время жизни (для Интернета это просто - просто http-запрос)
- предоставить свои собственные привязки для хранения (для этого есть API расширений, который использует http-context по умолчанию IIRC)
- либо пропустить профилировщик вручную, либо определить разумный способ поиска текущего экземпляра профайлера
Я знаю, что некоторые люди использовали его части для WPF и т.д., поэтому его можно использовать, но IMO может иметь смысл выбирать только те биты, которые имеют смысл, и использовать их для написания специальной библиотеки, которая добавляет некоторые потрясающие возможности.
Ответ 3
MiniProfiler V4 (в настоящее время preerelease) имеет метод RenderPlainText()
. Вы можете использовать его непосредственно в консольном или многопоточном асинхронном сервере без каких-либо дополнительных настроек:
public void Foo()
{
MiniProfiler.Start("Interesting subroutine");
using (MiniProfiler.Current.Step("Step1"))
{
using (MiniProfiler.Current.Step(nameof(AccessDb)))
{
AccessDb();
}
Thread.Sleep(100);
}
using (MiniProfiler.Current.Step("Step2"))
{
Thread.Sleep(100);
}
MiniProfiler.Stop();
Console.WriteLine(MiniProfiler.Current.RenderPlainText());
}
Этот фрагмент кода создает следующий вывод:
PCName на 8/2/2017 8:44:36 AM
Интересная подпрограмма = 309.2мс
> Шаг1 = 204,8 мс
→ AccessDb = 103.8ms (sql = 56.2ms в 2 cmds)
> Шаг 2 = 100,9 мс
Как вы можете видеть, вывод включает краткое резюме пользовательских таймингов (sql в этом случае). Вы можете легко изменить это поведение (например, включить текст команды), предоставив свою собственную версию RenderPlainText()
.
Для получения дополнительной информации проверьте: