Das Folgende ist eine Liste der häufigen Tags im MicroProfiler, gruppiert nach Kategorie.Das Verstehen dieser Tags kann dir helfen, problematischen Code in deiner Erlebniszu identifizieren.Die Tabellen enthalten ein Beschriftung, Beschreibungen und Leistungstipps zur Verbesserung der Leistung und zur Optimierung Ihrer Erlebnis.
Schlafen
Wenn Threads keine aktiven Aufgaben ausführen, treten sie in einen Schlafzustand ein, mit Tags, die anzeigen, wie lange der Thread geschlafen hat.Zu jeder Zeit ist es äußerst üblich, dass die meisten Arbeiter Threads in einem Schlafzustand sind.
AI/Navigierung
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Rasterisieren von Kachel | Aktualisiert Navigationsfliesen, die für eine Anfrageerforderlich sind, üblicherweise gefolgt von computePath, der verlangt, dass diese Fliesen aktuell sind.Folgt der NavigationJob/Vorverarbeitung auf dem Haupt Thread. | Reduzieren Sie die Anzahl der Wegfindungsfliesen-Ungültigkeiten, da dies dazu führt, dass diese Wege neu berechnet werden müssen. Dies wird verursacht durch die Bewegung nicht navigierbarer Teile. |
computePath | Berechnet Pfade, typischerweise nach rasterizeTile. | Reduziere die Anzahl und die Weltgrenzen von ComputePath Anrufen.Versuche, Wege für mehrere Agenten wiederzuverwenden, wenn sie von ungefähr ähnlichen Orten aus starten/enden sollen. |
Vorverarbeitung/getPrimitivesOverlapping | Sammelt die Weltgeometrie für jede Suchtilie und plant die Rasterisierungsaufgaben, die vom Such Threadausgeführt werden sollen. | Reduzieren Sie die Teileanzahl. |
Animierung
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Simulation/gameStepped | Verarbeitung von spezifischen Spielobjekten wie Humanoids , Animations und Herzschlag-Callbacks | |
Simulation/gameStepped/Steplägigkeit | Humanoid Zustandsänderungen und movement.Called stepHumanoid auf dem Server jetzt (parallele Version) | Deaktiviere oder reduziere Humanoid Zustände auf NPCs, wenn du sie hast.Ladder-Zustand ist am wichtigsten, um zu deaktivieren.Reduziere Rückrufe auf Zustandsänderungen wie Humanoid.Died oder Humanoid.Running |
Simulation/gameStepped/Schrittanimation | Animators wird sich in derzeit ablaufenden animationen vorstoßen. | Reduzieren Sie die Menge von Animators oder animierten Gelenken, um die Belastung dieser Schritt zu senken.Reduziere die Anzahl von Rückrufen auf Animationsereignisse wie AnimationTrack.KeyframeReached oder AnimationTrack.Ended |
Simulation/gameStepped/RunService.Stepped | Führt Funktionen aus, die mit dem Ereignis RunService.Stepped verbunden sind. | Reduzieren Sie die Menge oder die Belastung von Funktionen, die mit diesem Ereignis verbunden sind.Betrachte die Verzögerung oder den Ersatz teurer Berechnungen.Betrachten Sie die Verteilung der Berechnung über mehrere Frames. |
Audiodaten
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Klang | Audiodateienverarbeiten: Orte, Effekte, Lautstärken usw. | |
EntwicklerTag_Sounds | In-Memory-Geräusche: Im Allgemeinen kurze Geräusche, die klein genug sind, um in den Speicher zu gehen. Normalerweise kurze One-Shot-FX, keine längeren Musikformen. | Verwende weniger kurze Geräusche. |
EntwicklerTag_StreamingSounds | stream/StreamingSounds: Dies sind größere Sounds, die von der Festplatte gestreamt werden. Im Allgemeinen längere Musikdateien. | Verwende weniger lange Sounds. |
Netzwerke
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Netzwerk-Paketempfang | Empfängt Netzwerkpakete. Wenn viele Objekte oder Ereignisse repliziert werden, dauert dieser Schritt länger. | Repliziere weniger Objekte oder Ereignisse. |
Replikator/Prozesspakete | Verarbeitet Inhalte von Netzwerkpaketen, wie Bewegung, Ereignisanrufe und Änderungen von Eigenschaften. | Reduziere die Anzahl oder Größe der zu replizierenden Objekte oder tu dies in schrittweisen Schritten.Kann zunehmen, wenn die Kartengröße zunimmt, da größere Karten tendieren, mehr insgesamt Aktivität zu haben. |
Bandbreite zuweisen und Sender/Dispatch-Physik-Sender und TouchSender ausführen | Sendet Daten über Aktivitäten im Erlebnis. | Reduziere die Menge bewegender Objekte und/oder Berührungen. Siehe folgende Abschnitte. |
Bandbreite zuweisen und Sender/Dispatch Streamjob ausführen | Sendet entsprechende spezifische Regionen an bestimmte Clients im "Streaming"Funktion. | Reduziere den minimalen und Ziel-Streaming-Radius. |
Bandbreite zuweisen und Sender/Dispatch-Datensender ausführen | Sendet Eigenschaftsänderungen, Remote-Ereignisse, Humanoid-Zustandsänderungen, Animationen starten/stoppen. | Reduziere die Anzahl der wiederholten Änderungen am Modell |
Replikator-Send cluster | Sendet Geländedaten an Clients. | Reduziere die Menge oder Größe der Geländeveränderungen. |
Modellvollständigkeit Mega-Job | Nur Server: Vollständigkeit ist ein internes Konzept. Wenn Modelle vollständig gesendet werden, werden Modellvollständigkeitsereignisse Satz | Füge oder entferne weniger Instanzen hinzu. |
Deserialisierungspaket | Netzwerkpaketverarbeitung auf niedriger Ebene. Bereitet Replicator-Prozesspakete vor. | Sende weniger Updates. |
Renderung
Bezeichnung | Beschreibung | Leistungsnotizen |
---|---|---|
Vorbereiten | Informationen werden vom Haupt thread gesammelt und aktualisieren verschiedene Datenstrukturen, die für die Rendering verwendet werden.Dies blockiert die Simulations Threads, so sollte es so klein wie möglich sein. | Siehe Vorbereiten von Etiketten unten. |
Vorbereiten/Pass3dAdorn | Renderung verschiedener Objektverzierte, wie Textetiketten über Objekten. Dieser Schritt kann Raycasting beinhalten, um zu bestimmen, ob solche Objekte sichtbar sind. | Reduziere die Anzahl der sichtbaren dekorierten Objekte, wie BillboardGuis , Humanoid Namens-/Gesundheits-Etiketten usw. |
Vorbereiten/Pass2d | Bereitet 2D-UI-Renderung vor (sowohl Spieler als auch Roblox-UI). | Reduziere die Menge oder Komplexität von UI-Elementen. |
Vorbereiten/AktualisierenVorbereiten/aktualisierenUnzulässige Teile | Aktualisiert Teile, die Eigenschaften geändert oder hinzugefügt wurden. | Reduziere die Anzahl der Eigenschaftsänderungen auf der Welt. Wenn ein Skript eine große Anzahl von Objekt-Eigenschaften aktualisiert, zerbrich es über mehrere Frames. |
Vorbereiten/AktualisierenVorbereiten/aktualisierenUnzulässige Schnelle Cluster | Bereitet Geometrie vor, typischerweise "FastClusters", die verwendet werden, um Humanoids zu rendern. Untermarkierungen geben die Anzahl der Teile, Kanten und Größe der Kanten an. | Reduziere die Verwendung von "Humanoiden" unter Objekten, die nicht Humanoids sind.Dies sollte nicht verwendet werden, um Draw-Aufrufe zu verkürzen, da FastClusters viel mehr Speicher verbrauchen. |
Vorbereiten/AktualisierenVorbereiten/aktualisierenDynamische Teile | Aktualisiert Positionen für Humanoids , Fahrzeuge und andere bewegliche Instanzen für die Rendering. | Reduziere die Anzahl oder das Ausmaß der Bewegung von Humanoids oder sichtbaren Fahrzeugen.Das Kombinieren von Teilen desselben Materials und Farben in eine Union oder MeshPart kann hier helfen. |
Vorbereiten/AktualisierenVorbereiten/aktualisierenInstanzierte Cluster | Bereitet statische Geometrie vor, die instanzielle Rendering verwendet (Teile und Mesh-Teile). Labels "Cluster" und "Instanzen" zeigen die aktualisierte Anzahl an. | Verwende insgesamt weniger Netz und Materialvariation. Du kannst auch Cluster erstellen, indem du Objekte verwendest, die ähnliche Aussehen haben - Größe, Farbe, Material. |
Ausführen | Wenn aktuelle Renderbefehle erstellt und ausgegeben werden. | Siehe Perform-Etiketten unten. |
Ausführen/FillGuiVertices | UI-Renderung. Füllt Buffers mit UI-Kanten für Schmuck. Das "Gui count"-Label zeigt die Anzahl der Elemente in der Renderer-Liste an. | Wenn die Kosten hoch sind, reduzieren Sie die Menge der UI, die aktualisiert wird, indem Sie sie deaktivieren, wenn sie nicht verwendet wird, indem sie korrekt versteckt wird. |
Ausführen/Szene/queryFrustumOrdered | Wendet Frustum-Auslese an, damit Objekte, die nicht sichtbar sind, nicht gerendert werden. | Wenn es eine hohe Kosten gibt, bedeutet das, dass es viele Elemente gibt.Vielleicht verwende einige größere Meshes, in denen ein einzelnes Mesh mehr Details aufweist als viele kleine Einzelteile. |
Ausführen/Szene/ computeLightingPerform | Berechnung der Beleuchtung in der Nähe der Kamera. | Manipuliere die Anzahl der Lichtquellen oder bewege die Kamera weniger, um die Zeit zu reduzieren, die für die Berechnung der Beleuchtung benötigt wird. |
Ausführen/Szene/ computeLightingPerform/LightGridCPU | Aktualisiert die Voxel-Beleuchtung, die in Voxel- und ShadowMap-Modi und bei Qualitätsstufen unter 4 in Future-Modus verwendet wird. | Wenn das Aktualisieren der Chunk-Belegung zu lange dauert, erwägen Sie, eine geringere Auflösungsgeometrie zu verwenden, die Anzahl der Teile zu reduzieren oder Teile zu verankern.Wenn die anderen Untermarkierungen zu lange dauern, erwägen Sie, die Anzahl der Lichter zu reduzieren und nicht-schattenwerfende Geometrie für Objekte zu verwenden, die sich bewegen und die Besetzung ungültig machen. |
Ausführen/Szene/ computeLightingPerform/SchattenkarteSystem | Aktualisiert Schattenkarten. Wird nicht auf Qualitätsniveaus unter 4 durchgeführt oder wenn Lighting.Technology auf Voxel festgelegt ist. | Wenn die Beleuchtung auf Future eingestellt ist, senke sie auf ShadowMap oder reduziere die Anzahl der Lichter.Du kannst auch Light.Shadows und BasePart.CastShadows verwenden, um das Schattenwerfen auf weniger wichtige Instanzen zu deaktivieren.Siehe Leistung verbessern . |
Ausführen/Szene/Glanz, Farbenkorrektion, MSAA, SSAO und SSAOApply | Postbearbeitungsrendering. | Reduzieren Sie die Anzahl der Post-Processing-Effekte. Normalerweise ist dies nicht signifikant. |
Ausführen/Szene/UI | UI-Renderung. In Id_Screen gibt es ein Label mit der Anzahl der verwendeten Batches, Materialien und Dreieck. | Reduzieren Sie die Anzahl der sichtbaren UI-Elemente. Die Verwendung von CanvasGroups kann auf Kosten der erhöhten Speicherverwendung helfen. |
Führen/Szene/UpdateView/updateParticles, updateParticleBoundings | Aktualisieren Sie die Partikelposition und die Grenzen. | Reduzieren Sie die Anzahl von ParticleEmitters , Emissionsraten, Lebenszeiten usw. Beschränken Sie die Bewegung von Emittenten. |
Id_Opaque | Teile in der Szene mit einem Transparenzwert von 0. | |
Id_Transparent | Teile in der Szene mit einem Transparenzwert anderen als 0. | Reduziere die Verwendung partieller Transparenz (Werte außer 0 und 1). |
Id_Decal | Bilder in der Szene. | |
Ausführen/Präsentieren | Wartet, bis die GPU den vorherigen Frame fertiggerendert hat; sendet tatsächlich Renderbefehle an die GPU; kümmert sich um niedrigstufige Grafikressourcen. | Reduzieren Sie die Komplexität der Szene im Allgemeinen. Wenn dieser Schritt lange dauert, sind Sie möglicherweise durch die GPU begrenzt. |
Ausführen/Präsentieren/warten, bis abgeschlossen | Wartet, bis die GPU den vorherigen Frame fertig gerendert hat. | Wenn das im Allgemeinen viel passiert, ist die Menge der gerenderten Dinge zu hoch.FRM hilft bei der Ausgleichung, aber wenn es hoch bleibt, versuche, weniger Details zu verwenden. |
Skripte
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Render/PreRender/fireBindToRenderSteppedCallbacks | Ausführung von Funktionen, die an Render-Schritt gebunden sind, über RunService:BindToRenderStep() . | Stellen Sie sicher, dass Funktionen in Skripten, die RunService:BindToRenderStep() verwenden, so wenig Arbeit wie möglich erledigen. |
Render/PreRender/Laufservice.RenderStepped | Führt Funktionen aus, die mit dem Ereignis RunService.RenderStepped verbunden sind. | Ähnlich wie BindToRenderStep, stellen Sie sicher, dass Funktionen, die diese Ereignis verwenden, so wenig Arbeit wie möglich erledigen. |
Wartende Hybrid-Skript-Job | Führt Skripte fort, die auf die Verwendung von wait. Frames warten. | Dieser Schritt hat ein Ausführungsbudget für die Laufzeit, um wartende Skripte auszuführen, also wenn Sie zu viele wartende Skripte oder Skripte mit einer langen Laufzeit haben, bevor Sie aufgeben, kann dieser Schritt mehrere |
LuaGC | Luau-Abfallsammlungszyklus. Label gibt Schätzungen der Speicherzuweisung und wie viel deallocated wurde. | Pool lua-Tabellen und andere sammelbare Objekte oder versuchen, die Erstellung von temporären Tabellen oder Zeichen zu reduzieren |
Herzschlag/RunService.Heartbeat | Führt Funktionen aus, die mit dem Class.RunService.Heartbeat``event.Talk verbunden sind, an die Kontakte zur Simulation und Skripte. Die aktuelle Beschreibung ist generisch genug, um nicht falsch zu sein | Reduzieren Sie die Menge oder die Belastung von Funktionen, die mit RunService.Heartbeat verbunden sind. |
Vernetzung
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Verteiltes Physikbesitz | Bestimmt, ob der Server oder ein Client über bestimmte Instanzen wie Teile Autorität hat. | Verteiltes Physikbesitz. |
Simulation/Zusammenbau | Aktualisiert einen Baum von verbundenen Objekten (Zusammenstellungen), die vom Physik-Engine verwendet werden. | Reduziere die Menge an Gelenken, die erstellt oder zerstört werden. |
Simulation/PhysikSteppedTotal/PhysikStepped | Führt die Physiksimulation durch. | Reduziere die Menge und Komplexität physisch simulierter Körper. |
Simulation/PhysikSteppedTotal/PhysikStepped/Raumfilter/FilterSchritt | Aktualisiert Simulationsinseln, ordnet Teile nach Netzwerkbesitz, lokale Simulation an.Inseln sind nicht interagierende Gruppen von Teilen, die unabhängig voneinander simuliert werden können. | Vermeiden Sie es, das Netzwerkbesitz häufig zu setzen. Halten Sie Gruppen von Teilen weit genug voneinander entfernt, damit sie separat simuliert werden können. |
Simulation/PhysikSteppedTotal/PhysikStepped/WeltSchritt/SchrittKontakte | Aktualisiert Kontakte zwischen Objekten. | Reduziere die Anzahl der Körper, die gleichzeitig kollidieren, oder verwende einfachere Kollisionsboxen. Würfel sind besser als komplexe Meshes. |
Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld ODER stepWorldThrottled | Löst physikalische Gleichungen in Bezug auf Verbindungen, 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 "Echtzeit-Montagen" wie Humanoids simuliert werden. | Hängt davon ab, wo die Zeit basierend auf den folgenden drei Phasen geht: stepContacts: schmale Phasenkollisionsdetektionsgeometrie-Tests.Löser-Schritt: Zeit integrieren und Kollisionen und andere Einschränkungen lösen updateBroadphase: Positionen von Montagemaschinen im Kollisionserkennungssystem aktualisieren und möglicherweise kollidierende schmale Phasenpaare finden. |
NotifyMovingAssemblies | Hilft zu verfolgen, wie lange Primitive geschlafen haben. | |
Simulation/PhysikSteppedTotal/PhysikStepped/interpolateNetworkedAssemblies | Interpoliert Versammlungen, die nicht von diesem Netzwerk-Peer gesteuert werden. | Setze den Netzwerkbesitzer von Teilen auf diesen Peer, um das zu reduzieren; obwohl dies in der Regel dazu führt, dass mehr Physik-Arbeit anderswo erledigt wird. |
Simulation/handleFallenParts | Entfernt Teile, die unter Workspace/FallenPartsDestroyHeight gefallen sind. | Senke die Zerstörhöhe oder reduziere die Menge der Teile, die auf die Zerstörhöhe fallen. |
Herzschlag/heartbeatInternally/workspaceOnHeartbeat/updateVisuallySleeping | Zweiter Teil von NotifyMovingAssemblies. | |
Herzschlag/RunService.Heartbeat | Führt Funktionen aus, die mit dem Class.RunService.Heartbeat``event.Talk verbunden sind, an die Kontakte zur Simulation und Skripte. Die aktuelle Beschreibung ist generisch genug, um nicht falsch zu sein | Reduziere die Menge oder die Belastung von Funktionen, die mit RunService.Heartbeat verbunden sind. |
weltSchritt/SchrittKontakte | Hilft der Physiksimulation, mehrere Kontakte gleichzeitig zu simulieren. | Reduziere die Anzahl der kollidierenden Objekte. |
Löse批量 | Hilft der Physiksimulation, Batches von Objektbewegungen zu lösen. | |
Mechanismus-Interpolation | Hilft bei InterpolateNetworkAssemblies. |
UI
Bezeichnung | Beschreibung | Leistungstipps |
---|---|---|
Render/PreRender/UpdateInput | Aktualisiert und feuert alle mit dem Benutzeingabezusammenhängenden Ereignisse ab, wenn der Benutzer seit dem letzten Frame Eingaben durchgeführt hat. | Das ist der Fall, wenn sich Ereignisse im Zusammenhang mit der Eingabe des Benutzers initiieren.Es ist wichtig, zu versuchen, nicht zu viel Arbeit direkt zu erledigen, wenn du die Eingabe erhältst.Betrachte die Durchführung einer minimalen Menge an Verarbeitung für die Eingabe und größere Berechnungen sollten auf einen anderen Thread verschoben werden, der später passiert. |
Render/PreRender/TweenService | Aktualisiert Objekte, die mit TweenService und Aufrufen von Abschlussrückrufen aktualisiert werden, wie diejenigen, die für TweenSize oder TweenPosition bereitgestellt wurden. | Reduziere die Anzahl der Objekte, die mit TweenService getrimmt werden, und stelle sicher, dass Rückrufe so wenig Arbeit wie möglich erledigen. |
Render/PreRender/UpdateUILayouts | Aktualisiert die Position und Größe von UI-Elementen. | Reduziere die Menge der UI-Elemente, die dynamisch skaliert oder neu positioniert werden, wie die von UILayout verwaltet. |
Herzschlag/TweenService | Auf dem Server werden Objekte aktualisiert, die mit TweenService getweened wurden. Auf dem Client erfolgt dies stattdessen in einem Voreinstellungsschritt. | Reduziere die Anzahl der von TweenService durchgespielten Objekte. |