Profilateur de scripts

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

Profil de script est un outil dans la console de développeur qui vous permet d'enregistrer des sessions de profilage de tous les scripts en cours d'exécution et de visualiser leurs coûts de temps de CPU avec des paramètres d'enregistrement et d'affichage personnalisés.Il peut enregistrer tous les types d'appels de fonction, y compris les fonctions Luau, les appels de méthode et les accès à la propriété.Cet outil est utile pour identifier les scripts qui prennent le plus de ressources CPU et ralentissent les performances.

Enregistrer des sessions de profilage

Avant d'enregistrer, vous devez sélectionner l'environnement d'enregistrement à partir de :

  • Client (Par défaut) — Enregistre les scripts côté client, y compris LocalScripts et Scripts avec RunContext défini sur Client .
  • Serveur — Enregistre les scripts côté serveur, y compris Scripts avec RunContext défini sur Server ou Legacy .Le profilateur de scripts efface toutes les données côté serveur collectées à la fin de chaque session.

Vous pouvez également définir les options de capture suivantes :

ComportementParamètresPar défautAvertissement
Fréquence1000 fois par seconde (1 KHz)10 000 fois par seconde (10 KHz)1 KHzLa fréquence 10 KHz a une plus grande précision, car le profilateur de scripts pourrait ne pas récupérer les appels API qui s'exécutent plus fréquemment que la fréquence sélectionnée, mais il a également un coût de performance plus élevé.
Durée de sessionManuel de 1 minute5 minutes10 minutesManuelL'option manuelle vous oblige à arrêter l'enregistrement manuellement.
Comportement de vote en directActivé désactivéDésactivéCe comportement interroge et actualise les données de profilage toutes les secondes pendant une session de profilage.

Pour enregistrer une nouvelle session de profilage :

  1. Développez la liste déroulante des outils pour sélectionner Profilateur de scripts .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Développez le menu déroulant client-serveur pour sélectionner client ou serveur .

    Dropdown menu with Client and Server options for selection.
  3. (Facultatif) Vérifiez la case à cocher en direct pour activer le comportement de vote en direct.

  4. (Facultatif) Sélectionnez fréquence et temps pour choisir la fréquence de capture et la durée de session si vous ne voulez pas utiliser les valeurs par défaut.

  5. Cliquez sur Commencer pour commencer la session de profilage.Si vous définissez une durée, le profilage des scripts affiche un compte à rebours avec le temps restant dans la session.

  6. Cliquez sur Arrêter ou attendez que l'enregistrement soit terminé pour afficher les données de profilage.

Lire les données de profilage

Après l'arrêt d'une session, le profilateur de scripts génère une table montrant combien de temps chaque appel de fonction coûte en temps de CPU.La fonction de tri de la table trie les appels de fonctions du plus au moins temps consacré, 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 une structure d'arbre en fonction des tâches de cadre.Cette vue affiche chaque catégorie de tâche comme des nœuds sous la même racine et vous permet de les étendre pour afficher les fonctions.Vous pouvez également passer la souris sur n'importe quel nœud dans l'arbre pour afficher les informations sur le fichier et la ligne.Par exemple, Stepped/CameraInput/<anonymous> pourrait révéler Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 . Example callgraph view of a profiling session.
  • Fonctions : Liste toutes les fonctions sans les catégoriser par tâches. Example functions view of a profiling session.

Vous pouvez également sélectionner parmi les options d'affichage suivantes pour personnaliser vos besoins de débogage :

NomParamètresPar défautAvertissement
UnitéMillisecondes (ms) Pourcentage (%)msAffiche le temps passé sur chaque appel d'API en millisecondes ou en pourcentages de la session d'enregistrement totale.
MoyenneDésactivé1 seconde1 minute5 minutes10 minutesDésactivéCalcule le temps moyen passé sur chaque appel d'API par la valeur sélectionnée.Si vous sélectionnez une option qui est plus longue que la durée de la session, le profilateur de scripts extrapole la durée de la session pour calculer la 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 des données de profilage

Le profilateur de scripts vous permet d'exporter les données de profilage enregistrées en tant que fichier JSON. Pour exporter les données enregistrées après une session de profilage :

  1. Dans la fenêtre Profil de script, cliquez sur Exporter .

  2. Dans la fenêtre d'exportation, sélectionnez la session de profilage que vous voulez exporter. Renommez le nom du fichier par défaut si vous voulez définir un nom personnalisé.

  3. Cliquez sur Exporter pour enregistrer le fichier JSON.

    Example export window.

Le fichier JSON exporté inclut les champs suivants :

  • Version : Le numéro de version.
  • SessionStartTime : Un timestamp en millisecondes qui enregistre le temps de début de session.
  • SessionEndTime : Un timestamp en millisecondes qui enregistre le temps de fin de session.
  • Catégories : Un ensemble de catégories de tâches 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).C'est un index de 1 dans l'matriceNodes.Par exemple, vous pouvez rechercher le nœud avec le NodeId de 123 en récupérant l'élément 123 dans Nodes .
  • Nœuds : Un ensemble de nœuds enregistrés dans la session de profilage. Chaque entrée comprend :
    • Durée totale : Le temps que le nœud coûte en temps de CPU en microsecondes.
    • FunctionIds : Un ensemble d'identifiants uniques de fonctions.
    • NodeIds : Un tableau d'ID de nœuds.
  • Fonctions : Un ensemble de fonctions enregistrées dans la session de profilage.
    • Durée totale : Le temps que la fonction coûte en temps de CPU en microsecondes.
    • Nom : Le nom de la fonction, si disponible.
    • Source : La source de la fonction, si elle est disponible.
    • Ligne : Le numéro de ligne de la fonction, si disponible.
    • Flags : Un champ de bits qui indique tout environnement d'exécution de fonction spécifique. Peut actuellement avoir les valeurs suivantes :
      • 0 : Le bit 0 représente IsNative pour l'exécution sous Native CodeGen.
      • 1 : Le 1er bit représente IsPlugin pour l'exécution en tant que partie d'un plugin.
Exemple de données de profilage exporté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}
]
}