2009-02-21 10 views
6

Microsoft machen diese Software namens "Visual Studio 2008 Professional". Ich habe festgestellt, dass es keinen Anwendungsperformance-Profiler oder etwas Ähnliches darin gibt, was es für mich nicht so "professionell" erscheinen lässt.Leistung Profilerstellung in Visual Studio 2008 "Pro"

Wenn Microsoft keinen Profiler enthält, was sind Ihre Drittanbieteroptionen für die Zeitprofilerstellung für Visual Studio 2008? Kostenlose wäre vorzuziehen, wie dies für Uni-Studenten Zwecke ist: P

Antwort

4

Persönlich verwende ich den Red Gate Profiler.

Andere schwören auf die JetBrains.

Die scheinen die Optionen zu sein, und es gibt nicht viel zwischen ihnen.

0

Ich benutze JetBrain dotTrace und es funktioniert ganz gut.

2

Ich benutze die Team System Edition. Das kommt mit einem Profiler, der ziemlich gut ist. Es gibt noch andere Möglichkeiten gibt:

Hoffnung, das hilft. Hinweis: Keines von ihnen ist kostenlos.

Glückliche Profilierung :)

3

Ich benutze JetBrains dotTrace profiler. Dies ist ein kommerzieller Profiler. (Vollständige Offenlegung: Ich erhalte eine kostenlose Lizenz als MVP Es hat obwohl sehr nützlich erwiesen..)

Es gibt auch die freie CLR Profiler for .NET 2.0 und an article explaining how to use it.

+1

Hinweis VS 2008 stehen Profiler allein Kommandozeile Laden, dass der freie ein für * Speicher * Zuweisung Verfolgung aber gerade perf Analyse es die anderen Systeme eigentlich sehr gut ist spuren. Keine freien, die ich kenne, unterstützen Mixed-Mode-Profiling oder Sampling statt Instrumentierung. AQTime und das Team-System machen das beide – ShuggyCoUk

+0

Ich habe gerade diese dotTrace-Demo ausprobiert. Ich hatte gehofft, es wäre nicht das, was ich erwartet hatte, aber es war so. Es überflutet dich mit wunderschön präsentierten Sachen, die keine Rolle spielen. Was zählt, ist, dass es weit über 90% seiner Zeit im Aufruf von "myBitmap.SetPixel" ausgibt, und der kleine Rest an verschiedenen Stellen, wie einen Strahl mit einer Kugel zu schneiden, wie leicht mit nicht vielen Pausen gezeigt wird. Ich bin in DT herumgereist, aber nichts darin hat mir erzählt, was die Pausen mir erzählt haben. –

+0

@MikeDunlavey: Ich habe nicht wirklich genug Kontext, um diesen Kommentar zu verstehen, aber dotTrace hat sicherlich geholfen, Engpässe in Noda Time zu finden ... –

6

Es gibt ein paar freie Profilometer, nicht so vollständig oder poliert wie die kommerziellen sind, aber sie können auf jeden Fall helfen, eine Menge:

Eqatec - Das für Windows CE entwickelt wurde, aber funktioniert gut für normale Anwendungen .

Soft Prodigy Profile Sharp - Dies ist eigentlich ein Open-Source-Projekt in C# geschrieben, so dass Sie damit basteln können, wenn Sie möchten.

0

same answer as:

Re-edited: Sie gefragt, was waren Ihre Möglichkeiten. Wenn Ihr Herz auf Profiling eingestellt ist, dann suchen Sie nach einem Profiler.

Auf der anderen Seite, wenn Sie tatsächlich ein Leistungsproblem zu finden haben, funktioniert die einfache Methode genauso gut oder besser als fast jeder Profiler. Ich sage fast jeder, denn in einigen Profilern kann man tatsächlich herausholen, was man wissen muss, nämlich die Zeitkosten, die einzelnen Anweisungen, insbesondere Anrufanweisungen, zuzuschreiben sind.

Der Zeitaufwand einer Anweisung ist die Zeit, die gespeichert würde, wenn die Anweisung entfernt werden könnte, und eine gute Schätzung davon ist der Bruchteil der Aufrufstapelabtastwerte, die sie enthalten. Sie müssen diesen Bruch nicht mit hoher Genauigkeit schätzen.Wenn die Instruktion auf 5 von 10 Proben angewendet wird, liegen die Kosten wahrscheinlich irgendwo zwischen 45% und 55%. Egal - wenn Sie es loswerden könnten, würden Sie seine Kosten sparen.

So ist es nicht schwer, Leistungsprobleme zu finden. Nehmen Sie einfach eine Reihe von Call-Stack-Samples, sammeln Sie die Instruktionen für diese Samples und sortieren Sie die Instruktionen nach dem Bruchteil der Samples, die sie enthalten. Unter den High-Fraction-Befehlen befinden sich einige, die Sie optimieren können, und Sie müssen nicht raten, wo sie sind.

Ich vereinfache etwas, weil es oft hilfreich ist, mehr Zustandsinformationen als nur den Aufruf-Stapel zu untersuchen, um zu sehen, ob einige Arbeit wirklich notwendig ist. Aber ich hoffe, der Punkt ist gemacht.

Menschen äußern Zweifel, dass es in der Gegenwart von Rekursion funktionieren könnte, oder arbeiten an großen Programmen. Ein kleiner Gedanke (und Experimente) zeigt, dass diese Einwände nicht stichhaltig sind.

+0

Allerdings ist meine Frage spezifisch für Visual Studio 2008 –

+0

Es funktioniert in jeder IDE, einschließlich VS . –