2009-05-26 4 views
6

Ich bin auf der Suche nach einem Profiler für meine C# -Anwendung, die in Visual Studio 2008 entwickelt wird. Ich suche nach etwas, das kostengünstig ist (Open Source ist bevorzugt) und das es in VS2008 integrieren kann. Ich fand die Visual Studio Profiler, aber ich weiß nicht, wie man es benutzt. Ich habe die Stand-Alone-Version installiert, die von Visual Studio abhängt (nicht alleine, denke ich?), Aber nichts taucht im Tools-Menü auf, wie es bei ihrem Spaziergang heißt.Wo kann ich einen Profiler für C# -Anwendungen finden, der in Visual Studio 2008 verwendet werden soll?

+0

Verwenden Sie VS Express? – GEOCHET

+0

Nein, ich habe die Pro-Version – Malfist

Antwort

11

Hier ist eine Liste der Open Source. NET profilers.

Ich habe verwendet und wie die Ants-Profiler von Red Gate, aber es kostet Geld (sehr wert, IMHO).

+0

+1 für ANTS Profiler - jeden Cent wert es kostet –

+0

Eine weitere +1 für ANTS Profiler ... auf jeden Fall das Geld wert. – jrista

+0

vereinbart ANTS ist sehr gut – miguel

6

Der Visual Studio Profiler ist nur Teil von Team System. Es ist nicht in Visual Studio Professional enthalten.

Es gibt einen kostenlosen .NET Profiler namens nprof, aber es ist noch nicht veröffentlicht und es kann ziemlich volatil sein. Auch gibt es einige ausgezeichnete kommerzielle Profiler wie ANTS Profiler from Red Gate; Dies sind jedoch keine niedrigen Kosten.

+2

Ich habe noch nie ANTS Profiler verwendet, aber Sie können nichts falsch machen mit etwas, das von Red Gate gemacht wird, es sei denn, Sie haben ein begrenztes Budget. – TheTXI

+0

Wenn ich mich richtig erinnere, hat Red Gate eine 14-Tage-Testversion. Ich würde dir definitiv empfehlen, es zu benutzen. Ich habe es anderen Leuten empfohlen und sie haben schließlich eine Lizenz gekauft. – bastijn

3

Ich habe AQtime mit großem Erfolg verwendet.

Wie bereits erwähnt ANTS ist auch eine gute Option.

1

Es gibt einige Diskussionen über Profiler für .NET in . Ich habe CLR Profiler einige verwendet, und es hat mir geholfen, einige Leistungsprobleme in der Software vor zu kümmern. Könnte einen Versuch wert sein. Microsoft hat a guide on how to use the CLR Profiler veröffentlicht.

4

Meine Empfehlung ist dotTrace. Ist nicht kostenlos, der Preis beträgt 170 EUR für Personal License.

http://www.jetbrains.com/profiler/index.html

+1

Wir verwenden dotTrace in unserer Firma. Es ist sehr einfach zu bedienen und sehr hilfreich. Ich empfehle es :) – Beatles1692

+0

Ich benutze auch seine Testversion, bis es dauert :) und ich liebe seine Einfachheit und wie es multilanguage Projekte verwaltet. http://stackoverflow.com/questions/906915/c-code-performance/907676#907676 –

+0

Ich habe dies verwendet und es funktioniert sehr gut für Performance-Profiling, solange Ihre Lösung nicht zu groß ist. Ich habe versucht, 5000 Unit-Tests im Profiling-Modus auszuführen und mein Speicher war nicht genug (und ich habe 8 Gigs in meinem Entwickler-PC). Daher ist dottracer ressourcenintensiv. – crauscher

2

Wenn Sie nur Speicherprofilierungs tun wollen, ist die .NET Memory Profiler ausgezeichnet. Es hat eine Probezeit und kleine Kosten danach - es lohnt sich. Wenn Sie etwas Geld ausgeben möchten, ist DevPartner Studio sehr gut.

+0

Ich bin gerade jetzt nur auf der Suche nach Ausführungszeit pro Methode, aber Speicherprofilierung kann später kommen – Malfist

+1

Ich kann für .NET Memory Profiler bürgen. Wer sagt, dass Sie keine Speicherlecks in .NET haben können! –

+0

Sie sind keine Speicherlecks im herkömmlichen Sinne, aber ja, Sie können sie haben. GC ist nicht perfekt, auch nicht in Java. – Malfist

5

Überprüfen Sie die EQATEC profiler, kostenlos und funktioniert ziemlich gut. Funktioniert auch für ASP.NET und .NET CF.

+0

Wow, das sieht gut aus. Ich werde es ausprobieren und sehen, ob es mit ANTS konkurrieren kann. +1 von mir. – tobsen

+0

+1 Das ist ziemlich anständig – magritte

1

Für Performance-Tuning gibt es im Gegensatz zur Speicherdiagnose eine simple way to do it.

Es ist kontraintuitiv, aber alles, was Sie tun müssen, ist das Programm unter der IDE zu laufen, und während es langsam ist, pausieren Sie es mehrmals und untersuchen den Call-Stack, um zu sehen, warum es tut, was es tut. Die Chancen stehen gut, dass mehrere Proben zeigen, dass sie etwas tun, das Sie eliminieren könnten. Die eingesparte Zeit entspricht ungefähr dem Bruchteil der Samples, die den von Ihnen festgelegten Code enthielten.

Es ist "schnell und schmutzig", aber im Gegensatz zu den meisten Profilern zeigt es genau die Anweisungen an, die beachtet werden müssen, nicht nur die Funktionen, die sie enthalten. Es gibt auch direkt eine grobe Schätzung der Beschleunigung, die Sie erwarten können, wenn Sie sie beheben. Es wird nicht durch Rekursion verwechselt, und es vermeidet die Call-Tree-Schwierigkeit, dass ein Problem in jedem Zweig klein sein könnte, aber könnte groß sein, indem es über viele Brances verteilt wird.

Ich nehme mehrere Proben N, in der Regel nicht mehr als 20. Wenn es einen Hotspot oder eine Rogue-Methode irgendwo Mitte-Stack aufrufen, nehmen einige Bruchteil F der Ausführungszeit, dann die Anzahl der Proben, die es zeigen wird NF + - sqrt (NF (1-F). Wenn N = 20 und F = 0 ist.15, zum Beispiel, die Anzahl der Proben, die es zeigen wird, ist 3 + - 1,6, so habe ich eine ausgezeichnete Chance, es zu finden.

Oft ist F mehr wie 0,5, also ist die Anzahl der Proben 10 + - 2,2, also wird es nicht verpasst.

Beachten Sie, dass dies absolut nichts damit zu tun hat, wie schnell der Code ist oder wie oft er läuft. Wenn Sie durch die Optimierung einen bestimmten Prozentsatz an Zeit sparen, bestimmt dies, welcher Prozentsatz der Proben es für Sie anzeigt.

Normalerweise gibt es mehrere Orte zu optimieren. Wenn Problem 1 F1 = 0,5 hat und Problem 2 F2 = 0,1, dann, wenn Sie Problem 1 beheben (Verdoppelung der Programmgeschwindigkeit), dann erhöht sich F2 normalerweise um diesen Faktor auf 0,2. So können Sie es wieder tun und sicher sein, Problem 2 zu finden. Auf diese Weise können Sie eine Reihe von Problemen umwerfen, bis der Code praktisch optimal ist.

+0

Haha, viel Spaß, wir sehen uns in ein paar Jahrzehnten! Was passiert, wenn Sie Millionen von Anrufen haben? – leppie

+0

@leppie: Entschuldigung? Wenn Sie Millionen von Anrufen pro Sekunde meinen, ist das egal. Was zählt, ist der Zeitanteil. Und übrigens, das ist in einem Bruchteil der Zeit erledigt, die man braucht, um ein Werkzeug zu installieren und zu lernen. –

+0

War das ein Downvote, weil ich nicht dachte, dass es funktionieren würde oder einfach nicht "gefallen" würde? –

Verwandte Themen