web-dev-qa-db-fra.com

Outils d'analyse de profil et de mémoire pour Delphi

Je suis récemment passé de Delphi 4 à Delphi 2009. Avec Delphi 4, j’utilisais GpProfile de Primoz Gabrijelcic comme profileur et Memory Sleuth de Turbo Power pour l’analyse de la mémoire et le débogage de fuite. Les deux ont bien fonctionné pour moi. Mais il me faut maintenant de nouveaux outils compatibles avec Delphi 2009. 

Le leader des outils de profilage/d’analyse pour Delphi est largement/ AQTime by AutomatedQA . Ils ont même récemment englouti Memproof d’Atanas Soyanov , qui, j’ai compris qu’il était un excellent outil d’analyse de mémoire libre, a intégré ses fonctionnalités à AQTime. Mais AQTime coûte très cher pour un programmeur individuel. En réalité, cela coûte plus cher que la mise à niveau vers Delphi 2009!

Ma question est donc la suivante: existe-t-il d'autres options moins coûteuses pour le profilage et l'analyse de la mémoire dans les versions actuelles de Delphi que vous recommandez ou recommandez-vous, ou devrais-je mordre la balle et payer beaucoup pour AQTime?


Addenum: Il semble que les premiers répondants indiquent que le gestionnaire FastMM déjà inclus dans Delphi est très utile pour détecter les fuites de mémoire.

Alors, y a-t-il de bonnes alternatives pour le profilage du code source? 

Je suis curieux de savoir/ ProDelphi de Michael Adolph , qui représente moins d’un sixième du coût d’AQTime. L'utilisez vous? AQTime vaut-il la peine de payer six fois plus?


Addenum 2: J'ai téléchargé des versions d'évaluation d'AQTime et de ProDelphi.

AQTime était un peu accablant et un peu déroutant au début. Il a fallu quelques heures pour trouver quelques astuces nécessaires pour le connecter. 

ProDelphi ressemblait beaucoup au GpProfile auquel j'étais habitué. Mais ses fenêtres sont encombrées et déroutantes et ce n’est pas aussi agréable que GpProfile.

Pour moi, les grandes différences semblent être:

  1. ProDelphi change votre code. AQTime ne le fait pas. Changer de code peut corrompre vos données si quelque chose ne va pas, mais mon expérience avec GpProfile était que cela ne m'est jamais arrivé. Plus un pour AQTime.

  2. ProDelphi nécessite que vous désactiviez l'optimisation. Mais ce que vous voulez profiler, c'est votre programme avec optimisation, la façon dont il sera exécuté. Plus un pour AQTime.

  3. ProDelphi seul peut établir un profil jusqu’à la fonction ou à la procédure. AQTime peut aller jusqu'à des lignes individuelles. Plus 2 pour AQTime.

  4. ProDelphi a une version gratuite qui profilera 20 routines, et sa version pro coûte moins de 100 USD. AQTime est de 600 $ US. Plus 4 pour ProDelphi.

Le score est maintenant de 4-4. Qu'est-ce que tu penses?


Addenum 3: Primoz Gabrijelcic envisage de faire fonctionner GpProfile à nouveau. Voir ses commentaires sur certaines des réponses ci-dessous. Il sur StackOverflow en tant que Gabr .


Addenum 4: Il semble qu'il existe peut-être une solution de profileur après tout. Voir asmprofiler open source d'André, décrit ci-dessous .

53
lkessler

Pour le prix, vous ne pouvez pas battre FastMM4 en tant que traqueur de mémoire. Il est simple à utiliser mais puissant et bien intégré à Delphi.
Je suppose que vous savez que, sans télécharger, installer ou changer quoi que ce soit, il suffit de mettre cette ligne

ReportMemoryLeaksOnShutDown := True;

n'importe où dans votre code, permettra d'activer le rapport de base des fuites de mémoire.
Si vous avez besoin de plus d'informations similaires à un crash, EurekaLog est un très bon produit que nous utilisons. MadExcept a également une bonne réputation ... 

Pour le profilage spécifique, nous avons AQTime. 

Quant à gpProfile, vous pouvez essayer de bogue gabr sur SO pour une mise à jour ... ou allez et update gpProfile vous-même car il est open source . ;-)

35
François

J'ai créé un profileur open source pour Delphi: http://code.google.com/p/asmprofiler/

Ce n'est pas parfait, mais c'est gratuit et open source :-).

La principale raison pour laquelle j'ai choisi cette option est que j'ai raté un arbre d'appel exact. Par exemple, ProDelphi enregistre uniquement un récapitulatif et le nombre total de tous les appels. Vous ne pouvez pas voir quels appels ont été effectués par une procédure spécifique à une heure spécifique (ou une durée .__). Et il a un tableau chronologique, de sorte que vous pouvez voir comment la durée de l'appel a changé au fil du temps.

30
André
24
Mohammed Nasman

Je suis très heureux avec AQtime pour le profilage.

7
Nick Bradbury

Ayant utilisé à la fois GpProfile et AQTime, j'ai constaté que les deux systèmes étaient efficaces pour déterminer quelle méthode appelait un cou de bouteille.

Cependant, AQTime peut également me dire quelle ligne de code est la cause, sans apporter de modification à mon code source (bien que cela fonctionne mieux avec le débogage et le débogage de TD32).

Je l'ai récemment utilisé pour accélérer une routine d'environ 30 fois (en raison d'une mauvaise utilisation d'une fonction de bibliothèque interne)

Cependant, je n'ai pas eu à payer moi-même!

4
Gerry Coll

Nous utilisons AQTime Pro et en sommes satisfaits. Smartbear a récemment publié une édition standard entièrement gratuite AQTime . La plupart des fonctionnalités sont toujours là, mais elles ont bien sûr enlevé un peu

3
Roland Bengtsson

Je suis d’accord avec vous sur l’interface de ProDelphi, mais c’est un travail assez bon pour que nous restions heureux. Nous n'avons besoin de profiler que très occasionnellement lorsque nous avons un problème de performance important, et cela nous a toujours aidés à trouver le problème assez rapidement. Très bon rapport qualité-prix, et Michael semble assez bien pour le garder à jour pour les nouvelles versions.

Une des choses que je suggérerais est que, comme il est nécessaire d’insérer du code, il est inestimable d’avoir tout le code pertinent dans une sorte de VCS. Lorsque nous avons besoin de profiler, nous:

  • Vérifier tous les fichiers pertinents dans
  • Vérifiez-les tous
  • Faire le profilage dont nous avons besoin, alors
  • Annulez toutes les caisses et retrouvez votre position actuelle.
2
RichardS

Quelqu'un a-t-il essayé le composant Profiler dans l'espace Delphi? C'est un freeware avec source et son écriture dit:

Si vous cherchez un facile et moyen précis de mesurer le temps d'exécution de votre code gratuitement, TProfiler est De quoi as-tu besoin. TProfiler est un composant non visuel et de débogage qui vous permet de créer nommé timers dans votre code.

Chaque minuterie de TProfiler fournit le information suivante:

Le nombre de fois que la minuterie a été activé (nombre de hits) Le total délai d'exécution La moyenne d'exécution temps à chaque coup Temps d'exécution sur le premier hit Temps d’exécution sur le dernier coup Le coup avec minimum temps d'exécution Le hit avec maximum temps d'exécution

2
lkessler

Pour un profileur, vous pouvez essayer SmartInspect de Gurock Software. Je n'ai jamais utilisé GpProfile, mais jeter un coup d'œil rapide sur ses fonctionnalités m'a rappelé SmartInspect. Fait intéressant, il ne prétend pas être un profileur, mais il semble l'être autant que GpProfile (sauf si quelque chose me manque) Il supporte Delphi 2009 et a un essai gratuit et est un peu moins cher qu'AQTime.

Note: SmartInspect est un enregistreur plutôt qu'un profileur.

1
Jim McKeeth

C’est vrai, pour le profilage, le profil GpProfile de Primoz me manque et je n’ai pas trouvé un bon remplaçant. J'ai déjà essayé AQTime, mais je n'en étais pas trop satisfait pour le prix.

Pour le suivi des fuites de mémoire et des accès mémoire louche, je ne pouvais être plus heureux qu'avec FastMM4.

1
mghie

J'utilise ProDelphi depuis longtemps et je trouve que cela répond à mes besoins.

J'ai pu obtenir des résultats stupéfiants en termes d'amélioration des performances système en utilisant les données fournies.

Pour les petits projets, la version gratuite convient.

Pour les projets plus importants, vous aurez besoin de la version pro (payée).

1
Peter Ingham

Le gestionnaire de mémoire FastMM4 mentionné dans cette réponse plus ancienne ("Comment surveiller ou visualiser la fragmentation mémoire d’une application Delphi") conserve une liste de toutes les allocations pouvant être interrogées au moment de grille à l'aide de l'application de démonstration fournie). Il ne montre pas exactement quel objet fuit, car les statistiques sont par taille de bloc. Mais cela peut être utile pour la surveillance à long terme des applications en production, par exemple des serveurs ou des services. Je l’intègre actuellement dans un framework de serveur d’applications Web (commercial) en tant que module complémentaire «VisualMM».

0
mjn