Profil de script

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

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 :

ComportementOptionsPar défautDescription
Fréquence1 000 fois par seconde (1 KHz)10 000 fois par seconde (10 KHz)1 kHzLa 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 session1-minute5-minute10-minuteManuelManuelL'option manuelle nécessite que vous arrêtiez de filmer manuellement.
Comportement de vote en directActivé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 :

  1. Expand the tools dropdown to select ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Expand the client-server dropdown to select Client or Serveur .

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

  4. (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.

  5. 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.

  6. 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. Example callgraph view of a profiling session.
  • Fonctions : Listes toutes les fonctions sans les catégoriser par tâche. Example functions view of a profiling session.

Vous pouvez également sélectionner à partir des options d'affichage suivantes pour personnaliser vos besoins de débogage :

NomOptionsPar défautDescription
UnitéMillisecondes (ms) pourcentage (%)msAffiche le temps passé sur chaque appel d'API en millisecondes ou pourcentages de la session d'enregistrement totale.
MoyenOff1-seconde1-minute5-minute10-minuteDé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 :

  1. Dans la fenêtre Script Profiler, cliquez sur Exporter .

  2. 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é.

  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 : 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}
]
}