MicroProfilateur

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le MicroProfiler est un outil d'optimisation des performances et de dépannage disponible dans Roblox Studio et le client Roblox.Il fournit des informations de calendrier détaillées pour les tâches du planificateur de tâches appelées tags .

  • Pour une liste des tâches communes, référez-vous à la balise référence.
  • Pour un exemple étape par étape de l'utilisation du MicroProfiler pour identifier un problème de performance, voir le MicroProfiler walkthrough .

Fondamentaux de MicroProfiler

Pour ouvrir le MicroProfiler, appuyez sur CtrlAltF6 ( F6 ) dans Studio ou le client.Vous pouvez également utiliser le menu des paramètres dans le client.

Lorsqu'il est ouvert, une barre de menu est visible en haut de la fenêtre de jeu3D.Dans le mode par défaut, un graphique de bar mobile montre le temps utilisé sur chaque cadre du calendrier de tâches.

The Microprofiler frame graph, showing blue frames and detailed frame information.

Les bars devraient généralement être autour du milieu du graphique, mais vous pourriez voir des pointes soudaines (des augmentations rapides des valeurs).Les pointes indiquent qu'un plus grand temps a été pris pour effectuer une tâche, généralement en raison d'une augmentation de la charge de travail.Par instance, la création de beaucoup de pièces mobiles nécessite plus de travail de la simulation de physique, qui a ensuite besoin de plus de temps pour traiter le mouvement et les contacts des parties.L'image suivante montre un exemple de pointe :

The Microprofiler with several bars higher than others.

Pour mettre en pause l'enregistrement des cadres, appuyez sur CtrlP ( P ) ou cliquez sur Pause dans la barre de menu.Pendant l'interruption, une timeline apparaît et vous pouvez naviguer à travers les cadres en cliquant ou en faisant glisser sur le graphique.

Pour un résumé complet des différents points de vue et de la façon de naviguer dans l'interface MicroProfiler, voir modes MicroProfiler.

Sujets

Comme de nombreux programmes, Roblox utilise plusieurs fils pour effectuer plusieurs séquences de tâches en même temps.Dans le MicroProfiler mode détaillé, vous pouvez voir des étiquettes pour chaque thread à gauche.

The lefthand side of the Microprofiler detailed view, with rows for threads.

Il existe trois principaux types de threads :

  • Principal/Rendu : Peut-être de manière intuitive, s'exécute sur la CPU.Processus d'entrée, Humanoids , animations/tweening, propriété de la physique, son et reprise du script d'attente.Mise à jour également des interfaces Studio et coordination des autres threads.

  • Travailleur ("Travailleur RBX") : Aide le thread principal avec le réseau, la physique et la recherche de chemin.En raison du nombre de cœurs dans les CPU modernes, vous avez probablement de nombreux threads d'exécution, dont la plupart sont dans un état de sommeil à tout moment.

  • Render ("GPU") : Suit une logique "préparer, exécuter, présenter". Communique avec l'unité de traitement graphique (GPU) du appareil.

    • Préparez : les informations du thread principal sont utilisées pour mettre à jour les modèles de rendu.
    • Exécuter : Émettre des commandes de rendu, y compris des interfaces 2D.
    • Présent : Synchronise avec la GPU.

Profils personnalisés

Si vos scripts exécutent des tâches complexes, vous pouvez profiler les parties critiques du code pour vous assurer qu'elles ne prennent pas trop de temps.Enveloppez le code dans debug.profilebegin() et debug.profileend() pour tout faire à temps entre ces appels de fonction et créer une étiquette sur la timeline du MicroProfiler.

Script de travail difficile

debug.profilebegin("Hard Work")
-- Code à profiler
debug.profileend()
A custom label on the detailed view of the MicroProfiler.

Il y a une quantité limitée de mémoire disponible aux étiquettes de MicroProfiler.Si cette mémoire se termine, les étiquettes de profil personnalisées peuvent ne pas apparaître comme un nom significatif dans le calendrier.Utilisez moins de labels pour éviter ce problème.Si vous n'avez plus besoin de profiler une section de votre code, commentez ou supprimez les appels à ces fonctions.

Exemple

L'échantillon de code ci-dessous connecte une fonction d'exemple à l'événement RunService.PreSimulation, qui s'exécute à chaque cadre.Tout ce qui est fait souvent devrait être exécuté aussi efficacement que possible, donc cette fonction est un bon candidat pour le profilage.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Exemple de dur labeur : échanger deux variables 200 000 fois
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)

Lorsque vous exécutez l'expérience et que vous interrompez le MicroProfiler ( CtrlP ou P ), l'étiquette personnalisée est visible sous l'étiquette gameStepped .

Many labels on the MicroProfiler, with a custom label taking up the majority of the processing time.

À partir de sa durée sur la timeline, vous pouvez dire que la fonction utilise beaucoup de temps de traitement par rapport à d'autres opérations.

Enregistrer les données de cadre

Si vous voulez enregistrer un ensemble de données de cadre pour une évaluation ultérieure (ou pour le partager avec quelqu'un d'autre), utilisez le menu Dump .Le moteur enregistre les données de cadre dans un fichier nommé microprofile-<date>-<time>.html dans le répertoire des journaux Roblox.

  • Sur Windows, vérifiez %LOCALAPPDATA%\Roblox\logs .

    Si vous utilisez l'application Universal Windows Platform (UWP), vérifiez \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\ .

  • Sur macOS, vérifiez ~/Library/Logs/Roblox.

Ces fichiers HTML utilisent la même interface utilisateur Web basée sur le Web que la connexion en direct pour les appareils mobiles et les sauvegardes de serveur.

Appareils mobiles de profil

Pour accéder au MicroProfiler depuis le client mobile, votre appareil mobile doit être connecté au réseau même que votre machine de développement.

Activez le MicroProfiler dans le menu Paramètres du appareilmobile. Après l'activation, le menu affiche une adresse IP et un numéro de port.

A picture of the Settings menu on mobile, showing how to enable the MicroProfiler.

Par exemple, dans la capture d'écran ci-dessus, l'adresse est 192.168.1.166 et le port est 1338 .À partir d'un ordinateur sur le même réseau, naviguez vers pour une version Web-based de l'interface utilisateur MicroProfiler.

The MicroProfiler web view.

Profil du serveur

En plus du client standard MicroProfiler, vous pouvez prendre des dumps brèves de l'activité du serveur en utilisant le serveur MicroProfiler.

  1. Dans une expérience pour laquelle vous avez des permissions d'édition, ouvrez la console développeur avec CtrlAltF9 .

  2. Dans le menu déroulant, sélectionnez MicroProfiler .

  3. Dans la section profil du serveur , spécifiez le nombre de cadres par seconde (maximum 60) et le nombre de secondes à profiler (maximum 4).

  4. Cliquez sur Commencer l'enregistrement .

    The Developer Console MicroProfiler screen.

    Après quelques secondes, la console de développeur fournit le chemin vers le fichier, qui est le même chemin qu'un dump standard.

Utiliser l'interface utilisateur web

En général, l'interface utilisateur web MicroProfiler fonctionne de manière similaire à mode détaillé, mais elle a quelques fonctionnalités supplémentaires :

  • En plus de filtrer par groupe, vous pouvez filtrer par thread.

  • Utilisez CtrlF / F pour sauter à l'occurence d'une tâche qui prend le plus de temps dans le vidage.Par exemple, computeLightingPerform s'exécute dans chaque cadre.Si vous le recherchez dans un dump avec 128 cadres, vous pouvez sauter au cadre où cela a pris le plus de temps à terminer.

  • Utilisez le menu rayons X pour activer ou désactiver la coloration de la mémoire pour l'allocation de mémoire.

    The MicroProfiler web view with x-ray enabled.
    • Les cadres plus légers dans le graphique de la barre principale indiquent une plus grande allocation de mémoire.
    • Les parties plus légères de la barre d'aperçu et les étiquettes plus légères sur la timeline indiquent des parties du cadre avec une plus grande allocation de mémoire.
    • En mode rayons X, appuyez sur C pour afficher la taille totale des réservations de mémoire plutôt que le nombre de réservations.
  • Utilisez le menu Exporter pour exporter un graphique de flamme de processeur ou de mémoire, une visualisation spécialisée qui agrège toutes les piles d'appels incluses dans le vidage, maintient la hiérarchie parent-enfant et les taille en fonction de la durée.Les graphiques de flammes sont particulièrement utiles pour identifier les tâches qui ne prennent pas particulièrement longtemps à s'exécuter (et sont donc difficiles à remarquer), mais s'exécutent si souvent que leur temps de traitement devient significatif.

    The MicroProfiler flame graph in the web UI.

    Vous pouvez également créer des graphiques de flammes dans Studio, bien que seulement pour les scripts (temps d'exécution et réservations de mémoire).Par rapport aux graphiques de flammes basés sur le web, ceux dans Studio sont de haut en bas plutôt que de bas en haut et supportent des temps de capture dramatiquement plus longs.

    The MicroProfiler flame graph in Studio.
  • Faites glisser et déposez un deuxième fichier de dump dans l'interface utilisateur Web pour générer un graphique de flamme diff, qui peut vous aider à identifier des améliorations ou des régressions de la performance de votre expérience au fil du temps.Cliquez sur Combiner et comparer pour exporter un nouveau fichier HTML.

    The MicroProfiler diff flame graph builder showing the left and right sides.

    Le graphique de flamme de différence met en évidence le dump (gauche ou droite) qui consomme plus de CPU ou de mémoire, avec des couleurs plus vives indiquant une plus grande différence.

    The MicroProfiler diff flame graph.