4 Stimmen

Meinungen zu yourkit .NET profiler?

Verwendet jemand den .NET Profiler von yourkit? Ich bin auf der Suche nach einem guten .NET Profiler und bin auf den von yourkit gestoßen. Da ich eine Einzelplatzlizenz erwerben würde, würde er für mich 79 EUR kosten, was imho ganz ok ist. Was mir auch gefällt: die mehr oder weniger einfach zu bedienende und freundliche GUI.

Aber ich bin nicht sehr erfahren in der Erstellung von Profilen für .NET-Anwendungen, daher frage ich mich, ob Yourkit .NET Profiler die Arbeit erledigen kann. Yourkit scheint allerdings in der Java-Welt ziemlich bekannt zu sein.

Irgendwelche Meinungen?

1voto

Mike Dunlavey Punkte 39339

Ihre Meinung? Ja, ja. Während Sie sich entscheiden, ob Sie einen Profiler kaufen sollen oder nicht, Versuchen Sie dies .

HINZUFÜGEN: @Max: Schritt-für-Schritt-Anleitung: Die IDE hat eine Schaltfläche "Pause". Führen Sie Ihre Anwendung unter der IDE aus, und während sie subjektiv langsam ist, d.h. während Sie darauf warten, drücken Sie den "Pause"-Button. Dann erhalten Sie einen Schnappschuss des Aufrufstapels.

Um einen Schnappschuss des Aufrufstapels zu machen, zeige ich ihn an (das ist eines der Debug-Fenster). In den IDE-Optionen können Sie festlegen, was in der Stack-Ansicht angezeigt werden soll. Ich schalte die Option zur Anzeige der Funktionsargumente aus, weil das die Zeilen zu lang macht. Ich interessiere mich für die Zeilennummer, in der der Aufruf stattfindet, und den Namen der aufgerufenen Funktion. Dann kann man in der Ansicht des Aufrufstapels "Alles markieren" und dann "Kopieren", um es dann in Notepad einzufügen. Ich weiß, das ist etwas umständlich, aber ich habe sie immer von Hand aufgeschrieben.

Ich nehme auf diese Weise einige Proben. Dann schaue ich nach Zeilen, die in mehr als einer Probe vorkommen, denn das sind die Zeitfresser. Einige sind einfach notwendig, wie z. B. "call main", aber andere nicht. Das sind die Goldnuggets. Wenn ich keine finde, nehme ich immer wieder Proben, bis zu etwa 20. Wenn ich dann immer noch keine finde (was sehr ungewöhnlich ist), ist das Programm bereits ziemlich gut optimiert. (Ein wichtiger Punkt ist, dass das Programm jedes Mal, wenn Sie dies tun, schneller wird, und dabei werden die verbleibenden Leistungsprobleme relativ größer und leichter zu finden. D.h. das Programm wird nicht nur um ein bestimmtes Verhältnis R schneller, sondern die verbleibenden Probleme werden prozentual um das gleiche Verhältnis größer.)

In diesem Prozess frage ich mich auch, was das Programm in dieser Probe macht und warum. Das "Warum" ist sehr wichtig, denn so kann man feststellen, ob eine Zeile wirklich notwendig ist oder durch etwas weniger Kostspieliges ersetzt werden könnte. Wenn ich mir nicht sicher bin, warum eine Zeile da ist, gehe ich ein wenig in Einzelschritten vor, schaue mir vielleicht die Daten an oder lasse das Programm ein paar Stufen zurückgehen (Umschalt-F11), bis ich verstehe, was es tut. Das war's dann auch schon.

Bestehende Profiler könnten bei diesem Prozess helfen, wenn sie tatsächlich Stapelproben nehmen, die Proben aufbewahren, die Linien danach ordnen, wie viel Prozent der Proben sie enthalten, und es dann ermöglichen, einzelne Proben im Detail zu untersuchen. Vielleicht werden sie das irgendwann tun, aber im Moment tun sie es nicht. Sie sind mit Themen wie Effizienz und Messung beschäftigt.

*Angenommen, Ihr Code verbringt 90 % seiner Zeit mit X und 9 % seiner Zeit mit Y, beides nicht wirklich notwendig. Nehmen Sie eine kleine Anzahl von Stichproben, und Sie werden X sehen, aber wahrscheinlich nicht Y. Wenn Sie X beheben, erhalten Sie eine 10-fache Beschleunigung. Führen Sie die Abtastung erneut durch (möglicherweise müssen Sie eine äußere Schleife um das Programm legen, damit Sie Abtastungen vornehmen können). Jetzt sehen Sie Y mit Sicherheit, denn jetzt dauert es 9% x 10x = 90%. Durch die Korrektur erhalten Sie eine weitere 10-fache, insgesamt also eine 100-fache Beschleunigung.

0voto

Bill Yang Punkte 1373

Haftungsausschluss: Mein Vorschlag basiert auf der Annahme, dass Sie es mit der Erstellung von Leistungsprofilen ernst meinen und die genaue prozentuale Verbesserung Ihrer Tuning-Maßnahmen herausfinden möchten.

Aufgrund meiner Erfahrung mit Performance-Profilern wie ANTS und DotTrace denke ich, dass sie nützlich sind, auch wenn sie alle an der einen oder anderen Stelle versagen.

Das Problem mit allgemeinen Leistungsprofilern ist, dass sie zu viel Overhead verursachen und das Ergebnis ungenau wird. Sie leisten jedoch gute Arbeit beim Auffinden schwerer Operationen. Wenn Sie einen Profiler verwenden und eine Operation finden, die 40 % der gesamten Prozesszeit beansprucht, benötigt sie dann tatsächlich 40 %? Vielleicht nicht. Aber wahrscheinlich braucht sie sehr viel Zeit für die Ausführung.

Um Ihre Frage zu beantworten: Es spielt keine Rolle, ob Yourkit "exzellent" oder "zufriedenstellend" ist, es sei denn, es ist so schlecht, dass Sie schreckliche Geschichten darüber hören. Denn es wird Ihnen ein umfassendes Bild von den Leistungsengpässen in Ihrer Anwendung vermitteln. Es gibt Ihnen eine Idee, wo Sie Ihre eigenen Zeitprotokollierungsanweisungen einfügen können, um das tatsächliche Leistungsprofil Ihrer Anwendung herauszufinden.

PS. Ich empfehle Ihnen auch die Lektüre von Leistungsprofilierung Dadurch erhalten Sie ein umfassendes Verständnis des Konzepts und können die Vorschläge der anderen besser nachvollziehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X