7
votes

VTune vaut-elle la peine d'être envisagée pour Delphi?

Courir à travers toutes les questions sur les outils de profilage, j'ai été surpris de découvrir Vtutue par Intel que je n'avais pas entendu parler d'auparavant. À 700 $, il est encore plus cher que AQTime .

Mais avant de prendre la décision de poser les gros dollars pour AqTime, quelqu'un a utilisé Vtutune pour Delphi et, dans l'affirmative, pensez-vous que cela a des avantages qui peuvent en faire un meilleur choix que AQTime et Les autres outils de profilage pour Delphi qui sont là-bas ?


2 commentaires

Faites-vous une pareinte beaucoup d'assembleur SSE?


Non, mais je le regarde et j'ai beaucoup d'expérience dans l'optimisation de bas niveau.


3 Réponses :


5
votes

Vous pouvez télécharger 30 jours d'essai VTune et essayer vous-même.

J'ai utilisé AQTIME et VTUNE.

Vtutune est bon si vous souhaitez tester une application multithreadiée - cela m'aidez à trouver des serrures dans Memory Manager qui ralentissent ma partie multithreadée de l'application.

La différence de secours est que VTune est un exemple de profileur et AQTime est le profileur d'instrument. Les deux ont des points forts et faibles mais je préfère personnellement l'instrument un. Avec le profileur de l'instrument, vous obtenez exactement des informations combien de fois votre fonction a été appelée, tout appelant de cette procédure, etc. avec le coût des résultats de l'heure inexacts - les profileurs d'instrumentation modifient un code d'exécution du processeur moyen, des prédictions de branche et du cache fonctionne différemment que dans une application réelle et testée. travailler lentement.

Mais le plus important est l'interface graphique et ici une victoire AQTime. C'est une application puissante mais très facile à utiliser. Vtutune est assez différent. J'ai perdu trop de temps pour trouver la bonne commande à Vtutune. Gui est très désordonnée.

Donc, à l'exception de la multithreading, j'utilise AQTime.


5 commentaires

Je crois que AQTime offre à la fois l'instrumentation et l'échantillonnage. Ce que je voudrais vérifier à propos de Vtutune est son support pour le format de sortie de débogage de Borland TD32.


Selon les PDFS, VTune a une prise en charge de zéro pour le format de débogage TD32. Alors, Vtuune peut-elle même vous donner une pile d'appel avec des informations de numéro de ligne pour un exécutable Delphi? Ils mentionnent directement C #, C / C ++ et Visual Basic, mais il n'y a aucune mention de Delphi, ni autre chose.


Warren: Selon ceci: logiciel.intel.com/en-us/articles/... Vtutune a le support TD32.


@Warren P. AQTime n'a pas de profileur d'échantillonnage. Seulement l'instrumentation. Et comme d'AQTime 8, la période d'essai n'est que de 14 jours avec une fonctionnalité très restreinte.


J'ai essayé Intel Vtuune 2017 et malheureusement, il n'y a pas de support pour les informations de débogage DELPHI.



8
votes

Vtutue peut lire des compteurs de processeurs de bas niveau, comme la prédiction des succursales, le cache Misses, etc. Je l'ai utilisé pour savoir pourquoi TOPMM (Gestionnaire de mémoire de mise à l'échelle multithreaded!) était très lent sur mon processeur hyperthreading. Était quelque chose d'environ 64kb en mémoire de mémoire en mémoire. Donc, cela donne plus d'informations en département comment il fonctionne vraiment sur une CPU et pourquoi quelque chose est lent en raison de la cache Misses, etc. Pour une optimalisation réelle (dernier%), j'utiliserais les deux, pour une optimalisation normale, utilisez AQ ou autre (comme mon asmprofiler :-))


1 commentaires

André: Si vous pouviez simplement ajouter des informations de niveau de ligne dans ASMProfileur, ce serait tout ce dont j'ai besoin.



1
votes

Cela fait plus de 10 ans que la question a été posée. Malheureusement, rien ne semble avoir changé jusqu'à présent.

J'ai utilisé avec succès l'amplificateur VTune avec les fichiers binaires Delphi plus à deux fois au cours de nombreuses années. C'est faisable, mais il faut aussi beaucoup de temps. Nous avons eu une licence d'AQTime à un moment donné, mais je n'ai pas vraiment envie. Le ralentissement de l'exécution était beaucoup trop pour un grand projet, et je ne pouvais pas m'habituer à la manière dont les résultats ont été présentés.

Les versions récentes de l'amplificateur d'amplificateur VTUNE sont propres, mais ils travaillent toujours à peu près la même chose. Ce que vous rechercherez la plupart du temps est la bonne colonne avec les adresses de mémoire de la CallStack. Ce que vous voulez faire est de correspondre à ces adresses avec celles du fichier de carte que Delphi génère (si vous activez l'option). Juste une mise en garde mineure: les adresses de la CallStack à l'intérieur de l'amplificateur VTune et le fichier de carte sont compensés par l'adresse de départ de la section Code. La valeur par défaut est 0x401000 (vous pouvez le trouver au début du fichier de carte). Par conséquent, vous souhaiterez effectuer une recherche dans le fichier de carte de l'adresse dans la CallStack moins le décalage. En outre, il arrive souvent que l'adresse ait un décalage supplémentaire de quelques octets. Au lieu de rechercher l'adresse exacte (décalée), recherchez plutôt la recherche du voisinage de l'adresse, puis vérifiez quelle ligne l'adresse exacte appartient à. Il arrive parfois que certaines adresses ne semblent pas indiquer un endroit approprié. Ignorez simplement cette adresse et allez à la suivante dans la CallStack.

Conversion du fichier de carte (ou un binaire Delphi équivalent) en un fichier PDB pourrait potentiellement faciliter les choses. J'ai été incapable de trouver un outil à jour pour faire le travail, mais j'ai trouvé une description du format de fichier PDB dans Informit (fichiers de symboles PDB craquant par Sven B. Schreiber).

Une solution intermédiaire serait d'accélérer le processus en cours en ayant un outil qui lit dans le fichier de carte et permet une recherche rapide d'une adresse (y compris le réglage du décalage et l'utilisation de la recherche de voisinage). Encore mieux si cela vous permet de passer au fichier source et d'afficher des adresses apparentes récemment.

Bien sûr, la solution la plus belle serait pour Embarcadero d'ajouter une assistance pour générer des fichiers PDB à leur compilateur, mais mon expérience avec eux est qu'ils dépassent des punaises et des demandes de fonctionnalités et font rarement quelque chose à leur sujet. Nous sommes seuls sur celui-ci.

Assez intéressant, Primož Gabrijelčič mentionne l'amplificateur VTune d'Intel dans au moins deux livres liés à Delphi. La maîtrise de la programmation DELPHI (2019) le mentionne avec quelques autres programmes, mais c'est celui pour lequel aucune autre information n'est affichée. Il serait intéressant de savoir si l'auteur a effectivement utilisé l'amplificateur VTune avec les fichiers binaires Delphes et comment il y va.


3 commentaires

Il y a maintenant un bel outil MAP2PDB d'Anders Melander qui permet de générer un fichier PDB à partir de la sortie de carte Delphi: en.delphipraxis.net/topic/4853-map2pdb-profiling-with-vtune


@ Landgraf.dev c'est une nouvelle incroyable! Merci d'avoir partagé le lien! Je vois que les gens ont déjà du succès en utilisant avec Vtutune et l'outil a été encore amélioré ces dernières heures. Malheureusement, VTune semble avoir des problèmes de chargement de fichiers PDB volumineux (16 Mo +) avec la version actuelle.


Je crois que la limite de 16 Mo + était déjà corrigée. Sinon, cela sera probablement en peu de temps, les Anders semblent travailler dur dessus.