Die folgende Liste enthält gängige Tags im MicroProfiler, gruppiert nach Kategorie. Tags werden auch austauschbar als Aufgaben, Timer, Bereiche, Prozesse und Etiketten bezeichnet. Egal wie sie genannt werden, sie stellen eine Einheit der Arbeit dar.
Das Verständnis dieser Tags kann Ihnen helfen, problematischen Code in Ihrem Spiel zu identifizieren. Die Tabellen enthalten Tag-Etiketten, Beschreibungen und Ratschläge zur Verbesserung der Leistung und Optimierung Ihres Spiels.
Schlaf
Wenn Threads keine aktiven Aufgaben ausführen, befinden sie sich in einem Schlafzustand, mit Tags, die anzeigen, wie lange der Thread geschlafen hat. Zu jedem Zeitpunkt ist es extrem häufig, dass sich die meisten Worker-Threads in einem Schlafzustand befinden.
Navigation
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| rasterizeTile | Aktualisiert Navigationskacheln, die für eine Pfadfindungsanfrage benötigt werden, normalerweise gefolgt von computePath, das erfordert, dass diese Kacheln aktuell sind. Folgt NavigationJob/preprocess im Hauptthread. | Reduzieren Sie die Anzahl der Ungültigkeiten von Pfadfindungskacheln, da dies dazu führt, dass diese Pfade neu berechnet werden müssen. Dies wird durch Bewegung von nicht navigierbaren Teilen verursacht. |
| computePath | Berechnet Pfade, typischerweise nach rasterizeTile. | Reduzieren Sie die Anzahl und die räumlichen Ausmaße von Path:ComputeAsync()-Aufrufen. Versuchen Sie, Pfade für mehrere Agenten wiederzuverwenden, wenn sie voraussichtlich von ungefähr ähnlichen Standorten starten/endeten. |
| preprocess/getPrimitivesOverlapping | Sammelt die Weltgeometrie für jede Pfadfindungskachel und plant die Rasterisierungsaufgaben, die vom Pfadfindungs-Thread ausgeführt werden sollen. | Reduzieren Sie die Anzahl der Teile. |
Animation und Humanoiden
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Simulation/gameStepped | Verarbeitung von spiel spezifischen Objekten wie Humanoids, Animations und Herzschlag-Callbacks. | Siehe gameStepped-Etiketten unten. |
| Simulation/gameStepped/stepHumanoid | Änderungen des Humanoid-Zustands und Bewegung. | Reduzieren Sie die Anzahl von Humanoids oder deaktivieren Sie Humanoid-Zustände bei NPCs, die diese nicht benötigen, wie Climbing oder Swimming. Reduzieren Sie Callbacks zu Humanoid.StateChanged oder Zustandsänderungen wie Running oder Died. |
| Simulation/gameStepped/stepAnimation | Animators werden in den aktuell gespielten Animationen fortschreiten. | Reduzieren Sie die Anzahl von Animators oder animierten Gelenken, um die Arbeitslast dieses Schrittes zu verringern. Reduzieren Sie die Anzahl der Callbacks zu Animationsereignissen wie AnimationTrack.KeyframeReached oder AnimationTrack.Ended. |
| Simulation/gameStepped/RunService.Stepped | Führt Funktionen aus, die mit dem RunService.Stepped-Ereignis verbunden sind. | Reduzieren Sie die Anzahl oder die Arbeitslast der Funktionen, die mit diesem Ereignis verbunden sind. Ziehen Sie in Betracht, kostspielige Berechnungen zu verzögern oder zu ersetzen oder die Berechnung über mehrere Frames zu verteilen. |
Audio
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Sound | Verarbeitet akustische Simulation und aktualisiert Sounds in der aktiven Wiedergabe. | Siehe Sound-Etiketten unten. |
| Sound/stepInstances | Aktualisiert die Lautstärke aktiver Sounds im Arbeitsbereich. | Reduzieren Sie die Anzahl der Sounds in aktiver Wiedergabe. |
Netzwerk
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Net PacketReceive | Erhält Netzwerkpakete. Wenn viele Objekte oder Ereignisse repliziert werden, dauert dieser Schritt länger. | Replizieren Sie weniger Objekte oder Ereignisse. |
| Replicator/ProcessPackets | Verarbeitet Inhalte von Netzwerkpaketen, wie Bewegung, Ereignisauslösungen und Eigenschaftenänderungen. | Reduzieren Sie die Anzahl oder Größe der replizierten Objekte oder führen Sie dies in inkrementellen Schritten durch. Kann zunehmen, wenn die Kartengröße zunimmt, da größere Karten dazu neigen, mehr Aktivität insgesamt zu haben. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Sendet Daten über Aktivitäten im Spiel. | Reduzieren Sie die Anzahl von bewegenden Objekten und/oder Berührungen. Siehe die folgenden Abschnitte. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Sendet spezifische Regionen an bestimmte Clients in der Streaming-Funktion. | Reduzieren Sie die minimalen und zielt Streaming-Radien. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Sendet Eigenschaftenänderungen, Remote-Ereignisauslösungen, Humanoid-Zustandsänderungen, Animationszustandsänderungen und die Replikation neuer Instanzen. | Reduzieren Sie die Anzahl der replizierten Änderungen am Datenmodell. |
| Replicator SendCluster | Sendet Terrain Daten an Clients. | Reduzieren Sie die Anzahl oder Größe der Geländeänderungen. |
| ModelCompleteness Mega Job | Nur Server: Vollständigkeit ist ein internes Konzept. Wenn Modelle vollständig gesendet wurden, werden Ereignisse zur Modellvollständigkeit gesendet. | Fügen Sie weniger Instanzen hinzu oder entfernen Sie diese. |
| deserializePacket | Niedrigstufige Netzwerkpaketverarbeitung. Bereitet auf Replicator/ProcessPackets vor. | Sendet weniger oder kleinere Updates. |
Rendering
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Prepare | Informationen werden vom Hauptthread gesammelt und aktualisieren verschiedene Datenstrukturen, die für das Rendering verwendet werden. | Siehe Prepare-Etiketten unten. |
| Prepare/Pass3dAdorn | Handhabt das Rendering verschiedener Objektverzierungen, wie Textetiketten über Objekten. Für Humanoid-Etiketten mit Okklusion umfasst dieser Schritt Raycasting, um zu bestimmen, ob solche Objekte sichtbar sind. Dies umfasst nicht-transparente Teile, um Debug-Visualisierungen zu ermöglichen. | Reduzieren Sie die Anzahl sichtbarer verzierter Objekte, wie BillboardGuis, Humanoid-Name-/Gesundheitsetiketten usw. Reduzieren Sie die Anzahl sichtbarer Teile. |
| Prepare/Pass2d | Bereitet das 2D-UI-Rendering vor (sowohl Spieler- als auch Roblox-UI). | Reduzieren Sie die Menge oder Komplexität der UI-Elemente. |
| Prepare/UpdatePrepare/updateInvalidParts | Aktualisiert Teile, deren Eigenschaft geändert oder hinzugefügt wurde. | Reduzieren Sie die Anzahl der Eigenschaftenänderungen in der Welt. Wenn ein Skript eine große Menge an Objekt-Eigenschaftsänderungen aktualisiert, teilen Sie dies auf mehrere Frames auf. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Bereitet "FastCluster"-Geometrien vor, die verwendet werden, um Humanoids und skinned MeshParts zu rendern. Labels geben die Anzahl der Teile, Eckpunkte und die Größe der Eckpunkte an. | Reduzieren Sie die visuellen Änderungen an Modellen mit Humanoids oder skinned MeshParts. |
| Prepare/UpdatePrepare/updateDynamicParts | Bereitet Beams, ParticleEmitters und Humanoids für das Rendering vor. | Reduzieren Sie die Anzahl sichtbarer Beams, ParticleEmitters und Humanoids. |
| Prepare/UpdatePrepare/updateInstancedClusters | Aktualisiert Geometrien, die instanziertes Rendering verwenden, wie Teile. Label Clusters und Instances geben die Anzahl der Aktualisierungen an. | Reduzieren Sie die Arbeit, die die Grenzen der Teile implizit aktualisiert, wie BasePart.CFrame, BasePart.Size oder Motor6D.Transform. Kreative Eigenschaftenupdates wie Bone.Transform können helfen. |
| Perform | Wenn tatsächliche Renderbefehle erstellt und ausgegeben werden. | Siehe Perform-Etiketten unten. |
| Perform/fillGuiVertices | Füllt Puffer mit UI-Eckpunkten zur Vorbereitung auf das Rendering. gui count-Label gibt die Anzahl der in diesem Frame sichtbaren LayerCollectors an. | Wenn die Kosten hoch sind, reduzieren Sie die Anzahl, Dichte und den Platz, den UI-Elemente benötigen. Wenn zu viele Process GuiEffect-Etiketten vorhanden sind, ziehen Sie in Betracht, die Verwendung von UIGradient und UICorner bei Textelementen zu reduzieren. |
| Perform/Scene/queryFrustumOrdered | Wendet die Frustum-Culling an, sodass nicht sichtbare Objekte nicht gerendert werden. | Wenn die Kosten hoch sind, bedeutet das, dass es viele Elemente gibt. Vielleicht sollten größere Meshes verwendet werden, wo ein einzelnes Mesh mehr Details hat, anstelle vieler kleiner Einzelstücke. |
| Perform/Scene/computeLightingPerform | Berechnung der Beleuchtung in der Nähe der Kamera. | Manipulieren Sie die Anzahl der Lichtquellen oder bewegen Sie die Kamera weniger, um die Zeit für die Neuberechnung der Beleuchtung zu reduzieren. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Aktualisiert die Voxel-Beleuchtung, die auf niedrigeren Qualitätsstufen verwendet wird. | Wenn das Aktualisieren der Chunk-Belegung zu lange dauert, ziehen Sie in Betracht, Geometrien mit niedrigerer Auflösung zu verwenden, die Anzahl der Teile zu reduzieren oder Teile zu verankern. Wenn die anderen Etiketten zu lange dauern, ziehen Sie in Betracht, die Anzahl der Lichter zu reduzieren und nicht-schattenwerfende Geometrien für Objekte zu verwenden, die sich bewegen und die Belegung ungültig machen. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Aktualisiert Schattenkarten. Nicht durchgeführt bei Qualitätsstufen unter 4. | Reduzieren Sie die Anzahl der Lichter. Sie können auch Light.Shadows und BasePart.CastShadow verwenden, um das Schattenwerfen bei weniger wichtigen Instanzen zu deaktivieren. Siehe Leistung verbessern. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO und SSAOApply | Post-Processing-Rendering. | Reduzieren Sie die Anzahl der Post-Processing-Effekte. Normalerweise ist dies nicht signifikant. |
| Perform/Scene/UI | UI-Rendering. In Id_Screen gibt es ein Etikett mit der Anzahl der verwendeten Batches, Materialien und Dreiecke. | Reduzieren Sie die Anzahl sichtbarer UI-Elemente. Die Verwendung von CanvasGroups kann helfen, auch wenn dies zu einem erhöhten Speicherverbrauch führt. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Aktualisiert die Partikelposition und -grenzen. | Reduzieren Sie die Anzahl der ParticleEmitters, die Emissionsraten, Lebensdauern usw. Begrenzen Sie die Bewegung von Emittenten. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Teile in der Szene mit einer Gesamttransparenz von 0.01 oder niedriger. | Reduzieren Sie die Verwendung und Dichte von Teilen. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Teile in der Szene mit einer Gesamttransparenz zwischen 0.01 und 1. | Reduzieren Sie die Verwendung von Teiltransparenz. |
| Scene/Id_Decals, RenderView/Id_Decals | Decals in der Szene. | Reduzieren Sie die Verwendung von Decals auf komplexen Meshes. |
| Scene/Shadows | Schattenneuberechnung in der Szene, normalerweise in dynamischen Szenen und typischem Gameplay durchgeführt. Teile unabhängig von der Transparenz werfen Schatten unter der Annahme, dass sie Decals enthalten. Nicht durchgeführt bei Qualitätsstufen unter 4. | Wenn dieser Schritt zu lange dauert, ziehen Sie in Betracht, BasePart.CastShadow für komplexe Meshes, Teile mit hoher Teiltransparenz und weniger wichtige Instanzen zu deaktivieren. Vollständig transparente Teile, die keine Decals haben oder keine Dekalschatten benötigen, sollten BasePart.CastShadow deaktiviert haben. Siehe Leistung verbessern. |
| Perform/Present | Leitet die Befehle an den GPU-Thread weiter, um die Rendering-Befehle auszuführen. | Reduzieren Sie die Komplexität der Szene im Allgemeinen. Wenn dieser Schritt lange dauert, sind Sie möglicherweise durch die GPU limitiert. |
| Perform/Present/waitUntilCompleted | Wartet darauf, dass die GPU das Rendering des vorherigen Frames abgeschlossen hat. | Wenn dies häufig passiert, ist die Anzahl der gerenderten Dinge zu hoch. Der Frame Rate Manager hilft, dies ins Gleichgewicht zu bringen, aber wenn es hoch bleibt, versuchen Sie, die Leistungsratschläge aus den einzelnen Scene-Tags zu befolgen. |
| LoadImage | Verarbeitet Bilder in ein Format, das die Engine verwenden kann. | Reduzieren Sie die Verwendung großer Bilder. |
Skripte
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Führt Funktionen aus, die über RunService:BindToRenderStep() an den Render-Schritt gebunden sind. | Stellen Sie sicher, dass die Funktionen, die mit diesem Ereignis verbunden sind, so wenig Arbeit wie möglich leisten. |
| Render/PreRender/RunService.RenderStepped | Führt Funktionen aus, die mit dem RunService.RenderStepped-Ereignis verbunden sind. | Stellen Sie sicher, dass die Funktionen, die mit diesem Ereignis verbunden sind, so wenig Arbeit wie möglich leisten. |
| WaitingHybridScriptJob | Setzt Skripte fort, die auf Instance:WaitForChild() oder Globals.Roblox.wait() warten. Normalerweise 30 Mal pro Sekunde ausgeführt. Dieser Schritt hat ein Zeitbudget für die Ausführung wartender Skripte. | Wenn Sie zu viele wartende Skripte oder Skripte mit einer langen Laufzeit vor dem Yield haben, wird dieser Schritt gedrosselt und wartet länger, bevor er wieder ausgeführt werden kann. Reduzieren Sie die Anzahl der gebundenen Funktionen oder langen Berechnungen in diesem Schritt. |
| GC | Luau's Garbage-Collection-Zyklus. | Pools von Tabellen und anderen sammelbaren Objekten oder versuchen Sie, die Erstellung temporärer Tabellen zu reduzieren. |
| Heartbeat/RunService.Heartbeat | Führt Funktionen aus, die mit dem RunService.Heartbeat-Ereignis verbunden sind. | Reduzieren Sie die Anzahl oder die Arbeitslast der Funktionen, die mit diesem Ereignis verbunden sind. Ziehen Sie in Betracht, kostspielige Berechnungen zu verzögern oder zu ersetzen oder die Berechnung über mehrere Frames zu verteilen. |
Simulation
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Distributed Physics Ownership | Bestimmt, ob der Server oder ein Client die Autorität über bestimmte Instanzen wie Teile hat. | Reduzieren Sie die Anzahl der Teile, die häufig die Netzwerkzuweisung wechseln, insbesondere solche mit häufiger Interaktion. |
| Simulation/assemble | Aktualisiert einen Baum verbundener Objekte (Baugruppen), die von der Physik-Engine verwendet werden. | Reduzieren Sie die Anzahl der Gelenke, die erstellt oder zerstört werden. |
| Simulation/physicsSteppedTotal/physicsStepped | Führt die Physiksimulation aus. | Reduzieren Sie die Anzahl und Komplexität der physisch simulierten Körper. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Aktualisiert Simulationsinseln und arrangiert Teile entsprechend der Netzwerkzuweisung, lokaler Simulation. Inseln sind nicht-interagierende Gruppen von Teilen, die unabhängig simuliert werden können. | Vermeiden Sie es, die Netzwerkzuweisung häufig zu ändern. Halten Sie Gruppen von Teilen weit genug voneinander entfernt, damit sie separat simuliert werden können. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Aktualisiert Kontakte zwischen Objekten. | Reduzieren Sie die Anzahl der Körper, die gleichzeitig kollidieren, oder verwenden Sie einfachere Kollisionsboxen. Würfel sind besser als komplexe Meshes. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld ODER stepWorldThrottled | Löst physikalische Gleichungen im Zusammenhang mit Verbindern, Auftrieb und Humanoids. Wenn die Engine überlastet ist und nicht in der Lage ist, alles in Echtzeit zu simulieren, können einige Schritte gedrosselt werden (stepWorldThrottled) und nur "Echtzeitbaugruppen" wie Humanoids werden simuliert. | Hängt davon ab, wo die Zeit basierend auf den folgenden drei Phasen vergeht: stepContacts: enge Phasenkollisionserkennung Geometrietests. Solver-Schritt: Zeit integrieren und Kollisionen und andere Einschränkungen lösen. updateBroadphase: Positionen der Baugruppen im Kollisionsdetektionsystem aktualisieren und möglicherweise kollidierende enge Phasenpaare finden. |
| notifyMovingAssemblies | Hilft zu verfolgen, wie lange Primitive geschlafen haben. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpoliert Baugruppen, die nicht vom aktuellen Spieler kontrolliert werden. | Setzen Sie den Netzwerkbesitzer von Teilen auf den aktuellen Spieler, um dies zu reduzieren; obwohl dies normalerweise mehr physikalische Arbeit an anderer Stelle zur Folge hat. |
| Simulation/handleFallenParts | Entfernt Teile, die unter Workspace.FallenPartsDestroyHeight gefallen sind. | Senken Sie die Zerstörungshöhe oder reduzieren Sie die Anzahl der Teile, die zur Zerstörungshöhe fallen. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Zweite Teil von notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Führt Funktionen aus, die mit dem RunService.Heartbeat-Ereignis verbunden sind, um Simulation und Skripte zu kontaktieren. Die aktuelle Beschreibung ist allgemein genug, um nicht falsch zu sein. | Reduzieren Sie die Anzahl oder die Arbeitslast der Funktionen, die mit RunService.Heartbeat verbunden sind. |
| worldStep/stepContacts | Hilft der Physiksimulation, viele Kontakte auf einmal zu schritt zu halten. | Reduzieren Sie die Anzahl der kollidierenden Objekte. |
| SolveBatch | Hilft der Physiksimulation, Batches von Objekten zu lösen. |
UI
| Etikett | Beschreibung | Leistungsratschlag |
|---|---|---|
| Render/PreRender/UpdateInput | Aktualisiert und löst alle benutzereingabeverwandten Ereignisse aus, wenn der Benutzer seit dem letzten Frame Eingaben vorgenommen hat. | Versuchen Sie nicht, zu viel Arbeit direkt zu leisten, während Sie die Eingabe erhalten. Ziehen Sie in Betracht, eine minimale Menge an Verarbeitung für die Eingabe und größere Berechnungen auf einen anderen Thread zu verschieben, der später stattfindet. |
| Render/PreRender/TweenService | Aktualisiert Objekte, die mit TweenService getweent werden, und ruft Abschluss-Callbacks auf, wie die, die bei GuiObject:TweenSize() oder GuiObject:TweenPosition() verwendet werden. | Reduzieren Sie die Anzahl der Objekte, die mit TweenService getweent werden, und stellen Sie sicher, dass Callbacks so wenig Arbeit wie möglich leisten. |
| Heartbeat/TweenService | Im Server läuft TweenService in RunService.Heartbeat, statt in RunService.PreRender. | Reduzieren Sie die Anzahl der Objekte, die mit TweenService getweent werden, und stellen Sie sicher, dass Callbacks so wenig Arbeit wie möglich leisten. |
| Render/PreRender/UpdateUILayouts | Aktualisiert Position und Größe für UI-Elemente auf allen aktivierten LayerCollectors. | Siehe UpdateUILayouts-Etiketten unten. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Sortiert die Z-Reihenfolge von UI-Elementen (interner Begriff, nicht zu verwechseln mit GuiObject.ZIndex), um Risse in UI-Elementen zu vermeiden. | Reduzieren Sie die Anzahl der UI-Elemente mit dem gleichen GuiObject.ZIndex. |
| Render/PreRender/UpdateUILayouts/Layout | Aktualisiert Position und Größe für UI-Elemente in einem einzelnen LayerCollector. Kann ein Etikett mit Informationen über die relevanten UI enthalten, zusammen mit der Anzahl der Neugestaltungen, Aktualisierungen und Größenänderungen. | Reduzieren Sie die Anzahl der UI-Elemente, die neu resized oder repositioniert werden, wie z.B. solche, die von UILayout verwaltet werden und solche, die mit TweenService, GuiObject:TweenSize() oder GuiObject:TweenPosition() getweent werden. Ziehen Sie in Betracht, feste Größen für BillboardGuis zu verwenden. |