Mikroprofilierer

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Der MicroProfiler ist ein Leistungsoptimierungs- und Fehlersuche-Tool, das in Roblox Studio und dem Roblox-Client verfügbar ist.Es liefert detaillierte Zeitinformationen für Aufgabenplaner Aufgaben mit dem Namen Tags .

  • Für eine Liste der häufigen Aufgaben verweisen Sie auf die Tag-Referenz.
  • Für ein Schritt-für-Schritt-Beispiel für die Verwendung des MicroProfilers, um ein Leistungsproblem zu identifizieren, siehe den MicroProfiler-Walkthrough.

MicroProfiler-Grundlagen

Um den Mikroprofiler zu öffnen, drücken Sie CtrlAltF6 ( F6 ) in Studio oder beim Client.Du kannst auch das Einstellungsmenü im Client verwenden.

Wenn geöffnet, ist eine Menüleiste oben im 3D-Ansichtsfenster sichtbar.Im Standardmodus zeigt ein bewegender Balkendiagramm die Zeit an, die für jeden Rahmen des Aufgabenplaners verwendet wird.

The Microprofiler frame graph, showing blue frames and detailed frame information.

Balken sollten im Allgemeinen um die Mitte des Diagramms liegen, aber du könntest plötzliche Spikes sehen (schnelle Zunahmen der Werte).Stacheln zeigen an, dass mehr Zeit benötigt wurde, um eine Aufgabe auszuführen, in der Regel aufgrund einer erhöhten Arbeitsbelastung.Die Erstellung vieler beweglicher Teile erfordert Instanzmehr Arbeit von der Physiksimulation, die dann mehr Zeit benötigt, um Bewegung und Teilkontakte zu verarbeiten.Das folgende Bild zeigt ein Beispiel für einen Spike:

The Microprofiler with several bars higher than others.

Um die Aufzeichnung von Frames zu pausieren, drücke CtrlP ( P ) oder klicke auf Pause in der Menüleiste.Während der Pause erscheint eine Zeitachse und du kannst durch Rahmen navigieren, indem du auf den Graph klickst oder ziehst.

Für eine vollständige Zusammenfassung der verschiedenen Ansichten und wie man die MicroProfiler-Schnittstelle navigiert, siehe MicroProfiler-Modi.

Themen

Wie viele Programme verwendet Roblox mehrere Threads, um gleichzeitig mehrere Sequenzen von Aufgaben auszuführen.Im MicroProfiler im detaillierten Modus kannst du Labels für jeden Thread auf der linken Seite sehen.

The lefthand side of the Microprofiler detailed view, with rows for threads.

Es gibt drei Hauptthread-Typen:

  • Haupt/Render : Vielleicht intuitiv nicht, läuft auf der CPU.Verarbeitet Eingaben, Humanoids , Animationen/Tweening, Physikbesitz, Sound und Warteschrift-Wiederaufnahmen.Aktualisiert auch Studio-Schnittstellen und koordiniert die anderen Threads.

  • Arbeiter ("RBX-Arbeiter"): Hilft dem Haupt thread bei der Vernetzung, Physik und Pfadfindung.Aufgrund der Anzahl der Kerne in modernen CPUs haben Sie wahrscheinlich viele Arbeits Threads, von denen die meisten zu einem bestimmten Zeitpunkt im Schlafzustand sind.

  • Render ("GPU"): Folgt einer "vorbereiten, ausführen, präsentieren"-Logik. Kommuniziert mit der Grafikverarbeitungseinheit (GPU) des Geräts.

    • Vorbereiten: Informationen aus dem Haupt thread werden verwendet, um Rendermodelle zu aktualisieren.
    • Ausführen: Ausgabe von Renderbefehlen, einschließlich 2D-Schnittstellen.
    • Präsentiert: Synchronisiert sich mit der GPU.

Benutzerdefinierte Profile

Wenn deine Skripte komplizierte Aufgaben ausführen, kannst du kritische Teile des Codes profilieren, um sicherzustellen, dass sie nicht zu lange dauern.Wrapen Sie Code in debug.profilebegin() und debug.profileend(), um alles, was zwischen diesen Funktionsaufrufen erledigt wird, zu zeitigen, und erstellen Sie ein Etikett auf der Zeitachse des MicroProfiler.

Arbeitsskript HardWorkScript

debug.profilebegin("Hard Work")
-- Code zum Profilieren
debug.profileend()
A custom label on the detailed view of the MicroProfiler.

Es gibt eine begrenzte Menge an Speicher, die für MicroProfiler-Etiketten verfügbar ist.Wenn sich dieses Speicher auslauft, erscheinen benutzerdefinierte Profilierungs-Etiketten möglicherweise nicht als sinnvoller Name in der Zeitachse.Verwende weniger Label, um dieses Problem zu vermeiden.Wenn du nicht mehr einen Abschnitt deines Codes profilieren musst, kommentiere oder entferne Aufrufe dieser Funktionen.

Beispiel

Das Codebeispiel unten verbindet eine Dummy-Funktion mit dem RunService.PreSimulation-Ereignis, das jeden Frame ausgeführt wird.Alles, was häufig getan wird, sollte so effizient wie möglich laufen, daher ist diese Funktion ein guter Kandidat für das Profiling.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Beispiel harter Arbeit: Tausche zwei Variablen 200.000 Mal
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)

Wenn du das Erlebnis ausführst und den MicroProfiler ( CtrlP oder P ) pausierst, ist das benutzerdefinierte Etikett unter dem Beschriftung gameStepped sichtbar.

Many labels on the MicroProfiler, with a custom label taking up the majority of the processing time.

Von seiner Dauer auf der Zeitleiste aus kannst du sagen, dass die Funktion viel Verarbeitungszeit im Vergleich zu anderen Operationen verwendet.

Speichere Rahmen-Daten

Wenn du eine Reihe von Rahmen-Daten für eine spätere Überprüfung speichern (oder mit jemand anderem teilen) möchtest, verwende das Dump Menü.Die Engine speichert die Rahmendaten in einer Datei namens microprofile-<date>-<time>.html im Roblox-Logs-Verzeichnis.

  • Auf Windows, überprüfen Sie %LOCALAPPDATA%\Roblox\logs.

    Wenn Sie die Universal Windows Platform (UWP) App verwenden, überprüfen Sie \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.

  • Auf macOS überprüfen Sie ~/Library/Logs/Roblox.

Diese HTML-Dateien verwenden die gleiche Web-basierte UI wie die Live-Verbindung für mobile Geräte und Server-Abstürze.

Profilmobilgeräte

Um auf den MicroProfiler vom mobilen Client aus zugreifen zu können, muss dein mobiles Gerät mit deiner Entwicklungsmaschine auf demselben Netzwerk verbunden sein gleich .

Aktiviere den MicroProfiler im Einstellungen -Menü des mobilen Geräts. Nachdem du es aktiviert hast, zeigt das Menü eine IP-Adresse und eine Portnumber an.

A picture of the Settings menu on mobile, showing how to enable the MicroProfiler.

Zum Beispiel, im Screenshot oben, ist die Adresse 192.168.1.166 und der Port 1338 .Von einem Computer auf demselben Netzwerk navigieren Sie zu http://192.168.1.166:1338 für eine Web-basierte Version der MicroProfiler-Benutzeroberfläche.

The MicroProfiler web view.

Profilieren Sie den Server

Zusätzlich zum Standard-Client MicroProfiler kannst du kurze Dumps der Serveraktivität mit dem Server-MicroProfiler machen.

  1. In einem Erlebnis, für das du Bearbeitungsberechtigungen hast, öffne die Entwicklerkonsole mit CtrlAltF9 .

  2. Wählen Sie im Dropdown-Menü MicroProfiler .

  3. Im ServerProfiler Abschnitt geben Sie die Anzahl der Frames pro Sekunde (maximal 60) und die Anzahl der Sekunden für das Profilieren (maximal 4) an.

  4. Klicken Sie auf Starten der Aufnahme .

    The Developer Console MicroProfiler screen.

    Nach einigen Sekunden bietet die Entwicklerkonsole den Weg zum Datei, der der gleiche Weg ist wie ein Standard-Dump.

Verwende die Web-UI

Im Allgemeinen funktioniert die MicroProfiler-Web-UI ähnlich wie der detaillierte Modus, hat aber einige zusätzliche Funktionen:

  • Zusätzlich zur Filterung nach Gruppe kannst du nach Thread filtern.

  • Verwende CtrlF / F um zu springen auf das Auftreten einer Aufgabe, die die meiste Zeit im (Abbild) sicherneinnimmt.Zum Beispiel läuft computeLightingPerform in jedem Frame.Wenn du nach ihm in einem Dump mit 128 Frames suchst, kannst du zum Frame springen, in dem es am längsten gedauert hat, um abgeschlossen zu werden.

  • Verwenden Sie das X-Ray -Menü, um die Farbcodierung für die Speicherzuweisung zu aktivieren oder zu deaktivieren.

    The MicroProfiler web view with x-ray enabled.
    • Leichtere Frames innerhalb des Hauptbar-Diagramms zeigen eine höhere Speicherzuweisung an.
    • Leichtere Teile der Vorschauleiste und leichtere Etiketten auf der Zeitachse zeigen Teile des Rahmens mit einer höheren Speicherzuweisung an.
    • Im Röntgenmodus drücken Sie C, um die Gesamtgröße der Speicherzuweisungen anstelle der Anzahl der Zuweisungen anzuzeigen.
  • Verwende das Export -Menü, um einen CPU- oder Speicherflammen-Diagramm zu exportieren, eine spezialisierte Visualisierung, die alle in den (Abbild) sichernenthaltenen Anrufstapel zusammenführt, die Eltern-Kind-Hierarchie beibehält und sie basierend auf der Dauer skaliert.Flammendiagramme sind besonders nützlich für die Identifizierung von Aufgaben, die nicht besonders lange dauern (und daher schwer zu erkennen sind), aber so häufig laufen, dass ihre Verarbeitungszeit signifikant wird.

    The MicroProfiler flame graph in the web UI.

    Du kannst auch Flammen-Diagramme in Studio erstellen, allerdings nur für Skripte (Ausführungszeit und Speicherzuweisungen).Im Vergleich zu den flammenbasierten Diagrammen im Web sind diejenigen in Studio eher top-down als bottom-up und unterstützen dramatisch längere Aufzeichnungszeiten.

    The MicroProfiler flame graph in Studio.
  • Ziehe und lass eine zweite Sicherungsdatei in die Web-UI ziehen, um einen Diff-Flammen-Diagramm zu generieren, das dir helfen kann, Verbesserungen oder Rückschritte bei der Leistung deines Erlebnisses im Laufe der Zeit zu identifizieren.Klicken Sie auf Kombinieren und vergleichen , um eine neue HTML-Datei zu exportieren.

    The MicroProfiler diff flame graph builder showing the left and right sides.

    Der Diff-Flammen-Diagramm zeigt die Dump (links oder rechts) hervor, die mehr CPU oder Speicher verbraucht, mit helleren Farben, die einen größeren Unterschied anzeigen.

    The MicroProfiler diff flame graph.