Script Profiler est un outil dans la Console de développeur qui vous permet d'enregistrer les sessions de profilage de tous les scripts en cours et de visualiser leurs coûts de CPU avec des paramètres d'enregistrement personnalisés. Il peut enregistrer tous les types de fonctions, y compris les fonctions Luau, les appels de méthode et les accès de propriété. Cet outil est utile pour identifier les scripts qui prennent le plus de ressources du performanceet ralentissent les
Enregistrement des sessions de profilage
Avant de pouvoir enregistrer, vous devez sélectionner l'environnement d'enregistrement dans :
- Client (par défaut) — Enregistre les scripts côté client, y compris LocalScripts et Scripts avec 0> Class.BaseScript.RunContext|RunContext0> défini sur 3> enum.runContext.Client|Client 3>.
- serveur — Enregistre les scripts côté serveur, y compris Scripts avec RunContext défini sur 0> Enum.RunContext.Server|Server0> ou 3> Enum.RunContext.Legacy|Legacy 3>. Le profilateur de scripts efface tous les données côté serveur à
Vous pouvez également configurer les options de suivi suivantes :
Comportement | Options | Par défaut | Description |
---|---|---|---|
Fréquence | 1 000 fois par seconde (1 KHz)10 000 fois par seconde (10 KHz) | 1 kHz | La fréquence de 10 KHz a une meilleure précision, car le profilurateur de scripts peut ne pas prendre les appels d'API qui s'exécutent plus souvent que la fréquence sélectionnée, mais il a également un coût de performance plus élevé. |
Longueur de la session | 1-minute5-minute10-minuteManuel | Manuel | L'option manuelle nécessite que vous arrêtiez de filmer manuellement. |
Comportement de vote en direct | Activé | Désactivé | Ce comportement pollue et rafraîchit les données de profilage chaque seconde lors d'une session de profilage. |
Pour enregistrer une nouvelle session de profilage :
Ouvrez Console du développeur.
Expand the tools dropdown to select ScriptProfiler .
Expand the client-server dropdown to select Client or Serveur .
(Facultatif) Vérifiez la case à cocher Live pour activer le comportement de vote en direct.
(Facultatif) Sélectionnez Freq et Time pour choisir la fréquence d'enregistrement et la durée de la session si vous ne voulez pas utiliser les valeurs par défaut.
Cliquez sur Démarrer pour commencer la session de profilage. Si vous avez défini une durée, le script profilage affiche un compte à rebours avec le temps restant dans la session.
Cliquez sur Arrêter ou attendez que la capture finisse pour afficher les données de profilage.
Lire les profils de données
Après la fin d'une session, le profilage des scripts génère une table qui montre combien de temps chaque appel de fonction coûte en temps CPU. La table trie les appels de fonction du plus au moins au temps passé, et vous permet de rechercher des fonctions spécifiques par leur nom. Il fournit les deux vues suivantes :
- Callgraph (par défaut) : Catégorise et affiche les appels de fonction dans un arbre basé sur les tâches de cadre. Cette vue affiche chaque catégorie de tâche sous la même racine et vous permet d'expander pour afficher les fonctions. Vous pouvez également survoler n'importe quelle racine dans l'arbre pour afficher les informations de fichier et de ligne.
- Fonctions : Listes toutes les fonctions sans les catégoriser par tâche.
Vous pouvez également sélectionner à partir des options d'affichage suivantes pour personnaliser vos besoins de débogage :
Nom | Options | Par défaut | Description |
---|---|---|---|
Unité | Millisecondes (ms) pourcentage (%) | ms | Affiche le temps passé sur chaque appel d'API en millisecondes ou pourcentages de la session d'enregistrement totale. |
Moyen | Off1-seconde1-minute5-minute10-minute | Désactivé | Calcul le temps moyen passé sur chaque appel d'API par la valeur sélectionnée. Si vous sélectionnez une option qui est plus long que la durée de la session, le profilateur de scripts extrapole la durée de la session pour calculer la valeur moyenne. Par exemple, vous pouvez sélectionner l'option de 5 minutes pour une session de 1 minute pour voir la valeur moyenne attendue si vous exécutez le code pendant 5 minutes. |
Exporter les données de profil
Script Profiler vous permet d'exporter les données de profil enregistrées sous forme de fichier JSON. Pour exporter les données enregistrées après une session de profil :
Dans la fenêtre Script Profiler, cliquez sur Exporter .
Dans la fenêtre d'exportation, sélectionnez la session de profilage que vous souhaitez exporter. Renommez le nom de fichier par défaut si vous souhaitez définir un nom personnalisé.
Cliquez sur Exporter pour enregistrer le fichier JSON.
Le fichier JSON exporté inclut les champs suivants :
- Version : le numéro de version.
- SessionStartTime : une valeur de date/heure au millième de seconde qui enregistre l'heure de début de la session.
- TimeEndSession : une valeur TimeEndSession dans millisecondes qui enregistre la fin de la session.
- Catégories : Un tableau de catégories de tâche de cadre enregistrées dans la session de profilage. Chaque entrée inclut :
- Nom : le nom de chaque catégorie de tâche de cadre.
- NodeId : l'identifiant unique d'une catégorie de tâche (nœud). Il s'agit d'un index de 1 basé dans l'Nodes matrice. Par exemple, vous pouvez rechercher le nœud avec le NodeId de 0> 1230> en récupérant le 123ème élément dans 3> ノード
- Nœuds : Un tableau de nœuds enregistrés dans la session de profilage. Chaque entrée inclut :
- Durée totale : la durée totale que le nœud coûte en temps CPU en microsecondes.
- Functions IDs : Un tableau d'identifiants uniques des fonctions.
- NodeIds : Un tableau d'identifiants de nœud.
- Fonctions : Un tableau de fonctions enregistrées dans la session de profilage.
- Durée totale : la durée totale que la fonction coûte en temps CPU en microsecondes.
- Nom : le nom de la fonction, si disponible.
- Source : La source de la fonction, si disponible.
- Ligne : numéro de ligne de la fonction, si disponible.
- Flags : Bit field qui indique l'environnement d'exécution de n'importe quelle fonction spécifique. Peut actuellement avoir les valeurs suivantes :
- 0 : Le 0e bit représente IsNative pour l'exécution sous Code natif.
- 1 : Le 1er bit représente IsPlugin pour l'exécution en tant que partie d'un plugin.
Exemple de données d'exportation profilées
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}