Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Utilisation des profileurs C++

Pour optimiser les performances de Godot, vous devez d'abord savoir ce qu'il faut optimiser. À cette fin, les profileurs sont des outils utiles.

Note

There is a built-in GDScript profiler in the editor, but using C++ profiler may be useful in cases where the GDScript profiler is not accurate enough or is missing information due to bugs in the profiler.

Configuration de Godot

Pour obtenir des informations de profilage utiles, il est absolument nécessaire d'utiliser une version de Godot qui inclut des symboles de débogage. Les binaires officiels n'incluent pas les symboles de débogage, car ceux-ci augmenteraient considérablement la taille du téléchargement.

To get profiling data that best matches the production environment (but with debugging symbols), you should compile binaries with the production=yes debug_symbols=yes SCons options.

It is possible to run a profiler on less optimized builds (e.g. target=template_debug without LTO), but results will naturally be less representative of real world conditions.

Avertissement

N'enlevez pas les symboles de débogage sur les binaires en utilisant la commande strip après avoir compilé les binaires. Sinon, vous n'obtiendrez plus d'informations de profilage utiles lorsque vous utiliserez un profileur.

Analyse comparative(Benchmarking) des temps de démarrage et d'arrêt

Si vous cherchez à optimiser les performances de démarrage/arrêt de Godot, vous pouvez indiquer au profileur d'utiliser l'option de ligne de commande --quit sur le binaire Godot. Ceci quittera Godot juste après son démarrage. L'option --quit fonctionne avec --editor, --project-manager ou --path <path to project directory> (qui exécute un projet directement).

Voir aussi

Voir Tutoriel de ligne de commande pour plus d'arguments de ligne de commande supportés par Godot.

Instructions spécifiques au profileur

VerySleepy

  • Start the Godot editor or your project first. If you start the Project Manager, make sure to edit or run a project first. Otherwise, the profiler will not track the child process since the Project Manager will spawn a child process for every project edited or run.

  • Ouvrez VerySleepy et sélectionnez l'exécutable Godot dans la liste des processus à gauche :

../../../_images/cpp_profiler_verysleepy_select_process.png
  • Cliquez sur le bouton Profile All à droite pour commencer le profilage.

  • Effectuez les actions que vous souhaitez profiler dans l'éditeur ou le projet. Lorsque vous avez terminé, cliquez sur Stop (pas Abort).

  • Attendez que la fenêtre des résultats s'affiche.

  • Une fois que la fenêtre de résultats apparaît, filtrez la vue pour supprimer les modules externes (tels que le pilote graphique). Vous pouvez filtrer par module en trouvant une ligne dont le Module correspond au nom de l'exécutable Godot, en faisant un clic droit sur cette ligne puis en choisissant Filter Module to <Nom de l'exécutable Godot> dans la liste déroulante qui apparaît.

  • Votre fenêtre de résultats devrait maintenant ressembler à ceci :

../../../_images/cpp_profiler_verysleepy_results_filtered.png

HotSpot

  • Ouvrez HotSpot. Cliquez sur Record Data :

../../../_images/cpp_profiler_hotspot_welcome.png
  • Dans la fenêtre suivante, indiquez le chemin d'accès au binaire Godot qui inclut les symboles de débogage.

  • Spécifiez les arguments de la ligne de commande pour exécuter un projet spécifique, avec ou sans l'éditeur.

  • Le chemin du répertoire de travail peut être n'importe quoi si un chemin absolu est utilisé pour l'argument de ligne de commande --path. Sinon, il doit être défini pour que le chemin relatif du projet soit valide.

  • Assurez-vous que Elevate Privileges est coché si vous avez des privilèges administratifs. Bien que cela ne soit pas essentiel pour le profilage de Godot, cela permet de s'assurer que tous les événements peuvent être capturés. Sinon, certains événements peuvent manquer dans la capture. Vos paramètres devraient maintenant ressembler à ceci :

../../../_images/cpp_profiler_hotspot_record.png
  • Cliquez sur Start Recording et effectuez les actions que vous souhaitez profiler dans l'éditeur/le projet.

  • Quittez l'éditeur/le projet normalement ou utilisez le bouton Stop Profiling dans HotSpot pour arrêter le profilage prématurément. L'arrêt précoce du profilage peut donner des profils plus propres si vous n'êtes pas intéressé par la procédure de sortie du moteur.

  • Cliquez sur View Results et attendez que la visualisation du profilage soit générée :

../../../_images/cpp_profiler_hotspot_view_results.png
  • Utilisez les onglets en haut de la page pour naviguer entre les différentes vues. Ces vues présentent les mêmes données, mais de manière différente. L'onglet Flame Graph est un bon moyen de voir en un coup d'œil quelles fonctions prennent le plus de temps. Ces fonctions sont donc les plus importantes à optimiser, car c'est en les optimisant que vous améliorerez le plus les performances.

  • En bas de tous les onglets, à l'exception de Summary, vous verrez également une liste des threads CPU lancés par le moteur parmi lesquels l'utilisation du CPU pour chaque thread. Cela vous permet de voir les threads qui peuvent être un goulot d'étranglement à un moment donné.

../../../_images/cpp_profiler_hotspot_flame_graph.png

Note

Si vous ne voulez pas que la procédure de démarrage soit incluse dans le profil, vous pouvez également attacher le HotSpot à un processus en cours d'exécution en cliquant sur Record Data puis en réglant l'option du menu déroulant Launch Application sur Attach To Process(es).

Ce flux de travail basé sur l'attachement au processus est similaire à celui utilisé par VerySleepy.

Xcode Instruments

  • Ouvrez Xcode. Sélectionnez Open Developer Tool - Instruments dans le menu de l’application Xcode :

  • Double-cliquez sur Time Profiler dans la fenêtre Instruments :

../../../_images/cpp_profiler_xcode_menu.png
  • Dans la fenêtre Time Profiler, cliquez sur le menu Target, sélectionnez Choose target... et spécifiez le chemin d'accès au binaire Godot, les arguments de ligne de commande et les variables d'environnement dans la fenêtre suivante.

../../../_images/cpp_profiler_time_profiler.png
  • Vous pouvez également attacher le Time Profiler à un processus en cours d'exécution en le sélectionnant dans le menu Target.

  • Cliquez sur le bouton Start an immediate mode recording pour commencer le profilage.

../../../_images/cpp_profiler_time_profiler_record.png
  • Effectuez les actions que vous souhaitez profiler dans l'éditeur ou le projet. Lorsque vous avez terminé, cliquez sur le bouton Stop.

  • Attendez que les résultats s'affichent.

  • En bas de la fenêtre, vous verrez un arbre d'appel pour tous les threads CPU lancés, et la vue d'ensemble du Heaviest Stack Trace.

  • Sélectionnez Hide system libraries dans le menu Call Tree (au bas de la fenêtre) pour supprimer les modules externes.

  • Vous pouvez utiliser la ligne de temps en haut de la fenêtre pour afficher les détails pour une période spécifique.

../../../_images/cpp_profiler_time_profiler_result.png