Ce que vous trouverez sur cette page : vous apprendrez à utiliser l'outil Profile Analyzer de Unity pour évaluer l'impact d'une ressource ou d'une modification du code, du travail d'optimisation, d'une modification des paramètres ou d'une mise à niveau de la version de Unity. Cet article est basé sur la session de Lyndon Homewood à l'Unite Copenhagen 2019.
Présentation de Profile Analyzer
Vous voulez savoir où vous devez concentrer vos efforts pour améliorer les performances ? Vous souhaitez comparer les performances avant et après une modification ? Connaissez-vous l'impact qu'aura une mise à jour de Unity sur votre jeu ? Profile Analyzer vous aidera à obtenir ces informations.
Cet outil vous permet de savoir où concentrer vos efforts. Il offre un moyen de comparer deux captures de performances Unity et de connaître l'impact d'une modification. L'outil fournit des représentations graphiques pour vous aider à comprendre l'incidence de vos modifications sur les performances.
Profile Analyzer regroupe et affiche les données d'images et les marqueurs d'un ensemble d'images du Profiler Unity pour vous aider à comprendre leur comportement sur un grand nombre d'images, en complément de l'analyse d'image unique déjà disponible dans le Profiler Unity.
Profile Analyzer analyse les performances du processeur sur plusieurs images. L'outil fournit des statistiques et des visualisations pour vous aider à assimiler rapidement ces informations. Il permet également un filtrage complet pour que vous puissiez analyser en profondeur les sections qui vous intéressent. Vous pouvez l'utiliser pour comparer deux ensembles de données, ou pour exporter les données afin de les analyser avec d'autres outils.
Profile Analyzer est disponible sous forme de package pour Unity 2018.4 LTS+, mais vous pouvez aussi le télécharger et le déposer dans votre projet. Il est compatible avec toutes les versions de Unity à partir de la 5.6. Pour le lancer, accédez à Window > Analysis > Profile Analyzer. Dans les versions plus anciennes de Unity, vous pouvez le lancer directement depuis le menu Window.
Conseils en matière de profilage
Voici quelques conseils en matière de profilage qui faciliteront vos premiers pas avec Profile Analyzer :
- Obtenez une capture représentative et reproductible.
- Fermez toutes les autres applications. Vous pouvez utiliser Profile.logFile dans vos scripts C# afin d'écrire les données du profil directement depuis le jeu en cours d'exécution, ce qui vous évite d'ouvrir l'Éditeur. Il crée un fichier .raw que vous pouvez ensuite charger dans le Profiler Unity.
- Désactivez la modulation des performances du processeur afin de ne pas modifier la fréquence d'horloge (paramètres Intel SpeedStep ou Turbo Boost).
Vérifier les performances d'une fonction spécifique
Si vous souhaitez connaître l'impact de l'appel d'une fonction sur les performances, utilisez le Profiler Unity pour capturer vos données. Cliquez ensuite sur le bouton Pull Data pour les charger dans Profile Analyzer. Vous pouvez aussi charger une capture déjà enregistrée.
L'analyse démarre immédiatement et les données remplissent le graphique de frame time. Vous remarquerez des barres blanches et cyan sur le graphique. Les blanches représentent la durée des images et les cyan les marqueurs actuellement sélectionnés, afin que vous puissiez connaître leur contribution au frame time.
Vous pouvez rechercher vos marqueurs à l'aide des filtres. Les détails du marqueur se mettent automatiquement à jour afin de tenir compte du sous-ensemble sélectionné. Le nombre d'occurrences sera indiqué dans la colonne Count. Le graphique de frame time affiche le marqueur en surbrillance. Lorsque vous sélectionnez un marqueur, son résumé se met également à jour.
Trouver des images représentatives
When analyzing performance, you want to make sure that the data you’re looking at is representative. If your data is noisy, it’s easy to ensure that you select an average frame by using the Frame Summary at the top right – just click on the Frame shown as the Median and the Profiler will display the relevant analysis. Or, in the frame time graph, you can right-click and select Select Median Frame.
You can also limit your analysis to a selection of frames. All of the statistics you see will be updated to reflect the specific selection.
Rather than rely on a single data point from a single frame, you can analyze multiple data points by selecting a group of representative frames. If you right-click on the frame time graph and Order by Frame Duration, you can then select a set of frames around the median frame for a representative sample that smooths out some of the noise in your data.
Incidence de la modification d'un paramètre du projet
Profile Analyzer peut permettre de déterminer les différences de performances lorsque vous activez un paramètre, tel que Graphics Jobs, pour l'ensemble d'un projet. Pour utiliser cette fonctionnalité, effectuez une capture de référence, puis effectuez-en une autre après les modifications. Lancez votre jeu, créez un échantillon avec le Profiler Unity, intégrez la première capture dans Profile Analyzer, puis ajoutez la seconde.
Vous trouverez les résultats des deux captures côte à côte dans la section Frame Summary.
Are you GPU-bound?
Vérifiez le marqueur Gfx.WaitForPresent pour vous assurer qu'il n'existe pas de goulots d'étranglement. Pour le trouver, saisissez Gfx.WaitForPresent dans la zone de filtre. Si la valeur médiane de ce marqueur n'est pas égale à zéro, le processeur attend que le GPU termine son activité avant de pouvoir continuer.
Vous pouvez observer ce marqueur dans le graphique de frame time pour voir sa contribution au frame time. Si le CPU attend le GPU, il y a de fortes chances que vous soyez dépendant du GPU. Utilisez les outils de profilage de GPU pour effectuer quelques optimisations.

Gestion des ensembles de données
Vous pouvez gérer vos données dans la section supérieure principale de la fenêtre Profile Analyzer. De là, vous pouvez ouvrir le Profiler Unity et extraire des données, ou charger un fichier précédemment enregistré (quelle que soit la version de Unity).
Une fois vos données chargées, vous les verrez apparaître dans le graphique de frame time. Il existe une zone interactive dans laquelle vous pouvez sélectionner une série d'échantillons. Toutes les informations résumées dans le tableau des marqueurs seront automatiquement mises à jour pour tenir compte de votre sélection. Cliquez sur votre sélection avec le bouton droit de la souris pour accéder à des options plus avancées.
Cliquez sur Save pour enregistrer les données de votre analyse au format .pdata. Il existe deux fichiers de sauvegarde : un fichier Profile Analyzer (.pdata) et un fichier Profiler (.data ou .raw). Nous vous recommandons d'enregistrer les deux fichiers dans le même répertoire.
Frame Summary
La zone Frame Summary affiche les informations clé du frame time (y compris les donnée Minimum, Maximum et Median), ainsi que des boutons pour accéder à des images spécifiques dans le Profiler Unity. Cette zone affiche l'histogramme de répartition du frame time et une boîte à moustaches.

Tableau des marqueurs
Détails des marqueurs
Dans cette section, vous retrouverez le tableau des marqueurs avec les données du Profiler Unity, y compris toutes les profondeurs des piles. Les données du Profiler Unity pour tous les marqueurs sont regroupées afin de fournir les durées médianes et autres frame times, qui sont également affichées dans ce tableau.
Marker Summary
La zone Marker Summary située à droite contient des informations agrégées sur les marqueurs sélectionnés et leur contribution au frame time. Ces informations sont également affichées dans un histogramme et dans une boîte à moustaches.
Au bas du résumé sont affichées les durées minimum et maximum pour les instances de marqueur individuelles de l'ensemble de données agrégé.

Filters
- Par nom
Pour cibler des marqueurs portant un nom précis lors de votre vérification, vous pouvez saisir une sous-chaîne ou une série de sous-chaînes. Si le nom contient des espaces, pensez à entourer la sous-chaîne de guillemets.
Vous pouvez exclure les marqueurs qui ne vous intéressent pas. Par exemple, ceux basés sur le temps d'inactivité dans Jobs, ou ceux qui font partie du Profiler.
Vous pouvez renseigner les filtres en effectuant un clic droit sur un marqueur qui vous intéresse dans le tableau.
- Threads
Vous pouvez afficher les données de threads spécifiques. Pour tous les afficher agrégés, cochez la case All en haut de la fenêtre contextuelle Select.
- Profondeur
Nous recommandons de vous intéresser à la profondeur 3, car la plupart des sous-systèmes Unity possèdent des marqueurs haut de gamme à ce niveau. Vous connaissez ainsi la contribution des principaux sous-systèmes tels que le rendu, l'animation et la physique. (La profondeur 3 convient aux dernières versions de Unity. Pour les versions plus anciennes, vous pouvez changer de profondeur.)
- Parent
Pour filtrer par parent, effectuez un clic droit sur un marqueur dans le tableau, puis sélectionnez Set as Parent Marker Filter.
- Type d'analyse
Par défaut, pour la durée, Profile Analyzer affiche la valeur Total pour les marqueurs, mais vous pouvez afficher la valeur Self à la place. La valeur Self est utile si vous souhaitez analyser les informations en profondeur pour savoir à quoi le temps est réellement consacré.
- Unités
Les unités par défaut sont les millisecondes, mais pour les durées plus courtes, vous pouvez passer aux microsecondes.
Top 10 markers
Il s'agit des 10 premiers marqueurs pour les filtres que vous avez créés. Pour utiliser au mieux cet outil, sélectionnez Main Thread et le temps total comprenant les enfants à la profondeur 3, afin d'observer les sous-systèmes Unity. Cela vous donnera le ratio de contribution pour chacun de ces systèmes clés, comme le rendu par rapport à la physique comparée à la durée d'animation. Pour plus de détails, vous pouvez survoler la barre de données pour afficher les mesures et pourcentages exacts.

Comparer des ensembles de données
En haut de la fenêtre Profile Analyzer, vous pouvez cliquer sur l'onglet Compare pour sélectionner deux ensembles de données à analyser. Un ensemble de données s'affiche en bleu, l'autre en orange. Vous pouvez également choisir deux sous-régions d'un même ensemble de données, par exemple pour comparer vos images médianes et vos images hors normes.
Le tableau de comparaison des marqueurs représente graphiquement les données en bleu et en orange, afin de pouvoir vérifier lequel des deux ensembles de données fonctionne plus lentement dans certaines zones.
Si le marqueur est absent dans l'un des scans, vous verrez un tiret dans cette colonne. Cela se produit si le marqueur a été renommé, par exemple, si vous utilisez différentes versions de Unity.
Exporter des données
Rappelez-vous qu'il est possible d'exporter les donnés du Profile Analyzer pour un traitement plus ciblé. Vous pouvez exporter le contenu du tableau des marqueurs, le graphique de frame time ou une comparaison des graphiques de frame time.
Si vous avez des questions sur Profile Analyzer, le Profiler, ou sur l'utilisation de leurs fonctions spécifiques pour votre projet, rejoignez les discussions du forum.