Skript-Profiler ist ein Werkzeug innerhalb der Entwickler-Konsole, mit dem Sie Sitzungen zur Profilerfassung aller laufenden Skripte aufzeichnen und ihre CPU-Kosten anzeigen können, mit benutzerdefinierten Aufzeichlungs- und Anzeigeeinstellungen.Es kann alle Arten von Funktionsaufrufen aufzeichnen, einschließlich Luau-Funktionen, Methode-Aufrufe und Zugriffe auf Eigenschaften.Dieses Tool ist hilfreich für die Identifizierung von Skripten, die die meisten CPU-Ressourcen beanspruchen und die Erfüllungverlangsamen.
Profilierungs-Sitzungen aufzeichnen
Bevor Sie aufzeichnen, müssen Sie die Aufzeichnungsumgebung auswählen von:
- Client (Standard) — Zeichnet Client-seitige Skripte auf, einschließlich LocalScripts und Scripts mit RunContext auf Client festgelegt.
- Server — Records serverseitige Skripte, einschließlich Scripts mit RunContext auf Server oder Legacy gesetzt.Der Skript-Profiler löscht alle gesammelten serverseitigen Daten am Ende jeder Sitzung.
Du kannst auch die folgenden Aufzeichlungsoptionen festlegen:
Verhalten | Optionen | Standardmäßig | Beschreibung |
---|---|---|---|
Häufigkeit | 1000 Mal pro Sekunde (1 KHz)10.000 Mal pro Sekunde (10 KHz) | 1 KHz | Die Frequenz von 10 kHz hat eine höhere Genauigkeit, da der Skript-Profiler möglicherweise keine API-Aufrufe aufnimmt, die häufiger ausgeführt werden als die von Ihnen ausgewählte Frequenz, aber sie hat auch einen höheren Leistungskosten. |
Sitzungsdauer | 1-Minute5-Minute10-MinuteManuell | Handbuch | Die manuelle Option erfordert, dass Sie die Aufnahme manuell beenden. |
Live-Umfrageverhalten | AnAus | Aus | Dieses Verhalten polliert und aktualisiert jede Sekunde während einer Profilierungs SitzungProfile-Daten. |
Um eine neue Profilierungs Sitzungaufzuzeichnen:
Öffne Entwickler-Konsole.
Erweitern Sie die Werkzeugauswahl, um Skriptprofilierer auszuwählen.
Erweitern Sie das Client-Server-Dropdown, um Client oder Server auszuwählen.
(Optional) Überprüfen Sie die Live -Checkbox, um das Live-Abstimmungsverhalten zu aktivieren.
(Optional) Wählen Sie Freq und Time , um die Aufzeichfrequenz und die Sitzungsdauer zu wählen, wenn Sie die Standardwerte nicht verwenden möchten.
Klicken Sie auf Start , um die Profilierungs session zu beginnen.Wenn du eine Dauer festlegst, zeigt der Skript-Profiler einen Countdown-Timer mit der verbleibenden Zeit in der Sitzung an.
Klicken Sie auf Stopp oder warten Sie, bis die Aufzeichnung beendet ist, um die Profildaten anzuzeigen.
Lesen Sie Profilierungsdaten
Nachdem eine Sitzung gestoppt wird, erstellt der Skript-Profiler eine Tabelle, die zeigt, wie viel Zeit jeder Funktionsaufruf in CPU-Zeit kostet.Die Tabelle sortiert Funktionsaufrufe von der meistzeitaufwendigsten bis zur am wenigsten zeitaufwendigsten und ermöglicht es dir, nach bestimmten Funktionen nach ihrem Namen zu suchen.Es bietet die folgenden zwei Ansichten:
- Anrufschema (Standard): Kategorisiert und zeigt Funktionsaufrufe in eine Baumstruktur auf Basis von Rahmenaufgaben.Diese Ansicht zeigt jede Aufgabenkategorie als Knoten unter derselben Wurzel an und ermöglicht es Ihnen, sie zu erweitern, um Funktionen anzuzeigen.Du kannst auch über jeden Knoten im Baum fahren, um Datei- und Zeileninformationen anzuzeigen.Zum Beispiel könnte Stepped/CameraInput/<anonymous> enthüllen Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 .
- Funktionen : Zeigt alle Funktionen auf, ohne sie nach Aufgaben zu kategorisieren.
Sie können auch aus den folgenden Anzeigeeinstellungen wählen, um Ihre Debugging-Anforderungen anzupassen:
Namen | Optionen | Standardmäßig | Beschreibung |
---|---|---|---|
Einheit | Millisekunden (ms)Prozentsatz (%) | ms | Zeigt die Zeit, die für jeden API-Aufruf in Millisekunden oder Prozentsätzen der gesamten Sitzungaufgewendet wurde, an. |
Durchschnitt | Aus1-Sekunde1-Minute5-Minute10-Minute | Aus | Berechnet die durchschnittliche Zeit, die für jeden API-Aufruf mit dem ausgewählten Wert verbracht wird.Wenn du eine Option wählst, die länger als die Sitzungsdauer ist, extrapoliert der Skript-Profiler die Sitzungsdauer, um den Durchschnitt zu berechnen.Zum Beispiel können Sie die 5-Minuten-Option für eine 1-Minuten-Sitzung auswählen, um den erwarteten Durchschnittswert zu sehen, wenn Sie den Code für 5 Minuten ausführen. |
Profilierungsdaten exportieren
Der Skript-Profiler ermöglicht es Ihnen, aufgezeichnete Profiling-Daten als JSON-Datei zu exportieren. Um aufgezeichnete Daten nach einer Profiling-Sitzung zu exportieren:
Klicken Sie im Skript-Profilierungs-Fenster auf Export .
Wählen Sie im Exportfenster die Profilierungs session aus, die Sie exportieren möchten. Benennen Sie den Standard-Dateinamen um, wenn Sie einen benutzerdefinierten Namen festlegen möchten.
Klicken Sie auf Export , um die JSON-Datei zu speichern.
Die exportierte JSON-Datei enthält die folgenden Felder:
- Version : Die Versionsnummer.
- SessionStartTime : Ein Zeitstempel in Millisekunden, der die Sitzungsstartzeit aufzeichnet.
- SessionEndTime : Ein Zeitstempel in Millisekunden, der die Sitzungsendezeit aufzeichnet.
- Kategorien : Eine Reihe von Frame-Aufgabenkategorien, die in der Profiling-Sitzung aufgezeichnet wurden. Jeder Eintrag enthält:
- Name : Der Name jeder Kategorie.
- NodeId : Die eindeutige Kennung einer Taskkategorie (Knoten).Es ist ein Index mit Basis 1 in das Nodes Array.Zum Beispiel können Sie den Knoten mit dem NodeId von 123 abrufen, indem Sie das 123. Element in Nodes abrufen.
- Knoten : Eine Reihe von Knoten, die in der Profilierungs Sitzungaufgezeichnet wurden. Jeder Eintrag enthält:
- Gesamtzeit : Die Menge der Zeit, die der Knoten in CPU-Zeit in Mikrosekunden kostet.
- FunktionsIDs : Ein Array von einzigartigen Identifizierern von Funktionen.
- NodeIds : Ein Array von Node-IDs.
- Funktionen : Ein Array von Funktionen, die in der Profilierungs Sitzungaufgezeichnet wurden.
- Gesamtzeit : Die Menge der Zeit, die die Funktion in CPU-Zeit in Mikrosekunden kostet.
- Name : Der Name der Funktion, falls verfügbar.
- Quelle : Die Quelle der Funktion, falls verfügbar.
- Zeile : Die Zeilennummer der Funktion, falls verfügbar.
- Flaggen : Ein Bitsfeld, das jede spezifische Umgebunganzeigt. Derzeit kann es die folgenden Werte haben:
- 0 : Das 0. Bit repräsentiert IsNative für die Ausführung unter Native CodeGen.
- 1 : Das 1. Bit repräsentiert IsPlugin für die Ausführung als Teil eines Plug-in.
Beispiel exportierte Profilierungsdaten
{
"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}
]
}