MicroProfiler

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

Der MicroProfiler ist ein Tool zur Leistungsoptimierung und Fehlersuche in Roblox Studio und im 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. Du kannst erkennen, welche Aufgaben während welches Frames ausgeführt wurden, wie lange diese Aufgaben benötigten und ob sie dazu führten, dass du deine Zielzeiten für die Frames verpasst hast.

Frame-Zeiten

Um den MicroProfiler zu nutzen, musst du das Verhältnis zwischen Frame-Zeit und Frame-Rate verstehen.

  • Die Frame-Zeit ist die Zeit, die ein Frame benötigt hat, um auf dem Bildschirm dargestellt zu werden, gemessen in Millisekunden.
  • Die Frame-Rate ist die Anzahl der Frames, die auf dem Bildschirm dargestellt werden, gemessen in Frames pro Sekunde (FPS).

Niedrigere Frame-Zeiten bedeuten höhere Frame-Raten. Teile 1.000 Millisekunden (1 Sekunde) durch die Frame-Zeit, um die Frame-Rate zu erhalten.

Durchschnittliche Frame-ZeitFrames pro Sekunde
33.33 ms30 FPS
16.67 ms60 FPS
8.33 ms120 FPS
4.17 ms240 FPS

Für ein flüssiges Gameplay reicht es jedoch nicht aus, eine hohe Frame-Rate zu haben. Du benötigst konstante Frame-Zeiten. Wenn beispielsweise 59 Frames in 10 Millisekunden ankommen und ein Frame in 410 Millisekunden, nehmen die Spieler ein großes, störendes Ruckeln wahr, obwohl das Spiel mit 60 FPS läuft. Wenn alle Frames ungefähr die gleiche Zeit benötigen, um gerendert zu werden, wird dein Spiel aufgrund dieser Konsistenz spürbar flüssiger, insbesondere bei niedrigeren Frame-Raten.

Der MicroProfiler konzentriert sich vollständig auf die Frame-Zeit. Sein Zweck ist es, dir zu helfen, Spitzenwerte in der Frame-Zeit zu identifizieren und was diese verursacht hat.

Öffne den MicroProfiler

Das Öffnen des MicroProfilers variiert je nach Plattform:

  • Auf dem mobilen Client öffne das Einstellungen-Menü und schalte den MicroProfiler auf Ein. Verwende dann von einem Entwicklungscomputer im selben Netzwerk deinen Webbrowser, um die angegebene IP-Adresse und den Port aufzurufen.

    Die MicroProfiler-Benutzeroberfläche auf Mobilgeräten.

    Dieser Screenshot zeigt eine IP-Adresse von 172.18.56.105 und einen Port von 1338, sodass du zu 172.18.56.105:1338 navigierst. Je nach Netzwerkkonfiguration deines Geräts kannst du mehrere IP-Adressen sehen. Wenn eine nicht funktioniert, versuche die nächste.

  • Auf dem Desktop-Client drücke CtrlF6 (F6).

  • In Studio drücke CtrlF6 (F6).

Im Allgemeinen ist der mobile Client der beste Ort, um dein Spiel zu profilieren. Die meisten Spieler auf Roblox nutzen Handys und Tablets, und diese Geräte haben strenge thermische und Leistungsbeschränkungen, die ihre Leistung einschränken. Wenn dein Spiel auf einem mittleren Android-Tablet gut läuft, wird es auf einem Gaming-Desktop nahezu sicher viel, viel besser funktionieren.

Grundlegendes zum MicroProfiler

Der MicroProfiler hat zwei Hauptkomponenten: das Frame-Zeit-Balkendiagramm und die detaillierte Aufgabenzeitachse.

  • Das Frame-Zeit-Diagramm läuft entlang der oberen Seite der Benutzeroberfläche und zeigt, wie lange jeder Frame zum Rendern benötigt hat. Höhere Balken bedeuten längere Frame-Zeiten.
  • Die Zeitachse zeigt alle einzelnen Aufgaben, die während des Frames ausgeführt wurden. Breitere Balken stellen Aufgaben dar, die länger zum Ausführen benötigt haben.

Ein typischer Arbeitsablauf im MicroProfiler besteht darin, das Frame-Zeit-Diagramm zu verwenden, um eine Spitze (einen höheren Balken) zu identifizieren und dann die Zeitachse zu verwenden, um zu erkennen, welche Aufgaben die Spitze verursacht haben. Dann kannst du die Tag-Referenz für Informationen über die Aufgabe und darüber, wie du deren Leistung verbessern kannst, überprüfen.

Beispiel für eine Frame-Zeit-Spitze.

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 rechts. Bewege die Maus über einen Frame, um grundlegende Informationen zur CPU- und GPU-Nutzung zu erhalten.

Das MicroProfiler-Frame-Diagramm, das blaue Frames und detaillierte Frame-Informationen zeigt.
  • Orangefarbene Balken sind Frames, bei denen die Jobs Wall Time die Render Wall Time überschreitet. In diesen Frames hat mindestens einer der Worker-Threads, die Aufgaben wie das Ausführen von Skripten, das Berechnen von Physik und das Abspielen von Animationen erledigen, länger gebraucht als der Haupt-Render-Thread.

    Wenn das Spiel deine Ziele für die Frame-Zeit nicht erreicht und eine große Anzahl orangefarbener Frames aufweist, können häufige Ursachen Skripte, Physik und Animationen sein. Siehe Leistung verbessern.

  • Blaue Balken sind Frames, bei denen die Render Wall Time die Jobs Wall Time überschreitet. In diesen Frames hat der Haupt-Render-Thread mehr Zeit benötigt als einer der Worker-Threads.

    Wenn das Spiel deine Ziele für die Frame-Zeit nicht erreicht und eine große Anzahl blauer Frames aufweist, deutet das auf einen Rendering-Flaschenhals 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 Wall Time überschreitet Jobs Wall Time
    • GPU Wait Time ist größer als 2,5 Millisekunden

    Rote Balken sind seltener als orangefarbene und blaue und resultieren oft aus übermäßiger Objektkomplexität, Texturgröße und visuellen Effekten. Die Optimierung ist ähnlich wie bei blauen Balken. Siehe Leistung verbessern.

Winzige Aufgaben am Ende eines Frames können manchmal die Jobs Wall Time und Render Wall Time durcheinanderbringen, was ein guter Grund ist, sich mehr auf die Frame-Zeit als auf die Frame-Farbe zu konzentrieren. Es gibt keine "gute" Farbe, nach der man streben sollte. Eine Mischung aus orange, blau und rot ist nicht problematisch, solange du deine Ziele für die Frame-Zeit erreichst. Wenn du deine Ziele für die Frame-Zeit nicht erreichst, können die Farben anzeigen, wo optimiert werden sollte.

Zeitachse

  • Klicke mit der linken Maustaste und ziehe, um die Zeitachse zu verschieben. Auf einem Rechner mit vielen CPU-Kernen musst du möglicherweise viel nach oben oder unten scrollen, um den Thread zu finden, der eine bestimmte Aufgabe durchführt.

    Die linke Seite der detaillierten Ansicht des MicroProfilers, mit Zeilen für Threads.
  • Mit dem Scrollen kannst du die Zeitachse hinein- und herauszoomen. In Kombination mit den Millisekunden-Bezeichnungen oben auf der Zeitachse kannst du ein Gefühl dafür bekommen, wie lange eine Aufgabe in absoluter Hinsicht gedauert hat, aber auch, wie lange sie im Verhältnis zu anderen Aufgaben gedauert hat.

    Die detaillierte Ansicht des MicroProfilers mit zahlreichen horizontalen Beschriftungen.
  • Die grüne Überlagerung im Balkendiagramm zeigt die Anzahl der aktuell sichtbareren Frames auf der Zeitachse an - dein Zoomlevel. Klicke mit der linken Maustaste auf einen Frame-Balken, um zu dieser Position auf der Zeitachse zu springen.

    Du musst möglicherweise dein Zoomlevel anpassen, aber das Überfahren eines Balkens hebt den Frame auf der Zeitachse hervor. Helle graue Linien grenzen die Frames ab.

    Das MicroProfiler-Balkendiagramm mit grüner Überlagerung, um den Zoomlevel anzuzeigen.
  • Beschriftungen, die direkt unter einer anderen Beschriftung erscheinen, zeigen Aufgaben an, die als Teil der übergeordneten Aufgabe ausgeführt werden.

    Du möchtest normalerweise nicht die übergeordnete Aufgabe, sondern die leistungsschwächsten untergeordneten Aufgaben untersuchen; eine übergeordnete Aufgabe kann nicht kürzer sein als die Summe ihrer untergeordneten Aufgaben.

  • Klicke mit der rechten Maustaste auf ein Label, um die Zeitachse genau auf die Dauer dieser Aufgabe zu zoomen.

  • Wenn die Menge an Informationen überwältigend ist, verwende das Menü Gruppen oder Threads, um die Zeitachse zu filtern. Du möchtest beispielsweise möglicherweise nur Render-Aufgaben im Hauptthread sehen.

    Die Ansicht beim Überfahren eines Labels, mit hervorgehobener Gruppe.
  • Benutze CtrlF (F), um zu dem Vorkommen einer Aufgabe zu springen, die im Dump die meiste Zeit in Anspruch nimmt. Wenn du beispielsweise computeLightingPerform suchst, läuft sie in jedem Client-Frame. Wenn du danach in einem Dump mit 128 Frames suchst, kannst du zum Frame springen, in dem sie am längsten zum Abschluss benötigt hat.

Threads

Wie viele Programme nutzt Roblox mehrere Threads, um Aufgaben in Sequenzen zur gleichen Zeit auszuführen. Der MicroProfiler zeigt den Thread-Namen auf der linken Seite der Zeitachse an.

Die linke Seite der detaillierten Ansicht des MicroProfilers, mit Zeilen für Threads.

Es gibt drei wichtige Thread-Typen:

  • Haupt ("RBX Main"): Bearbeitet CPU-basierte Rendering-Aufgaben. Verarbeitet Eingaben, Humanoids, Animationen/Tweens, Besitz der Physik, Ton und wartet auf Skript-Wiederaufnahmen. Aktualisiert auch die Benutzeroberflächen des Studios und koordiniert die anderen Threads.

  • Worker ("RBX Worker"): Unterstützt den Hauptthread bei Netzwerk-, Physik- und Pfadsuche. Aufgrund der Anzahl an Kernen in modernen CPUs hast du wahrscheinlich viele Worker-Threads, von denen sich die meisten zu jeder Zeit im Ruhezustand befinden.

  • Render ("GPU"): Folgt einer Logik von "Vorbereiten, Ausführen, Präsentieren". Kommuniziert mit der Graphics Processing Unit (GPU) des Geräts.

    • Vorbereiten: Informationen aus dem Hauptthread werden verwendet, um Rendering-Modelle zu aktualisieren.
    • Ausführen: Gibt Rendering-Befehle aus, einschließlich 2D-Schnittstellen.
    • Präsentieren: Synchronisiert mit der GPU.

Benutzerdefinierte Skript-Profile

Wenn deine Skripte komplizierte Aufgaben ausführen, kannst du kritische Teile des Codes profilieren, um sicherzustellen, dass sie nicht zu lange dauern. Umhülle den Code mit debug.profilebegin() und debug.profileend(), um alles zu messen, was zwischen diesen Funktionsaufrufen erledigt wird, und um ein Label auf der MicroProfiler-Zeitachse zu erstellen.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Beispielhafter harter Arbeit: zwei Variablen 200.000 Mal tauschen
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Viele Labels auf dem MicroProfiler, mit einem benutzerdefinierten Label, das den Großteil der Verarbeitungszeit in Anspruch nimmt.

Anhand seiner Dauer auf der Zeitachse kannst du sehen, dass die Funktion viel Verarbeitungszeit im Vergleich zu anderen Aufgaben benötigt.

Frame-Daten speichern

Wenn du eine Menge Frame-Daten für eine spätere Überprüfung speichern möchtest (oder um sie mit jemand anderem zu teilen), benutze die Schaltfläche In Datei speichern. Der MicroProfiler speichert die Frame-Daten in einer eigenständigen HTML-Datei mit dem Namen microprofile-<datum>-<uhrzeit>.html.

Die Schaltfläche 'In Datei speichern' in der Weboberfläche.

Auf dem Desktop-Client oder im Studio benutze das Menü Dump. In beiden Fällen speichert der MicroProfiler die Datei automatisch im Roblox-Logs-Verzeichnis:

  • Unter Windows überprüfe %LOCALAPPDATA%\Roblox\logs.

    Wenn du die Universal Windows Platform (UWP)-App verwendest, überprüfe \Users\<benutzername>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.

  • Unter macOS überprüfe ~/Library/Logs/Roblox.

Server profilieren

Zusätzlich zum Profilieren des Clients kannst du kurze Dumps der Serveraktivität erfassen:

  1. Tritt im Desktop-Client einem Spiel bei, für das du Bearbeitungsberechtigungen hast.

  2. Öffne die Entwickler-Konsole mit CtrlF9 (F9).

  3. Wähle im Dropdown-Menü MicroProfiler aus.

  4. Gib im Server-Tab die Anzahl der zu erfassenden Frames an (maximal 60) und die Anzahl der Sekunden, die gewartet werden sollen, bevor die Erfassung beginnt (maximal 4).

  5. Klicke auf Serveraufzeichnung starten.

    Der Bildschirm des MicroProfilers in der Entwicklerkonsole.

    Nach ein paar Sekunden gibt die Entwicklerkonsole den Pfad zur Datei an, der derselbe Pfad wie bei einem Standard-Dump ist.

Nur-Web-Features

Der MicroProfiler hat zwei Benutzeroberflächen: die Weboberfläche (mobil und Dumps) und die Desktop-Oberfläche (Client und Studio). Wir empfehlen, die Weboberfläche immer dann zu verwenden, wenn dies möglich ist. Im Allgemeinen funktionieren die beiden ähnlich, aber die Weboberfläche hat einige zusätzliche Funktionen:

  • Verwende das Menü Röntgenstrahl, um die Farbgebung für die Speicherzuweisung zu aktivieren oder zu deaktivieren.

    Die MicroProfiler-Webansicht mit aktiviertem Röntgen.
    • Helle Frames innerhalb des Hauptbalkendiagramms zeigen eine höhere Speicherzuweisung an.
    • Helle Teile des Vorschau-Balkens und hellere Beschriftungen auf der Zeitachse zeigen Teile des Frames mit höherer Speicherzuweisung an.
    • Im Röntgenmodus drücke C, um die Gesamtgröße der Speicherzuweisungen anzuzeigen, anstatt die Anzahl der Zuweisungen.
  • Verwende das Menü Exportieren, um ein CPU- oder Speicher-Stack-Graphen zu exportieren, eine spezialisierte Visualisierung, die alle Call-Stacks im Dump aggregiert, die Eltern-Kind-Hierarchie beibehält und diese basierend auf der Dauer skaliert. Flame-Diagramme sind besonders nützlich, um Aufgaben zu identifizieren, die dich nicht daran hindern, deine Ziele für die Frame-Zeit zu erreichen (und daher schwer zu bemerken sind), aber so oft ausgeführt werden, dass ihre Verarbeitungszeit signifikant wird.

    Das Flame-Diagramm des MicroProfilers in der Weboberfläche.

    Du kannst auch Flame-Diagramme in Studio erstellen, allerdings nur für Skripte (Ausführungszeit und Speicherzuweisungen). Im Vergleich zu den webbasierten Flame-Diagrammen sind die im Studio von oben nach unten statt von unten nach oben und unterstützen dramatisch längere Aufzeichnungszeiten.

    Das Flame-Diagramm des MicroProfilers im Studio.
  • Ziehe eine zweite Dump-Datei in die Weboberfläche, um ein Differenz-Flame-Diagramm zu erstellen, das dir helfen kann, Verbesserungen oder Rückschritte in der Leistung deines Spiels im Laufe der Zeit zu erkennen. Klicke auf Kombinieren & Vergleichen, um eine neue HTML-Datei zu exportieren.

    Der Differenz-Flame-Diagramm-Builder des MicroProfilers, der die linke und rechte Seite zeigt.

    Das Differenz-Flame-Diagramm hebt den Dump (links oder rechts hervor), der mehr CPU oder Speicher verbraucht, wobei hellere Farben einen größeren Unterschied anzeigen.

    Das Differenz-Flame-Diagramm des MicroProfilers.

Nur-Desktop-Features

Klicke im Desktop-Zeitachsen-Diagramm mit der linken Maustaste auf ein Label, um es zu einem Liniendiagramm in der unteren rechten Ecke hinzuzufügen. Das Diagramm zeigt die Zeit, die die Aufgabe in jedem Frame benötigt. Mit diesem Diagramm kannst du die Leistung bestimmter Aufgaben in deinem Spiel testen. Wenn du fertig bist, klicke mit der rechten Maustaste auf das Diagramm, um es auszublenden.

Das Diagramm, das zeigt, wie lange Aufgaben pro Frame dauern.

Dieses Diagramm ist mit den Hauptprofiler-Balken synchronisiert. Der aktuell ausgewählte Frame-Bereich ist im Diagramm grün hervorgehoben. Du kannst auch irgendwo auf dieses Diagramm klicken, um die Hauptprofiler-Ansicht auf diesen spezifischen Frame zurückzusetzen, was hilfreich ist, um Spitzen in der detaillierten Ansicht zu finden.

©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.