Profileur de script

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

Profileur de script est un outil dans la Console 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 en temps 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 aux propriétés. Cet outil est utile pour identifier les scripts qui consomment 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 parmi :

  • 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 Profileur de script efface toutes les données collectées côté serveur à la fin de chaque session.

Vous pouvez également définir les options d'enregistrement suivantes :

ComportementOptionsPar défautDescription
Fréquence1000 fois par seconde (1 kHz)
10,000 fois par seconde (10 kHz)
1 kHzLa fréquence de 10 kHz a une précision plus élevée, car le Profileur de script pourrait ne pas capter les appels d'API qui s'exécutent plus fréquemment que votre fréquence sélectionnée, mais elle a également un coût de performance plus élevé.
Durée de la session1 minute
5 minutes
10 minutes
Manuelle
ManuelleL'option manuelle nécessite que vous arrêtiez l'enregistrement manuellement.
Comportement de sondage en directActivé
Désactivé
DésactivéCe comportement interroge et rafraîchit les données de profilage chaque seconde pendant une session de profilage.

Pour enregistrer une nouvelle session de profilage :

  1. Développez le menu déroulant des outils pour sélectionner ScriptProfiler.

    Menu déroulant de tous les outils de la Console développeur avec l'option ScriptProfiler mise en surbrillance pour la sélection.
  2. Développez le menu déroulant client-serveur pour sélectionner Client ou Serveur.

    Menu déroulant avec les options Client et Serveur pour la sélection.
  3. (Optionnel) Cochez la case En direct pour activer le comportement de sondage en direct.

  4. (Optionnel) Sélectionnez Freq et Temps pour choisir la fréquence d'enregistrement et la durée de la session si vous ne souhaitez 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 Profileur de script affiche un compte à rebours avec le temps restant dans la session.

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

Lire les données de profilage

Après qu'une session soit arrêtée, le Profileur de script génère un tableau montrant combien de temps chaque appel de fonction coûte en temps CPU. Le tableau trie les appels de fonction du plus long au plus court, 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 le même racine et vous permet de les développer pour voir les fonctions. Vous pouvez également survoler n'importe quel nœud de l'arbre pour afficher des informations sur le fichier et la ligne. Par exemple, Stepped/CameraInput/<anonyme> pourrait révéler Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125. Exemple de vue de callgraph d'une session de profilage.
  • Fonctions : Liste toutes les fonctions sans les catégoriser par tâches. Exemple de vue de fonctions d'une session de profilage.

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

NomOptionsPar défautDescription
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 seconde
1 minute
5 minutes
10 minutes
Dé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 Profileur de script extrapole la durée de la session pour calculer la moyenne. Par exemple, vous pouvez sélectionner l'option 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 profilage

Le Profileur de script vous permet d'exporter les données de profilage enregistrées sous forme de fichier JSON. Pour exporter les données enregistrées après une session de profilage :

  1. Dans la fenêtre du Profileur de script, 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.

    Exemple de fenêtre d'exportation.

Le fichier JSON exporté comprend les champs suivants :

  • Version : Le numéro de version.
  • SessionStartTime : Un horodatage en millisecondes qui enregistre l'heure de début de la session.
  • SessionEndTime : Un horodatage en millisecondes qui enregistre l'heure de fin de la session.
  • Categories : Un tableau de catégories de tâches de cadre enregistrées dans la session de profilage. Chaque entrée comprend :
    • Name : 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 basé sur 1 dans le tableau Nodes. Par exemple, vous pouvez rechercher le nœud avec l'NodeId de 123 en récupérant le 123ème élément dans Nodes.
  • Nodes : Un tableau de nœuds enregistrés dans la session de profilage. Chaque entrée comprend :
    • TotalDuration : Le temps que coûte le nœud en temps CPU en microsecondes.
    • FunctionIds : Un tableau d'identifiants uniques de fonctions.
    • NodeIds : Un tableau d'IDs de nœuds.
  • Functions : Un tableau de fonctions enregistrées dans la session de profilage.
    • TotalDuration : Le temps que coûte la fonction en temps CPU en microsecondes.
    • Name : Le nom de la fonction, si disponible.
    • Source : La source de la fonction, si disponible.
    • Line : 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 une exécution sous Native CodeGen.
      • 1 : Le bit 1 représente IsPlugin pour une exécution dans le cadre 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}
]
}
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.