Можно ли использовать мини-профилировщик mvc в консольном приложении? - PullRequest
21 голосов
/ 11 сентября 2011

Как я могу использовать mvc-mini-profiler в консольном приложении C #?

Также любопытно, помещает ли мини-профилировщик mvc фактическую профилированную статистику в левую часть каждой веб-страницы или это простопользовательский код javascript сделан вручную?

Я скачал и запустил образец mvc, но не могу найти тот код, который помещает результаты в это всплывающее окно javascript.

Ответы [ 3 ]

20 голосов
/ 10 июля 2012

да, вы можете!И я создал пакет NuGet, чтобы сделать его еще проще.

Ознакомьтесь с MiniProfiler.Windows: http://nootn.github.com/MiniProfiler.Windows/

Также для подробной статьи о том, как создать хорошую консольприложение для профилирования: http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

11 голосов
/ 11 сентября 2011

Объект синхронизации ядра (MiniProfiler) должен работать нормально, как и профилированные соединения и т.д .; как бы вам ни понадобилось;

  • добавьте свой пользовательский интерфейс, чтобы показать результаты
  • определите свою собственную область действия / время жизни (для сети это просто - просто http-запрос)
  • предоставляет свои собственные хуки хранения (для этого есть API расширения, который использует http-context по умолчанию IIRC)
  • либо передайте профилировщик вручную, либо определите разумный способ поиска текущего экземпляра профилировщика

Я знаю, что некоторые люди использовали его части для WPF и т. Д., Поэтому его можно использовать - но в IMO может иметь смысл выбирать только те кусочки, которые имеют смысл, и использовать их для написания пользовательской библиотеки, которая добавляет немного удивительного.

3 голосов
/ 02 августа 2017

MiniProfiler V4 (в настоящее время предварительный выпуск) имеет метод 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 на 02.08.2017: 44: 36 AM
Интересная подпрограмма = 309,2 мс
> Step1 = 204,8 мс
>> AccessDb = 103,8 мс (sql = 56,2 мс в 2 смс)
> Step2 = 100,9 мс

Как видите, вывод включает в себя краткую сводку пользовательских таймингов (в данном случае sql).Вы можете легко изменить это поведение (например, включить текст команды), указав собственную версию RenderPlainText().

Для получения дополнительной информации проверьте:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...