Der MikroProfiler ist ein Tool zur Leistungsoptimierung und Fehlersuche in Roblox Studio und dem Roblox-Client. Es bietet detaillierte, visuelle Zeitinformationen für alle Engine-Aufgaben, die während eines Frames ausgeführt werden, wie das Animieren von Charakteren, das Aktualisieren der Physik, das Ausführen von Skripten und das Rendern von Geometrie. Sie können identifizieren, welche Aufgaben während welches Frames ausgeführt wurden, wie lange diese Aufgaben benötigt haben und ob einige davon dazu geführt haben, dass Sie Ihre Frame-Zeitziele verpasst haben.
Frame-Zeiten
Um den MikroProfiler zu verwenden, müssen Sie die Beziehung zwischen Frame-Zeit und Frame-Rate verstehen.
- Die Frame-Zeit ist, wie lange ein Frame benötigt hat, um auf dem Bildschirm gerendert zu werden, normalerweise in Millisekunden gemessen.
- Die Frame-Rate ist die Anzahl der Frames, die auf dem Bildschirm gerendert werden, normalerweise in Frames pro Sekunde (FPS) gemessen.
Niedrigere Frame-Zeiten bedeuten eine höhere Frame-Rate. Teilen Sie 1.000 Millisekunden (1 Sekunde) durch die Frame-Zeit, um die Frame-Rate zu erhalten.
| Durchschnittliche Frame-Zeit | Frames pro Sekunde |
|---|---|
| 33,33 ms | 30 FPS |
| 16,67 ms | 60 FPS |
| 8,33 ms | 120 FPS |
| 4,17 ms | 240 FPS |
Für ein flüssiges Spielerlebnis reicht es jedoch nicht aus, eine hohe Frame-Rate zu haben. Sie benötigen konstante Frame-Zeiten. Wenn beispielsweise 59 Frames in 10 Millisekunden ankommen und ein Frame in 410 Millisekunden, nehmen die Spieler ein riesiges, ruckartiges Stottern wahr, obwohl das Spiel mit 60 FPS läuft. Wenn alle Frames ungefähr die gleiche Zeit zum Rendern benötigen, wird Ihr Spiel aufgrund dieser Konsistenz besonders bei niedrigeren Frame-Raten merklich flüssiger erscheinen.
Der MikroProfiler konzentriert sich vollständig auf die Frame-Zeit. Sein Zweck ist es, Ihnen zu helfen, Frame-Zeit-Spitzen zu erkennen und was sie verursacht hat.
Öffnen Sie den MikroProfiler
Das Öffnen des MikroProfilers variiert je nach Plattform:
Öffnen Sie auf dem mobilen Client das Einstellungen-Menü und ändern Sie den MikroProfiler auf Ein. Navigieren Sie dann von einem Entwicklungs-Rechner im selben Netzwerk mit Ihrem Webbrowser zur angegebenen IP-Adresse und dem Port.

Dieser Screenshot zeigt eine IP-Adresse von 172.18.56.105 und einen Port von 1338, sodass Sie zu 172.18.56.105:1338 navigieren. Abhängig von der Netzwerkkonfiguration Ihres Geräts sehen Sie möglicherweise mehrere IP-Adressen. Wenn eine nicht funktioniert, versuchen Sie die nächste.
Auf dem Desktop-Client drücken Sie StrgF6 (⌘F6).
In Studio drücken Sie StrgF6 (⌘F6).
Im Allgemeinen ist der mobile Client der beste Ort, um Ihr Spiel zu profilieren. Die meisten Spieler auf Roblox verwenden Telefone und Tablets, und diese Geräte haben strenge thermische und leistungsbezogene Einschränkungen, die ihre Leistung begrenzen. Wenn Ihr Spiel auf einem Mittelklasse-Android-Tablet gut läuft, wird es auf einem Gaming-Desktop wahrscheinlich viel besser funktionieren.
Grundlagen des MikroProfilers
Der MikroProfiler hat zwei wichtige Komponenten: das Frame-Zeit-Balkendiagramm und die detaillierte Aufgaben-Zeitleiste.
- Das Frame-Zeit-Diagramm verläuft entlang der Oberseite der Benutzeroberfläche und zeigt, wie lange jeder Frame zum Rendern benötigt hat. Höhere Balken bedeuten längere Frame-Zeiten.
- Die Zeitleiste zeigt alle einzelnen Aufgaben, die während des Frames ausgeführt wurden. Breitere Balken repräsentieren Aufgaben, die länger zum Ausführen benötigt haben.
Ein typischer Workflow im MikroProfiler besteht darin, das Frame-Zeit-Diagramm zu verwenden, um einen Spitzenwert (einen höheren Balken) zu identifizieren, und dann die Zeitleiste zu verwenden, um zu identifizieren, welche Aufgaben die Spitze verursacht haben. Dann können Sie die Tag-Referenz für Informationen zur Aufgabe und deren Leistungsverbesserung einsehen.

Frame-Zeit-Diagramm
Die Höhe jedes Balkens zeigt die Anzahl der Millisekunden an, die benötigt wurden, um den Frame abzuschließen. Neuere Frames befinden sich auf der rechten Seite. Fahren Sie mit der Maus über einen Frame, um einige grundlegende Informationen zu CPU- und GPU-Nutzung zu erhalten.

Orangefarbene Balken sind Frames, bei denen die Jobs-Wandzeit die Render-Wandzeit überschreitet. In diesen Frames benötigte mindestens ein Arbeiter-Thread, der Dinge wie das Ausführen von Skripten, das Berechnen von Physik und das Abspielen von Animationen erledigt, länger als der Haupt-Render-Thread.
Wenn das Spiel Ihre Frame-Zeitziele nicht erreicht und eine große Anzahl von orangefarbenen Frames vorhanden ist, sind die häufigsten Ursachen Skripte, Physik und Animationen. Siehe Leistung verbessern.
Blaue Balken sind Frames, bei denen die Render-Wandzeit die Jobs-Wandzeit überschreitet. In diesen Frames benötigte der Haupt-Render-Thread mehr Zeit als jeder der Arbeiter-Threads.
Wenn das Spiel Ihre Frame-Zeitziele nicht erreicht und eine große Anzahl von blauen Frames vorhanden ist, deutet dies auf ein Engpass beim Rendern hin. Häufige Ursachen sind übermäßige Objekt-Dichte, Objektbewegung und Beleuchtung. Siehe Leistung verbessern.
Rote Balken sind Frames, bei denen zwei Bedingungen zutreffen:
- Render-Wandzeit überschreitet die Jobs-Wandzeit
- GPU-Wartezeit ist größer als 2,5 Millisekunden
Rote Balken sind seltener als orangefarbene und blaue und oft das Ergebnis von übermäßiger Objektkomplexität, Texturgröße und visuellen Effekten. Die Optimierung ist ähnlich wie bei blauen Balken. Siehe Leistung verbessern.
Kleine Aufgaben am Ende eines Frames können manchmal die Jobs-Wandzeit und die Render-Wandzeit stören, was ein guter Grund ist, sich mehr auf die Frame-Zeit als auf die Frame-Farbe zu konzentrieren. Es gibt keine "gute" Farbe, die angestrebt werden sollte. Eine Mischung aus orange, blau und rot ist nicht problematisch, solange Sie Ihre Frame-Zeitziele erreichen. Wenn Sie nicht Ihre Frame-Zeitziele erreichen, können die Farben anzeigen, wo Sie optimieren können.
Zeitleiste
Klicken und ziehen Sie mit der linken Maustaste, um die Zeitleiste zu verschieben. Auf einem Gerät mit vielen CPU-Kernen müssen Sie möglicherweise auf und ab navigieren, um den Thread zu finden, der eine bestimmte Aufgabe ausführt.

Durch Scrollen wird die Zeitleiste hinein- und herausgezoomt. Kombiniert mit den Millisekundenbeschriftungen oben auf der Zeitleiste können Sie ein Gefühl dafür bekommen, wie lange eine Aufgabe in absolutem Sinne gebraucht hat, aber auch, wie lange sie relativ zu anderen Aufgaben gebraucht hat.

Das grüne Overlay auf dem Balkendiagramm zeigt die Anzahl der Frames an, die derzeit auf der Zeitleiste sichtbar sind – Ihre Zoom-Stufe. Klicken Sie mit der linken Maustaste auf einen Frame-Balken, um zu dieser Position auf der Zeitleiste zu springen.
Möglicherweise müssen Sie Ihre Zoom-Stufe anpassen, aber wenn Sie mit der Maus über einen Balken fahren, wird der Frame auf der Zeitleiste hervorgehoben. Helle graue Linien grenzen die Frames ab.

Beschriftungen, die direkt unter einer anderen Beschriftung erscheinen, zeigen Aufgaben an, die als Teil der übergeordneten Aufgabe ausgeführt werden.
Statt der übergeordneten Aufgabe möchten Sie normalerweise die am schlechtesten abschneidenden Kindaufgaben untersuchen; eine übergeordnete Aufgabe kann nicht kürzer sein als die Summe ihrer Kindaufgaben.
Klicken Sie mit der rechten Maustaste auf eine Beschriftung, um die Zeitleiste genau auf die Dauer dieser Aufgabe zu zoomen.
Wenn die Menge an Informationen überwältigend ist, verwenden Sie das Menü Gruppen oder Threads, um die Zeitleiste zu filtern. Beispielsweise möchten Sie möglicherweise nur Render-Aufgaben im Haupt-Thread anzeigen.

Verwenden Sie StrgF (⌘F), um zur Stelle eines Tasks zu springen, der die meiste Zeit im Dump in Anspruch nimmt. Zum Beispiel läuft computeLightingPerform in jedem Client-Frame. Wenn Sie danach in einem Dump mit 128 Frames suchen, können Sie zu dem Frame springen, in dem es am längsten gebraucht hat, um abzuschließen.
Threads
Wie viele Programme verwendet Roblox mehrere Threads, um Sequenzen von Aufgaben gleichzeitig auszuführen. Der MikroProfiler zeigt den Thread-Namen auf der linken Seite der Zeitleiste an.

Es gibt drei wichtige Thread-Typen:
Haupt ("RBX Haupt"): Kümmert sich um CPU-basierte Render-Aufgaben. Verarbeitet Eingaben, Humanoids, Animationen/Abfolgen, Besitz der Physik, Sound und Warteschleifen für Skripterstellungen. Aktualisiert auch Studio-Schnittstellen und koordiniert die anderen Threads.
Arbeiter ("RBX Arbeiter"): Unterstützt den Haupt-Thread bei Netzwerk-, Physik- und Pfadfindungsaufgaben. Aufgrund der Anzahl der Kerne in modernen CPUs haben Sie wahrscheinlich viele Arbeiter-Threads, von denen sich die meisten zu jedem Zeitpunkt im Schlafzustand befinden.
Render ("GPU"): Folgt einer "Vorbereiten, Ausführen, Präsentieren"-Logik. Kommuniziert mit der Grafikeinheit (GPU) des Geräts.
- Vorbereiten: Informationen vom Haupt-Thread werden verwendet, um Render-Modelle zu aktualisieren.
- Ausführen: Gibt Render-Befehle aus, einschließlich 2D-Schnittstellen.
- Präsentieren: Synchronisiert mit der GPU.
Benutzerdefinierte Skriptprofile
Wenn Ihre Skripte komplizierte Aufgaben ausführen, können Sie besonders kritische Teile des Codes profilieren, um sicherzustellen, dass sie nicht zu lange dauern. Wickeln Sie den Code mit debug.profilebegin() und debug.profileend() ein, um die Zeit für alles zu messen, was zwischen diesen Funktionsaufrufen gemacht wird, und um eine Beschriftung auf der MikroProfiler-Zeitleiste zu erstellen.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Beispiel für harte Arbeit: Zwei Variablen 200.000 mal vertauschen
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Anhand der Dauer auf der Zeitleiste können Sie sehen, dass die Funktion viel Verarbeitungszeit im Vergleich zu anderen Aufgaben benötigt.
Analyse von Aufnahmen mit dem Assistant
In Studio können Sie Assistant bitten, eine pausierte MikroProfiler-Aufnahme automatisch zu analysieren, Leistungsengpässe zu identifizieren und Lösungen vorzuschlagen.
- Öffnen Sie im Studio den MikroProfiler mit StrgF6 (⌘F6).
- Wenn Sie einen Frame-Zeit-Spitzenwert entdecken, pausieren Sie die Aufnahme, indem Sie Pause im oberen Menü drücken oder StrgP (⌘P) verwenden.
- Öffnen Sie den Assistant und bitten Sie ihn, die Aufnahme zu analysieren. Beispielaufforderungen sind:
- "Ich habe eine Frame-Zeit-Spitze im MikroProfiler erfasst – analysiere sie."
- "Was hat die Spitze verursacht?"
- "Ist es physik- oder skriptabhängig?"
- "Welche Kategorie hat die höchste exklusive Zeit?"
- "Wenn ich im Hangar bin, sinkt die FPS. Reproduzieren Sie das Problem, verwenden Sie den MikroProfiler, um die Ursache zu finden, beheben Sie es und testen Sie es erneut."
Der Assistant liest die pausierte Aufnahme über die MikroProfiler-API und gibt einen Bericht über wahrscheinliche Engpässe zurück, zusammen mit vorgeschlagenen Skript- oder Szenenänderungen, die Sie anwenden können.
Diese Funktionalität funktioniert auch über den Studio MCP Server, sodass Sie MikroProfiler-Analysen in Ihren eigenen KI-Agenten oder Agenten-Zyklus integrieren können, um automatisiertes Feedback darüber zu erhalten, wie sich neue Änderungen auf die Leistung Ihres Spiels auswirken.
Frame-Daten speichern
Wenn Sie eine Reihe von Frame-Daten für eine spätere Überprüfung speichern möchten (oder um sie jemand anderem zu teilen), verwenden Sie die In Datei speichern-Schaltfläche. Der MikroProfiler speichert die Frame-Daten in einer eigenständigen HTML-Datei mit dem Namen microprofile-<datum>-<uhrzeit>.html.

Beim Desktop-Client oder in Studio verwenden Sie das Dump-Menü. In beiden Fällen speichert der MikroProfiler die Datei automatisch im Roblox-Logs-Verzeichnis:
Unter Windows überprüfen Sie %LOCALAPPDATA%\Roblox\logs.
Wenn Sie die Universal Windows Platform (UWP)-App verwenden, überprüfen Sie \Users\<benutzername>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.
Unter macOS überprüfen Sie ~/Library/Logs/Roblox.
Server profilieren
Neben der Profilierung des Clients können Sie auch kurze Dumps von Serveraktivitäten erfassen:
Treten Sie im Desktop-Client einem Spiel bei, für das Sie Editierrechte haben.
Öffnen Sie die Entwicklertools-Konsole mit StrgF9 (⌘F9).
Wählen Sie im Dropdown-Menü MikroProfiler.
Geben Sie im Server-Tab die Anzahl der zu erfassenden Frames an (maximal 60) und die Anzahl der Sekunden, die vor dem Start der Erfassung verzögert werden sollen (maximal 4).
Klicken Sie auf Server-Aufzeichnung beginnen.

Nach ein paar Sekunden gibt die Entwicklerkonsole den Pfad zur Datei an, die derselbe Pfad wie ein Standard-Dump ist.
Nur-Web-Funktionen
Der MikroProfiler hat zwei Benutzeroberflächen: die Web-Benutzeroberfläche (mobil und Dumps) sowie die Desktop-Benutzeroberfläche (Client und Studio). Wir empfehlen, die Web-Benutzeroberfläche nach Möglichkeit zu verwenden. Im Allgemeinen funktionieren die beiden Oberflächen ähnlich, aber die Web-Benutzeroberfläche hat einige zusätzliche Funktionen:
Verwenden Sie das Menü Röntgen, um die Farbkodierung für den Speicherverbrauch ein- oder auszuschalten.

- Hellere Frames innerhalb des Hauptbalkendiagramms weisen auf eine höhere Speicherzuweisung hin.
- Hellere Teile des Vorschau-Balkens und hellere Beschriftungen auf der Zeitleiste zeigen Teile des Frames mit höherer Speicherzuweisung an.
- Im Röntgenmodus drücken Sie C, um die gesamte Größe der Speicherzuweisungen anzuzeigen, anstatt die Anzahl der Zuweisungen.
Verwenden Sie das Menü Export, um ein CPU- oder Speicher-Verbrennungsdiagramm zu exportieren, eine spezialisierte Visualisierung, die alle in den Dump aufgenommenen Aufrufstapel aggregiert, die Eltern-Kind-Hierarchie beibehält und sie basierend auf der Dauer dimensioniert. Brenndiagramme sind besonders nützlich, um Aufgaben zu identifizieren, die dazu führen, dass Sie Ihre Frame-Zeitziele nicht erreichen (und daher schwer zu bemerken sind), die jedoch so häufig ausgeführt werden, dass ihre Verarbeitungszeit erheblich wird.

Sie können auch Brenndiagramme im Studio erstellen, allerdings nur für Skripte (Ausführungszeit und Speicherzuweisungen). Im Vergleich zu den web-basierten Brenndiagrammen sind die im Studio von oben nach unten und unterstützen deutlich längere Erfassungszeiten.

Ziehen Sie eine zweite Dump-Datei in die Web-Benutzeroberfläche, um ein Diff-Brenndiagramm zu erstellen, das Ihnen helfen kann, Verbesserungen oder Rückschritte in der Leistung Ihres Spiels über die Zeit hinweg zu erkennen. Klicken Sie auf Kombinieren & Vergleichen, um eine neue HTML-Datei zu exportieren.

Das Diff-Brenndiagramm hebt den Dump (links oder rechts hervor), der mehr CPU oder Speicher verbraucht, wobei hellere Farben auf einen größeren Unterschied hinweisen.

Nur-Desktop-Funktionen
Auf der Desktop-Zeitleiste klicken Sie mit der linken Maustaste auf eine Beschriftung, um sie zu einem Liniendiagramm in der unteren rechten Ecke hinzuzufügen. Das Diagramm zeigt die Zeit an, die die Aufgabe für jedes Frame benötigt. Mit diesem Diagramm können Sie die Leistung bestimmter Aufgaben in Ihrem Spiel testen. Wenn Sie fertig sind, klicken Sie mit der rechten Maustaste auf das Diagramm, um es auszublenden.

Dieses Diagramm ist mit den Hauptprofiler-Balken synchronisiert. Der aktuell ausgewählte Frame-Bereich wird im Diagramm grün hervorgehoben. Sie können auch überall auf dieses Diagramm klicken, um die Hauptprofiler-Ansicht auf diesen speziellen Frame neu zentrieren, was hilfreich ist, um Spitzenwerte in der Detailansicht zu finden.