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 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 zum Ausführen benötigten und ob sie dazu führten, dass Sie Ihre Frame-Zeitziele verfehlt haben.

Frame-Zeiten

Um den MicroProfiler zu verwenden, müssen Sie die Beziehung zwischen Frame-Zeit und Frame-Rate verstehen.

  • Die Frame-Zeit ist die Zeit, die ein Frame benötigt, um auf dem Bildschirm gerendert zu werden, normalerweise in Millisekunden gemessen.
  • Die Frame-Rate ist die Anzahl der auf dem Bildschirm gerenderten Frames, 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-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 ist es jedoch nicht genug, 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 großes, 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 spürbar flüssiger, insbesondere bei niedrigeren Frame-Raten.

Der MicroProfiler konzentriert sich vollständig auf die Frame-Zeit. Sein Zweck ist es, Ihnen zu helfen, Frame-Zeit-Spitzen zu identifizieren und was sie verursacht hat.

Öffnen des MicroProfilers

Das Öffnen des MicroProfilers variiert je nach Plattform:

  • Auf dem mobilen Client öffnen Sie das Einstellungen-Menü und ändern den MicroProfiler auf Ein. Verwenden Sie dann von einem Entwicklungsrechner im selben Netzwerk Ihren Webbrowser, um zur angegebenen IP-Adresse und dem Port zu navigieren.

    Die MicroProfiler-Benutzeroberfläche auf Mobilgeräten.

    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. Je nach 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 CtrlF6 (⌘F6).

  • In Studio drücken Sie CtrlF6 (⌘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 erhebliche thermische und Leistungsbeschränkungen, die ihre Leistung einschränken. Wenn Ihr Spiel gut auf einem Mittelklasse-Android-Tablet läuft, läuft es mit Sicherheit viel, viel besser auf einem Gaming-Desktop.

MicroProfiler-Grundlagen

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

  • Das Frame-Zeit-Diagramm verläuft oben in 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ötigten.

Ein typischer Arbeitsablauf im MicroProfiler besteht darin, das Frame-Zeit-Diagramm zu verwenden, um einen Spike (einen höheren Balken) zu identifizieren und dann die Zeitleiste zu verwenden, um zu identifizieren, welche Aufgaben den Spike verursacht haben. Dann können Sie die Tag-Referenz für Informationen zur Aufgabe und zur Verbesserung ihrer Leistung überprüfen.

Beispiel eines Frame-Zeit-Spikes.

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. Fahren Sie mit der Maus über einen Frame, um einige 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-Wandzeit die Render-Wandzeit überschreitet. In diesen Frames benötigte mindestens einer der Worker-Threads, die Dinge wie Skripte ausführen, Physik berechnen und Animationen abspielen, länger zum Ausführen als der Haupt-Render-Thread.

    Wenn das Spiel Ihre Frame-Zeitziele nicht erreicht und eine große Anzahl von orangefarbenen Frames hat, sind häufige 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 einer der Worker-Threads.

    Wenn das Spiel Ihre Frame-Zeitziele nicht erreicht und eine große Anzahl von blauen Frames hat, 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-Wandzeit überschreitet Jobs-Wandzeit
    • GPU-Wartezeit ist größer als 2,5 Millisekunden

    Rote Balken sind seltener als orangefarbene und blaue und oft das Ergebnis übermäßiger Objektkomplexität, Texturgröße und visueller Effekte. Die Optimierung ist ähnlich wie bei blauen Balken. Siehe Leistung verbessern.

Kleine Aufgaben am Ende eines Frames können manchmal die Jobs-Wandzeit und Render-Wandzeit 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 Sie Ihre Frame-Zeitziele erreichen. Wenn Sie nicht Ihre Frame-Zeitziele erreichen, können die Farben anzeigen, wo Sie optimieren sollten.

Zeitleiste

  • Klicken Sie mit der linken Maustaste und ziehen Sie, um die Zeitleiste zu verschieben. Auf einem Rechner mit vielen CPU-Kernen müssen Sie möglicherweise ziemlich viel nach oben oder unten scrollen, um den Thread zu finden, der eine bestimmte Aufgabe ausführt.

    Die linke Seite der detaillierten Ansicht des MicroProfilers, mit Zeilen für Threads.
  • Das Scrollen zoomt die Zeitleiste hinein und heraus. In Kombination mit den Millisekundenbeschriftungen oben in der Zeitleiste können Sie 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 derzeit auf der Zeitleiste sichtbaren Frames an—Ihr Zoom-Level. Klicken Sie mit der linken Maustaste auf einen Frame-Balken, um zu dieser Position auf der Zeitleiste zu springen.

    Möglicherweise müssen Sie Ihr Zoom-Level anpassen, aber das Überfahren eines Balkens hebt den Frame auf der Zeitleiste hervor. Hellgraue Linien grenzen die Frames ab.

    Das MicroProfiler-Balkendiagramm mit grüner Überlagerung zur Anzeige des Zoom-Levels.
  • Beschriftungen, die direkt unter einer anderen Beschriftung erscheinen, zeigen Aufgaben an, die als Teil der übergeordneten Aufgabe ausgeführt werden.

    Anstatt die übergeordnete Aufgabe zu betrachten, möchten Sie typischerweise die am schlechtesten abschneidenden untergeordneten Aufgaben untersuchen; eine übergeordnete Aufgabe kann nicht kürzer sein als die Summe ihrer untergeordneten Aufgaben.

  • 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 sehen.

    Die Ansicht beim Überfahren einer Beschriftung, mit hervorgehobener Gruppe.
  • Verwenden Sie CtrlF (⌘F), um zur Vorkommen einer Aufgabe zu springen, die die meiste Zeit im Dump benötigt. Beispielsweise wird computeLightingPerform in jedem Client-Frame ausgeführt. Wenn Sie danach in einem Dump mit 128 Frames suchen, können Sie zu dem Frame springen, in dem es am längsten gedauert hat.

Threads

Wie viele Programme verwendet Roblox mehrere Threads, um Aufgabenfolgen gleichzeitig auszuführen. Der MicroProfiler zeigt den Thread-Namen auf der linken Seite der Zeitleiste 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/Tweening, Physikbesitz, Sound und wartet auf Skriptfortsetzungen. Aktualisiert auch Studio-Oberflächen und koordiniert die anderen Threads.

  • Worker ("RBX Worker"): Unterstützt den Haupt-Thread bei Netzwerk-, Physik- und Pfadfindungsaufgaben. Aufgrund der Anzahl der Kerne in modernen CPUs haben Sie wahrscheinlich viele Worker-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 aus dem Haupt-Thread werden verwendet, um Rendering-Modelle zu aktualisieren.
    • Ausführen: Gibt Rendering-Befehle aus, einschließlich 2D-Oberflächen.
    • Präsentieren: Synchronisiert mit der GPU.

Benutzerdefinierte Skriptprofile

Wenn Ihre Skripte komplizierte Aufgaben ausführen, können Sie 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 alles zu messen, was zwischen diesen Funktionsaufrufen erledigt wird, und um ein Label auf der MicroProfiler-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 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, wobei ein benutzerdefiniertes Label den Großteil der Verarbeitungszeit einnimmt.

Anhand seiner Dauer auf der Zeitleiste können Sie erkennen, dass die Funktion im Vergleich zu anderen Aufgaben viel Verarbeitungszeit benötigt.

Analysieren von Aufnahmen mit Assistant

In Studio können Sie Assistant bitten, eine pausierte MicroProfiler-Aufnahme automatisch zu analysieren, Leistungsengpässe zu identifizieren und Lösungen vorzuschlagen.

  1. Öffnen Sie in Studio den MicroProfiler mit CtrlF6 (⌘F6).
  2. Wenn Sie einen Frame-Zeit-Spike bemerken, pausieren Sie die Aufnahme, indem Sie auf Pause im oberen Menü klicken oder CtrlP (⌘P) verwenden.
  3. Öffnen Sie Assistant und bitten Sie ihn, die Aufnahme zu analysieren. Beispielaufforderungen sind:
    • "Ich habe einen Frame-Zeit-Spike im MicroProfiler erfasst—analysiere ihn."
    • "Was hat den Spike verursacht?"
    • "Ist es physikgebunden oder skriptgebunden?"
    • "Welche Kategorie hat die höchste exklusive Zeit?"
    • "Wenn ich im Hangar bin, sinkt die FPS. Reproduzieren Sie das Problem, verwenden Sie MicroProfiler, um die Ursache zu finden, beheben Sie es und testen Sie erneut."

Assistant liest die pausierte Aufnahme über die MicroProfiler-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 MicroProfiler-Analysen in Ihren eigenen KI-Agenten oder agentischen Schleifen 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 Menge von Frame-Daten für eine spätere Überprüfung (oder um sie mit jemand anderem zu teilen) speichern möchten, verwenden Sie 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 in Studio verwenden Sie das Menü Dump. In beiden Fällen speichert der MicroProfiler die Datei automatisch im Roblox-Logverzeichnis:

  • 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 kurze Dumps der Serveraktivität erfassen:

  1. Treten Sie im Desktop-Client einem Spiel bei, für das Sie Bearbeitungsberechtigungen haben.

  2. Öffnen Sie die Entwicklerkonsole mit CtrlF9 (⌘F9).

  3. Wählen Sie im Dropdown-Menü MicroProfiler aus.

  4. Geben Sie im Server-Tab die Anzahl der zu erfassenden Frames an (maximal 60) und die Anzahl der Sekunden, die vor dem Start der Aufnahme gewartet werden sollen (maximal 4).

  5. Klicken Sie auf Serveraufzeichnung starten.

    Der MicroProfiler-Bildschirm in der Entwicklerkonsole.

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

Nur-Web-Funktionen

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 wann immer möglich zu verwenden. Im Allgemeinen funktionieren die beiden ähnlich, aber die Weboberfläche hat einige zusätzliche Funktionen:

  • Verwenden Sie das Menü Röntgen, um die Farbcode für die Speicherzuweisung zu aktivieren oder zu deaktivieren.

    Die MicroProfiler-Webansicht mit aktiviertem Röntgen.
    • Hellere Frames innerhalb des Hauptbalkendiagramms zeigen eine höhere Speicherzuweisung an.
    • 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 Gesamtgröße der Speicherzuweisungen anzuzeigen, anstatt die Anzahl der Zuweisungen.
  • Verwenden Sie das Menü Exportieren, um ein CPU- oder Speicher-Flame-Diagramm zu exportieren, eine spezialisierte Visualisierung, die alle im Dump enthaltenen Aufrufstapel aggregiert, die Eltern-Kind-Hierarchie beibehält und sie basierend auf der Dauer dimensioniert. Flame-Diagramme sind besonders nützlich, um Aufgaben zu identifizieren, die nicht dazu führen, dass Sie Ihre Frame-Zeitziele verfehlen (und daher schwer zu bemerken sind), aber so oft ausgeführt werden, dass ihre Verarbeitungszeit signifikant wird.

    Das MicroProfiler-Flame-Diagramm in der Weboberfläche.

    Sie können auch Flame-Diagramme in Studio erstellen, jedoch nur für Skripte (Ausführungszeit und Speicherzuweisungen). Im Vergleich zu den webbasierten Flame-Diagrammen sind die in Studio von oben nach unten und unterstützen dramatisch längere Erfassungszeiten.

    Das MicroProfiler-Flame-Diagramm in Studio.
  • Ziehen Sie eine zweite Dump-Datei in die Weboberfläche, um ein Diff-Flame-Diagramm zu erstellen, das Ihnen helfen kann, Verbesserungen oder Rückschritte in der Leistung Ihres Spiels im Laufe der Zeit zu identifizieren. Klicken Sie auf Kombinieren & Vergleichen, um eine neue HTML-Datei zu exportieren.

    Der MicroProfiler-Diff-Flame-Diagramm-Builder, der die linke und rechte Seite zeigt.

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

    Das MicroProfiler-Diff-Flame-Diagramm.

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 in jedem Frame benötigt. Mit diesem Diagramm können Sie die Leistung nur bestimmter Aufgaben in Ihrem Spiel testen. Wenn Sie fertig sind, klicken Sie 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 derzeit ausgewählte Frame-Bereich ist im Diagramm grün hervorgehoben. Sie können auch irgendwo auf dieses Diagramm klicken, um die Hauptprofileransicht auf diesen spezifischen Frame zu zentrieren, was hilfreich ist, um Spitzen in der detaillierten Ansicht zu finden.

Durchsuchen der detaillierten Ansicht

Im Desktop-Client können Sie nach Aufgaben nach Namen in der Detaillierten Ansicht suchen:

  1. Öffnen Sie den MicroProfiler mit CtrlF6 (⌘F6) und wechseln Sie in den Detaillierten Modus.

  2. Drücken Sie CtrlF (⌘F), um das Suchfeld zu öffnen.

  3. Geben Sie einen Teil eines Aufgaben- oder Labelnamens ein. Die Übereinstimmung ist nicht großgeschrieben und findet den Text überall im Namen. Übereinstimmende Labels behalten ihre Farbe und alle anderen Labels werden gedimmt. Frames, die eine Übereinstimmung enthalten, werden im Frame-Zeit-Diagramm hervorgehoben.

  4. Bewegen Sie sich zwischen den Übereinstimmungen:

    AktionTastenkombination
    Nächste ÜbereinstimmungF3 oder Enter
    Vorherige ÜbereinstimmungShiftF3 oder ShiftEnter

    Sie können auch auf die < und > Schaltflächen neben dem Suchfeld klicken. Die aktuelle Übereinstimmung ist umrandet und mit einem Dreieck darüber markiert, und ein Zähler wie 12 / 340 zeigt ihre Position unter allen Übereinstimmungen an. Wenn die Übereinstimmung außerhalb des Bildschirms ist, scrollt die Zeitleiste zu ihr. Wenn Sie die Zeitleiste verschoben haben, wird die Navigation von den Übereinstimmungen fortgesetzt, die derzeit sichtbar sind.

  5. Drücken Sie Esc, oder drücken Sie erneut CtrlF (⌘F), um die Suche zu schließen. Das Schließen der Suche schließt nicht den MicroProfiler.

©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.