it-swarm.com.de

Profiler- und Speicheranalyse-Tools für Delphi

Ich habe kürzlich ein Upgrade von Delphi 4 auf Delphi 2009 durchgeführt. Mit Delphi 4 hatte ich GpProfile von Primoz Gabrijelcic als Profiler und Memory Sleuth von Turbo Power für die Speicheranalyse und das Debuggen von Fehlern verwendet. Beide haben für mich gut funktioniert. Aber ich brauche jetzt neue Tools, die mit Delphi 2009 funktionieren werden. 

Der Marktführer bei Profiling/Analysis-Tools für Delphi ist mit großem Abstand offensichtlich AQTime von AutomatedQA . Vor kurzem verschlang sie sogar Memproof von Atanas Soyanov , von dem ich wusste, dass es ein hervorragendes und freies Speicheranalyse-Tool ist, und seine Funktionalität in AQTime integriert. AQTime ist jedoch für einen einzelnen Programmierer sehr teuer. Es kostet tatsächlich mehr als das Upgrade auf Delphi 2009!

Meine Frage ist also: Gibt es andere, kostengünstigere Optionen für die Profilerstellung und Speicheranalyse in aktuellen Delphi-Versionen, mit denen Sie zufrieden sind und die Sie empfehlen, oder sollte ich die Kugel beißen und die großen Kosten für AQTime bezahlen?


Addenum: Es scheint, dass die ersten Antwortenden darauf hindeuten, dass der bereits in Delphi enthaltene FastMM-Manager sehr gut zum Auffinden von Speicherverlusten geeignet ist.

Gibt es also gute Alternativen für das Quellcode-Profiling? 

Ich bin neugierig auf ProDelphi von Michael Adolph , was weniger als ein Sechstel der Kosten von AQTime ist. Benutzt du es? Lohnt sich AQTime sechsmal so viel?


Addenum 2: Ich habe Testversionen von AQTime und ProDelphi heruntergeladen.

AQTime war anfangs etwas überwältigend und etwas verwirrend. Es dauerte ein paar Stunden, um einige der Tricks zu finden, die nötig waren, um es anzuschließen. 

ProDelphi war dem GpProfile, das ich gewohnt war, sehr ähnlich. Aber die Fenster sind unübersichtlich und verwirrend und es ist nicht ganz so schön wie GpProfile.

Für mich scheinen die großen Unterschiede zu sein:

  1. ProDelphi ändert Ihren Code. AQTime nicht. Das Ändern von Code kann Ihre Daten beschädigen, wenn etwas schief geht. Meine Erfahrung mit GpProfile bestand jedoch darin, dass mir nie etwas passiert ist. Plus eine für AQTime.

  2. ProDelphi erfordert, dass Sie die Optimierung ausschalten. Was Sie jedoch profilieren möchten, ist Ihr Programm mit der Optimierung, wie es ausgeführt wird. Plus eine für AQTime.

  3. ProDelphi kann sich nur auf die Funktion oder Prozedur beschränken. AQTime kann auf einzelne Zeilen zurückgreifen. Plus 2 für AQTime.

  4. ProDelphi bietet eine kostenlose Version mit 20 Profilen an. Die Pro-Version kostet weniger als 100 USD. AQTime beträgt 600 USD. Plus 4 für ProDelphi.

Die Partitur ist jetzt 4-4. Was denkst du?


Addenum 3: Primoz Gabrijelcic plant, GpProfile wieder zum Laufen zu bringen. Siehe seine Kommentare zu einigen Antworten unten. Er auf StackOverflow als Gabr .


Addenum 4: Es scheint, als könnte es doch eine Profiler-Lösung geben. Siehe Andres Open Source asmprofiler, unten beschrieben .

53
lkessler

Für den Preis können Sie FastMM4 nicht als Memory-Tracker schlagen. Es ist einfach zu bedienen und dennoch leistungsstark und gut in Delphi integriert.
Ich schätze, dass Sie das wissen, ohne irgendetwas anderes herunterzuladen, zu installieren oder zu verändern

ReportMemoryLeaksOnShutDown := True;

Überall in Ihrem Code können Sie grundlegende Berichte über Speicherverluste erstellen.
Wenn Sie mehr Informationen über Abstürze benötigen, ist EurekaLog ein sehr gutes Produkt, das wir verwenden. MadExcept hat auch einen guten Ruf ... 

Speziell für das Profiling haben wir AQTime. 

Wie bei gpProfile können Sie versuchen, gabr auf SO für ein Update zu testen ... oder gehen und gpProfile selbst aktualisieren, da es sich um Open Source handelt . ;-)

35
François

Ich habe einen Open Source-Profiler für Delphi erstellt: http://code.google.com/p/asmprofiler/

Es ist nicht perfekt, aber es ist kostenlos und Open Source :-).

Der Hauptgrund, warum ich es gemacht habe, war, dass ich einen genauen Aufrufbaum vermisst habe. Zum Beispiel speichert ProDelphi nur eine Zusammenfassung und die Gesamtzahl aller Anrufe. Sie können nicht sehen, welche Aufrufe eine bestimmte Prozedur zu einem bestimmten Zeitpunkt (oder zu einem Zeitpunkt ) Gemacht hat. Und es hat ein Zeitdiagramm, damit Sie sehen können, wie sich die Anrufdauer im Laufe der Zeit verändert hat.

30
André

Werfen Sie einen Blick auf Eric Grange's Sampling Profiler

24
Mohammed Nasman

Ich war mit AQtime für das Profiling sehr zufrieden.

7
Nick Bradbury

Nachdem ich sowohl GpProfile als auch AQTime verwendet hatte, habe ich festgestellt, dass beide Methoden herausfinden, welche Methode einen Flaschenhals verursacht.

AQTime kann mir jedoch auch sagen, welche Codezeile dies verursacht, ohne Änderungen an meinem Quellcode vorzunehmen (obwohl dies am besten mit TD32-Debugging und Debugging-Dcus funktioniert).

Ich habe es kürzlich verwendet, um eine Routine um etwa das 30-fache zu beschleunigen (wegen der schlechten Verwendung einer internen Bibliotheksfunktion).

Allerdings musste ich nicht selbst dafür bezahlen!

4
Gerry Coll

Wir verwenden AQTime Pro und sind damit zufrieden. Smartbear hat kürzlich eine völlig kostenlose AQTime Standard Edition veröffentlicht. Die meisten Funktionen sind noch vorhanden, aber sie haben natürlich etwas entfernt

3

Ich stimme Ihnen hinsichtlich der Benutzeroberfläche von ProDelphi zu, aber es ist gut genug, dass wir gerne dabei bleiben. Wir müssen nur sehr selten ein Profil erstellen, wenn wir ein erhebliches Leistungsproblem haben, und es hat uns immer geholfen, das Problem ziemlich schnell zu finden. Sehr gutes Preis-Leistungs-Verhältnis, und Michael scheint ziemlich gut darin zu sein, dass es für neue Versionen aktualisiert wird.

Eine Sache, die ich vorschlagen möchte, ist, dass der Code in irgendeiner Art von VCS von unschätzbarem Wert ist. Wenn wir ein Profil benötigen, können wir:

  • Überprüfen Sie alle relevanten Dateien in
  • Überprüfe sie alle
  • Machen Sie dann das Profiling, das wir brauchen
  • Alle Kassen abbrechen und effektiv dorthin zurückkehren, wo wir waren.
2
RichardS

Hat jemand die Profiler-Komponente in Delphi Area ausprobiert? Es ist Freeware mit Quellcode und es wird geschrieben:

Wenn Sie nach einer einfachen und Genauen Methode suchen, um die Ausführungszeit Ihres Codes kostenlos zu messen, ist TProfiler Das, was Sie brauchen. TProfiler ist eine Nicht visuelle und Debugging-Komponente , Mit der Sie benannte Timer in Ihrem Code erstellen können.

Jeder Timer des TProfiler enthält die folgenden Informationen:

Anzahl der Aktivierungen des Zeitgebers (Anzahl der Treffer) Die Gesamtzeit Der Ausführung Die durchschnittliche Ausführungszeit Bei jedem Treffer Die Ausführungszeit am Dem ersten Treffer Ausführungszeit am Letzten Treffer Der Treffer mit minimaler Ausführungszeit Der Treffer mit maximaler Ausführungszeit

2
lkessler

Für einen Profiler könnten Sie SmartInspect von Gurock Software ausprobieren. Ich habe nie GpProfile verwendet, aber ein kurzer Blick auf seine Funktionen erinnerte mich an SmartInspect. Interessanterweise gibt es keinen Anspruch auf Profilerstellung, aber es scheint so viel zu sein wie GpProfile (es sei denn, mir fehlt etwas). Es unterstützt Delphi 2009 und hat eine kostenlose Testversion. Es ist etwas günstiger als AQTime.

Hinweis : SmartInspect ist ein Logger und kein Profiler.

1
Jim McKeeth

Es stimmt, zum Profilieren vermisse ich Primoz 'GpProfile und habe keinen guten Ersatz gefunden. Ich habe AQTime einmal ausprobiert, war aber für den Preis nicht sehr zufrieden damit.

Für die Nachverfolgung von Speicherlecks und zwielichtigen Speicherzugriffen könnte ich jedoch nicht glücklicher sein als mit FastMM4.

1
mghie

Ich benutze ProDelphi schon lange und finde, dass es meinen Bedürfnissen entspricht.

Mit den bereitgestellten Daten konnte ich beeindruckende Ergebnisse bei der Verbesserung der Systemleistung erzielen.

Für kleine Projekte ist die kostenlose Version in Ordnung.

Für größere Projekte benötigen Sie die (kostenpflichtige) Pro-Version.

1
Peter Ingham

Der FastMM4-Speichermanager in dieser älteren Antwort erwähnt (" Speicherfragmentierung einer Delphi-Anwendung überwachen oder visualisieren ")) führt eine Liste aller Zuordnungen, die zur Laufzeit abgefragt werden können (und angezeigt werden) in einem Raster mit der mitgelieferten Demoanwendung). Es zeigt nicht genau an, welches Objekt undicht ist, da die Statistiken für die Blockgröße gelten. Es kann jedoch nützlich sein, um Anwendungen in der Produktion, zum Beispiel Server oder Dienste, über längere Zeit zu überwachen. Ich baue es derzeit in ein (kommerzielles) Webanwendungsserver-Framework als 'VisualMM'-Add-On ein.

0
mjn