2011-09-11 20 views
19

Jak mogę używać programu profilującego mvc-mini w aplikacji konsoli C#?Czy mogę użyć profilera mini mvc w aplikacji konsolowej?

Co ciekawe, profiler mini mvc umieszcza rzeczywiste statystyki profilowane po lewej stronie każdej strony internetowej lub czy to tylko niestandardowy kod javascript wykonany ręcznie?

Pobrałem i uruchomiłem próbkę mvc i nie mogę znaleźć kodu, który umieszcza wyniki w tym wyskakującym javascriptu.

Odpowiedz

11

Główny obiekt pomiaru czasu (MiniProfiler) powinien działać poprawnie, podobnie jak haki profilowane itp .; jednak trzeba;

  • dodać własny interfejs użytkownika, aby pokazać wyniki
  • zdefiniować własny zakres/żywotność (do sieci jest proste - wystarczy http-request)
  • dostarczyć własne haki przechowywania (istnieje API rozszerzeń za to, że używa http kontekst domyślnie IIRC)
  • albo przekazać profilera wokół ręcznie lub określić rozsądny sposób patrzeć bieżącej instancji profilera

wiem, że niektórzy ludzie używali jej fragmenty na WPF itp., więc można go użyć - ale IMO może mieć sens, aby wybrać tylko te bity, które mają sens, i użyć ich do napisania niestandardowej biblioteki, która dodaje trochę niesamowitości.

+1

@Mark ... masz jakieś screeny z tym systemem w produkcji ? Czy utrzymujesz go przy użyciu najnowszych wersji MiniProfiler? –

+0

@RichardB moim głównym celem jest Internet. Nie mam konkretnych scenariuszy przykładowych w konsoli. –

20

tak, możesz! Stworzyłem pakiet NuGet, aby jeszcze łatwiej było go uruchomić.

Wyjazd MiniProfiler.Windows: http://nootn.github.com/MiniProfiler.Windows/

również do szczegółowego artykułu o tym, jak zaprojektować dobrą aplikację konsoli do profilowania: http://healthedev.blogspot.com.au/2012/07/performance-profiling-console-or-winwpf.html

+2

Hej, Twój pakiet nuget działa świetnie. Jedna mała rzecz: musiałem użyć przekierowania zespołu, ponieważ wydaje się, że zależy ono od wcześniejszej wersji MiniProfilera od najnowszej. Zastanów się nad zaktualizowaniem nuspec do zależności od najnowszej wersji. Dzięki za wysiłek i tak :) –

+2

Wygląda na to, że nie jest zgodny z wersją 3.1.1.140. Jakieś plany, aby to naprawić? – Darek

+2

@PaulSuart Mam do czynienia z błędem followint 'Method 'Start' w typie" MiniProfiler.Windows.ConsoleProfilingProvider "z zestawu" MiniProfiler.Windows, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null "nie ma implementacji. "(System.TypeLoadException) \t Wiadomość wyjątku =" Metoda "Start" w typie "MiniProfiler.Windows.ConsoleProfilingProvider" z zestawu "MiniProfiler.Windows, wersja = 1.0.0.0, Culture = neutralna, PublicKeyToken = null" nie ma implementacji . " Jak zaktualizować nuspec? W moim folderze rozwiązania nie ma pliku .nuspec. Wersja MiniProfiler to 3.1.1.140 –

0

MiniProfiler V4 (obecnie prerelease) ma metodę RenderPlainText(). Można go używać bezpośrednio w konsoli lub asynchronicznych wielowątkowych aplikacji serwera bez jakiejkolwiek dodatkowej konfiguracji:

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()); 
} 

Ten fragment kodu tworzy następujące dane wyjściowe:

PCName na 8/2/2017 08:44:36 AM
    Interesujące podprogram = 309.2ms
> Etap 1 = 204.8ms
> > AccessDb = 103.8ms (SQL = 56.2ms w 2 grupom CMD)
> Krok 2 = 100.9ms

Jak widać wyjście zawiera krótkie podsumowanie czasy niestandardowych (SQL w tym przypadku). Możesz łatwo zmienić to zachowanie (na przykład, aby dołączyć tekst polecenia), dostarczając własną wersję RenderPlainText().

uzyskać więcej informacji należy sprawdzić:

Powiązane problemy