Outils de profilage et D'analyse de mémoire pour Delphi [closed]

j'ai récemment mis à niveau de Delphi 4 à Delphi 2009. Avec Delphi 4, j'avais utilisé GpProfile par Primoz Gabrijelcic comme profileur et Memory Sleuth par Turbo Power pour l'analyse de la mémoire et le débogage des fuites. Les deux ont bien fonctionné pour moi. Mais j'ai maintenant besoin de nouveaux outils qui fonctionneront avec Delphi 2009.

le leader dans les outils de profilage/analyse pour Delphi par une large marge est évidemment AQTime par AutomatedQA . Ils ont même récemment englouti Memproof by Atanas Soyanov , que j'ai compris était un outil d'analyse de mémoire excellent et libre, et incorporé sa fonctionnalité dans AQTime. Mais AQTime est très cher pour un programmeur. Il coûte en fait plus cher que la mise à niveau à Delphi 2009 coût!

donc ma question Est: y a-t-il d'autres options moins chères pour faire le profilage et l'analyse de la mémoire dans les versions actuelles de Delphi que vous êtes heureux avec et recommander, ou devrais-je mordre la balle et payer les gros dollars pour AQTime?


Addenum: Il semble que le début de answerers indiquant que le FastMM manager déjà inclus dans Delphi est très bon pour trouver les fuites de mémoire.

alors, y a-t-il de bonnes solutions de rechange au profilage du code source?

un que je suis curieux au sujet est ProDelphi par Michael Adolph qui est moins d'un sixième du coût de L'AQTime. L'utilisez-vous? Est-ce que AQTime vaut la peine de payer six fois plus?


Addenum 2: j'ai téléchargé les versions d'essai D'AQTime et de ProDelphi.

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

ProDelphi ressemblait beaucoup au GpProfile auquel j'étais habitué. Mais ses fenêtres sont encombré et confus et il n'est pas tout à fait aussi agréable que GpProfile.

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

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

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

  3. ProDelphi ne peut profiler jusqu'à la fonction ou la procédure. AQTime peut descendre à des lignes individuelles. Plus 2 pour AQTime.

  4. ProDelphi a une version gratuite qui va profiler 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'en pensez-vous?


Addenum 3: Primoz Gabrijelcic est la planification pour obtenir GpProfile de travailler à nouveau. Voir ses commentaires sur certaines des réponses ci-dessous. Il est sur StackOverflow comme Gabr .


Addenum 4: Il semble que il peut y avoir un profileur de solution, après tout. Voir André open source asmprofiler, décrit ci-dessous .

53
demandé sur lkessler 2008-11-15 01:20:32

12 réponses

pour le prix, vous ne pouvez pas battre FastMM4 comme un tracker de mémoire. C'est simple à utiliser, mais puissant et bien intégré avec Delphi.

Je suppose que vous savez que, sans télécharger, installer ou changer quoi que ce soit d'autre, il suffit de mettre cette ligne

ReportMemoryLeaksOnShutDown := True;

n'importe où dans votre code, permettra le rapport de base des fuites de mémoire.

Si vous avez besoin de plus d'informations comme crash, EurekaLog est un très bon produit que nous utilisons. MadExcept jouit également d'une bonne réputation...

pour le profilage en particulier, nous avons AQTime.

comme pour gpProfile, vous pouvez essayer et bug gabr sur SO pour une mise à jour... ou allez et mettre à jour gpProfile vous-même comme il est open source . ;- )

35
répondu François 2017-05-23 12:02:17

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

Il n'est pas parfait, mais il est gratuit et open source :-).

la principale raison pour laquelle je l'ai fait était parce que j'ai manqué un arbre d'appel exact. Par exemple, ProDelphi ne stocke qu'un résumé et le nombre total de tous les appels, vous ne pouvez pas voir ce qui appelle une procédure spécifique à un moment donné fait (ou durée.) Et il y a un horodatage, donc vous peut voir comment la durée de l'appel a changé avec le temps.

30
répondu 2 revs, 2 users 96%André 2011-11-11 05:55:36
24
répondu Mohammed Nasman 2012-01-01 20:35:16

J'ai été très heureux avec AQtime pour le profilage.

7
répondu Nick Bradbury 2008-11-15 02:04:12

ayant utilisé à la fois GpProfile et AQTime, j'ai trouvé que les deux sont efficaces pour trouver quelle méthode call cause un goulot de bouteille.

cependant AQTime peut également me dire quelle ligne de code est à l'origine de cela, sans apporter de changements à mon code source (bien que cela fonctionne mieux avec les dcus de débogage et de débogage de TD32).

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

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

4
répondu Gerry Coll 2008-11-17 02:43:14

nous utilisons AQTime Pro et nous en sommes satisfaits. Smartbear a récemment publié un AQTime standard edition entièrement gratuit . La plupart des fonctionnalités sont toujours là, mais ils ont bien sûr enlevé un peu

3
répondu Roland Bengtsson 2011-07-08 06:53:11

je suis d'accord avec vous sur l'interface de ProDelphi, mais il fait un assez bon travail que nous sommes heureux de rester avec elle. 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é à trouver le problème assez rapidement. Très bonne valeur pour l'argent, et Michael semble assez bon sur la tenue à jour pour les nouvelles versions.

une chose que je suggère est que parce qu'il exige que le code soit inséré, ayant tous les le code pertinent dans une sorte de CV est inestimable. Quand nous avons besoin de profil, nous:

  • vérifier tous les fichiers pertinents dans
  • Vérifier tous les
  • Faire le profilage nous avons besoin, puis
  • annuler toutes les vérifications, retournant effectivement à l'endroit où nous étions.
2
répondu RichardS 2008-11-16 10:42:11

est-ce que quelqu'un a essayé le composant profileur à Delphi? c'est freeware avec source et c'est writeup dit:

si vous êtes à la recherche d'un facile et méthode précise pour mesurer le temps d'exécution de votre code gratuitement, TProfiler est ce dont vous avez besoin. TProfiler est un composante non visuelle et de débogage qui vous permet de créer nommé minuteries dans votre code.

chaque timer de TProfiler fournit le informations suivantes:

le nombre de fois que le minuteur a été activé (nombre de coups) le total le temps d'exécution moyen d'exécution temps sur chaque hit temps d'exécution sur le premier hit de temps d'Exécution sur le dernier succès avec minimum le temps D'exécution le coup avec le maximum délai d'exécution

2
répondu lkessler 2008-11-20 01:27:11

c'est vrai, pour le profilage je manque le GpProfile de Primoz, et je n'ai pas trouvé de bon remplaçant. Une fois, J'ai essayé AQTime, mais je n'étais pas très satisfait du prix.

pour le suivi des fuites de mémoire et des accès de mémoire douteux mais je ne pourrais pas être plus heureux que je ne le suis avec FastMM4.

1
répondu mghie 2008-11-14 22:34:44

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

j'ai pu obtenir des résultats étonnants dans l'amélioration des performances du système en utilisant les données qu'il fournit.

pour les petits projets la version gratuite est très bien.

pour les grands projets, vous aurez besoin de la version (payée) pro.

1
répondu Peter Ingham 2012-06-13 00:23:19

pour un profileur, vous pouvez essayer SmartInspect de Gurock Software. Je n'ai jamais utilisé GpProfile, mais un rapide coup d'oeil à son jeu de fonctionnalités m'a rappelé de SmartInspect. Il est intéressant de noter qu'il ne prétend pas être un profileur, mais il semble être aussi d'un que GpProfile (à moins que je manque quelque chose). Il prend en charge Delphi 2009 et dispose d'un essai gratuit et est un peu moins cher que AQTime.

Note : SmartInspect est un logger plutôt qu'un profiler.

1
répondu Jim McKeeth 2018-04-02 09:20:56

the FastMM4 memory manager mentioned in this older answer (" How to monitor or visualize memory fragmentation of a delphi application ") garde une liste de toutes les allocations qui peuvent être demandées au moment de l'exécution (et affichées dans une grille en utilisant l'application de démonstration incluse). Il ne montre pas exactement quels objets fuient, car les statistiques sont par taille de bloc. Mais il peut être utile pour le suivi à long terme des applications en production, exemple serveurs ou services. Je suis en train de l'intégrer dans un environnement de serveur d'applications web (commercial) en tant qu'add-on "VisualMM".

0
répondu mjn 2017-05-23 12:09:58