Das Folgende ist eine Liste der häufigsten Tags im MicroProfiler, in der Kategorie. Verstehen Sie diese Tags kann Ihnen helfen, problematischen Code in Ihrem Erlebnis zu identifizieren. Die Tabellen enthalten Beschriftung, Beschreibungen und Leistungstipps für das Verbessern der Leistung und Optimierung Ihres Erlebnisses.
KI/Navigierung
Etikett | Beschreibung | Leistungstipps |
---|---|---|
raster化 | Aktualisiert Navigationskacheln für eine Anfrage, normalerweise gefolgt von computePath , die diese Kacheln aktualisieren müssen. Folgt NavigationJob/pre处理 auf dem Thread | Reduzieren Sie die Anzahl der Wegfindungsfliesen-Ungültigkeiten, da dies dazu führt, dass diese Wege müssen neu berechnet werden. Dies wird durch nicht-navigable Teile bewegt verursacht. |
计算路径 | Berechnet Wege, normalerweise nach rasterizeTile . | Reduzieren Sie die Anzahl und die Weltumgebung von ComputePath Aufrufen. Versuchen Sie, Wege für mehrere Agenten wiederzuverwenden, wenn sie von etwa ähnlichen Standorten beginnen/enden sollen. |
pre处理/getPrimitivesOverlapping | Sammelt die Weltgeometrie für jede Pfadfindungsfliese und planiert die Rasterisierungsaufgaben, die von der PfadfindungsThread ausgeführt werden sollen. | Reduzieren Sie die Anzahl der Teile. |
Animation
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Simulation/GameStepped | Verarbeitung von Spielobjekten wie Humanoids , Animations und Herzschlag-Callbacks | |
Simulation/GameStepped/StepLegacy | Humanoid Zustandsänderungen und movement.Called SchrittHumanoid auf dem Server jetzt (parallele Version) | Deaktivieren oder reduzieren Sie Humanoid Zustände auf NPCs, wenn Sie sie haben. Der Ladder-Zustand ist der wichtigste, um sie zu deaktivieren. Reduzieren Sie Rückrufe auf Zustandsänderungen wie Humanoid.Died oder Humanoid.Running. |
Simulation/GameStep/StepAnimation | Animators wird in der Aktuell spielen Animationen vorankommen. | Reduzieren Sie die Menge von Animators oder animierten Joints, um die Workload dieses Schritts zu reduzieren. Reduzieren Sie die Anzahl von Rückrufen auf Animationsereignisse wie AnimationTrack.KeyframeReached oder AnimationTrack.Ended. |
Simulation/gameStepped/RunService.Stepped | Executes Funktionen, die mit dem Ereignis RunService.Stepped verbunden sind. | Reduzieren Sie die Menge oder die Arbeit der Funktionen, die an dieses Ereignis verbunden sind. Betrachten Sie die Verzögerung oder den Ersatz teurer Berechnungen. Betrachten Sie die Verbreitung von Berechnungen auf mehrere Frames. |
Audio
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Klang | Audiodateienverarbeiten: Standorte, Effekte, Lautstärken usw. | |
DeveloperTag_Sounds | In-Memory-Sounds: Allgemein kürze Sounds, die klein genug sind, um in den Speicher zu gelangen. Normalerweise kurze Ein-Schuss-FX, keine lange Form-Musik. | Verwende weniger kürze Sätze. |
DeveloperTag_StreamingSounds | stream/StreamingSounds: Dies sind größere Sounds, die von derDisk streamed werden. Generell längere Form-Musikdateien. | Verwende weniger lange Sätze. |
Netzwerke
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Netzwerk-Paket empfangen | Erhält Netzwerk-Pakete. Wenn viele Objekte oder Ereignisse repliziert werden, dauert dies länger. | Weniger Objekte oder Ereignisse replizieren. |
Replikator/Prozesspakete | Verarbeitet Inhalte von Netzwerk-Paketen, wie Bewegungen, Ereignis-Invokationen und Eigenschaftsänderungen. | Reduzieren Sie die Anzahl oder Größe der zu replizierenden Objekte oder tun Sie dies inkrementell. Die Größe von größeren Karten neigt dazu, mehr Gesamtwohlmengen zu haben, da größere Karten eine größere Aktivitäthaben. |
Verteilen Sie Bandbreite und Laufen senden/Dispatch Physics senden und TouchSenders | Sendet Daten über Aktivität im Erlebnis. | Reduzieren Sie die Anzahl der beweglichen Objekte und/oder Berührungen. Siehe folgende Abschnitte. |
Bandbreite zuweisen und Sender/Dispatch StreamJob ausführen | Sendet entsprechende spezifische Regionen an bestimmte Clients in der "Streaming"-Funktion. | Reduzieren Sie das minimum und das Ziel-Streaming-Radii. |
Bandbreite zuweisen und Sender/Dispatch-Daten-Sender ausführen | Sendet Eigenschaftsänderungen, Remote-Ereignisse, Zustandsänderungen, Animationen und Stopps. | Reduzieren Sie die Anzahl der replizierten Änderungen zum Modell |
Replikator-Send cluster | Sendet Terrain-Daten an Clients. | Reduzieren Sie die Menge oder Größe von Terrain-Änderungen. |
ModelCompleteness Mega-Job | Nur auf dem Server: Die Vollständigkeit ist ein internes Konzept. Wenn Modelle vollständig gesendet werden, werden Modellvollständigkeitsereignisse Satz | Füge oder entferne weniger Instanzen hinzu oder entferne sie. |
Deserialisieren | Netzwerk-Netzwerk-Datenverarbeitung. Vorbereitet sich für Replicator ProcessPackets. | Sendet weniger Updates. |
Rendern
Etikett | Beschreibung | Leistungsnotizen |
---|---|---|
Vorbereiten | Informationen werden vom HauptThread gesammelt und aktualisieren verschiedene Datenstrukturen, die für die Rendering verwendet werden. Dies blockiert die Simulations Threads, so dass sie so klein wie möglich sein sollten. | Siehe Bereitbarkeits-Etiketten unten. |
Vorbereiten/Pass3dAdorn | Render verschiedene Objekt-Dekorationen, wie z. B. Text-Etiketten über Objekten. Dieser Schritt kann Raycasting enthalten, um zu bestimmen, ob solche Objekte sichtbar sind. | Reduzieren Sie die Anzahl der sichtbaren dekorierten Objekte, wie z. B. BillboardGuis, Humanoid Namens-/Gesundheitsschilder usw. |
Vorbereiten/Pass2d | Bereitet 2D-UI-Renderung ( sowohl Spieler als auch Roblox-UI) vor. | Reduzieren Sie die Menge oder Komplexität von Benutzeroberflächenelementen. |
Vorbereiten/UpdateVorbereiten/UpdateInvalidParts | Aktualisiert Teile, die Eigenschaften ändern oder hinzufügen. | Reduzieren Sie die Menge der Eigenschaftsänderungen auf der Welt. Wenn ein Skript ein großes Set von Objekt属性 aktualisiert, unterbrechen Sie es über Frames. |
Vorbereiten/Update/Schlie?ungsknoten ung?ltig | Bereitet Geometrie vor, typischerweise "FastClusters", die verwendet wird, um Humanoids zu rendern. Unter-Marker bestimmen die Anzahl der Teile, die Vorder- und Größe der Vorder. | Reduzieren Sie die Verwendung von 'Humanoiden' unter Objekten, die nicht Humanoids sind. Dies sollte nicht verwendet werden, um die Zeichenrufe zu verkürzen, da FastClusters viel mehr Speicher verbraucht. |
Vorbereiten/UpdateVorbereiten/updateDynamicParts | Aktualisiert Positionen für Humanoids , Fahrzeuge und andere bewegliche Instanzen für Rendern. | Reduzieren Sie die Anzahl oder Komplexität der beweglichen Humanoids oder Fahrzeuge sichtbar. Wenn Sie Teile desselben Materials und Farbs in eine Union oder MeshPart kombinieren, kann dies helfen. |
Vorbereiten/UpdateVorbereiten/updateInstancedClusters | Bereitet statische Geometrie vor, die auf instanziellen Rendern basiert (Teile und Mesh-Teile). Labels "Cluster" und "Instanzen" zeigen die aktualisierte Anzahl an. | Verwenden Sie weniger Gesamtmeshes und Materialvariation. Sie können auch Cluster erstellen, indem Sie Objekte verwenden, die ähnlichen Aussehen haben - Größe, Farbe, Material. |
Ausführen | Wenn aktuelle Render-Befehle erstellt und ausgeführt werden. | Siehe Perform-Etiketten unten. |
Perform/Fill-GUI-Vertices | UI-Renderung. Füllt Buffers mit UI-Flaggen für Schmuck. "Gui Count"-Etikett 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 sicherstellen, dass sie richtig versteckt ist. |
Ausführen/Szene/ queryFrustumOrdered | Gilt für das automatische Entfernen von frustum , damit Objekte, die nicht sichtbar sind, nicht gerendert werden. | Wenn es eine hohe Kosten gibt, die bedeutet, dass es viele Elemente gibt. Vielleicht verwenden Sie einige größeren Meshes, in denen ein einzelnes Mesh mehr Details hat als viele kleine einzelne Teile. |
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 zu reduzieren, die für die Neuberechnung der Beleuchtung erforderlich ist. |
Perform/Scene/computerLightingPerform/LightGridCPU | Aktualisiert die Voxellicht, die in Voxel und ShadowMap-Modi und bei Qualitätsniveaus unter 4 in Future verwendet wird. | Wenn die Aktualisierung der Chunk-Besetzung zu lange dauert, sollten Sie niedrigere Auflösungsgometrie verwenden, die die Anzahl der Teile reduzieren oder Teile ankernden. Wenn die anderen Sub-Marker zu lange dauern, sollten Sie die Anzahl der Lichter reduzieren und nicht-Shadow-Casting-Geometrie für Objekte verwenden, die sich bewegen und den Besitz verifizieren. |
Perform/Scene/computerLightingPerform/ShadowMapSystem | Aktualisiert Schattenkarten. Nicht mit Qualitätsniveaus unter 4 ausgeführt, wenn Lighting.Technology auf Voxel festgelegt ist. | Wenn die Beleuchtung auf Future eingestellt ist, senken Sie sie auf ShadowMap oder reduzieren Sie die Anzahl der Lichter. Sie können auch Light.Shadows und 1> Class.BasePart.CastShadows1> verwenden, um die Schattenwürzung auf weniger wichtigen Instanzen |
Perform/Scene/Glow, ColorCorrection, MSAA, SSAO und SSAOApply | Post-Processing-Renderung. | Reduzieren Sie die Anzahl der Post-Processing-Effekte. Dies ist normalerweise nicht signifikant. |
Ausführen/Szene/UI | UI-Renderung. In Id_Screen gibt es ein Etikett mit der Anzahl der verwendeten Lotterien, Materialien und Dreieck. | Reduzieren Sie die Anzahl der sichtbaren Benutzeroberflächenelemente. Mit der Verwendung von CanvasGroups kann es jedoch zu einer Erhöhung der Speicherbelastung führen. |
Perform/Scene/UpdateView/updateParticles, updateParticleBindings | Aktualisieren Sie die Partikelposition und Grenzen. | Reduzieren Sie die Anzahl von ParticleEmitters , Emissionsraten, Lebenszeiten usw. Limitieren Sie die Bewegung von Emittern. |
Id_Opake | Objekte in der Szene mit einem Transparenzwert von 0. | |
Id_Transparent | Objekte in der Szene mit einem Transparenzwert anderen als 0. | Reduzieren Sie die Verwendung von Teiltransparenz (werte andere als 0 und 1). |
Decal ID | Decals in der Szene. | |
Ausführen/Präsentieren | Wartet, bis dieGPU die vorherige Frames fertiggestellt hat; aktuell gibt es Render命令 zuGPU; behandelt niedrige Grafikressourcen. | Reduzieren Sie die Komplexität der Szene im Allgemeinen. Wenn dieser Schritt eine lange Zeit dauert, können Sie begrenzt sein durch dieGPU. |
Ausführen/Präsentieren/wartenBis abgeschlossen | Wartet, bis dieGPU die vorherige Frames fertiggestellt hat. | Wenn dies allgemein viel passiert, ist die Menge der rendelten Dinge zu hoch. FRM hilft mit dem Ausgleich, aber wenn es hoch bleibt, versuchen Sie, weniger Detaillierungsgrad zu verwenden. |
Skripte
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Render/PreRender/fireBindToRenderSteppedCallbacks | Funktionen, die auf der Grundlage von RunService:BindToRenderStep() gerendert werden. | Stellen Sie sicher, dass die Funktionen in Skripten mit RunService:BindToRenderStep() so wenig Arbeit wie möglich erledigen. |
Render/PreRender/RunService.RenderStepped | Executes Funktionen, die mit dem Ereignis RunService.RenderStepped verbunden sind. | Ähnlich wie BindToRenderStep , stellen Sie sicher, dass Funktionen, die dieses Ereignis verwenden, so wenig Arbeit wie möglich erledigen. |
HybridScriptJob warten | Führt Skripte aus, die auf wait. frames warten. | Dieser Schritt hat ein Ausführungszeit-Budget, um Warte-Skripte auszuführen, sodass wenn Sie zu viele Warte-Skripte oder Skripte mit einer langen Laufzeit vor der Veröffentlichung haben, kann dieser Schritt mehrere |
LuaGC | Lua-Müllsammlung-Zyklus. Label gibt Memory-Schätzungen für die Gesamtverteilung und die Deaktivierung. | Pool-Lua-Tabellen und andere sammelbare Objekte oder versuchen Sie, die Erstellung von temporären Tabellen oder Strings zu reduzieren |
Herzschlag/RunService.Herzschlag | Runs Funktionen, die mit dem Class.RunService.Heartbeat``event.Talk zu Simulation und Skript-Kontakten. Aktuelle Beschreibung ist generisch genug, um nicht falsch zu sein | Reduzieren Sie die Menge oder die Arbeit der Funktionen, die mit RunService.Heartbeat verbunden sind. |
Simulation
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Distributed Physics-Besitz | Bestimmt, ob der Server oder ein Client Autorität über bestimmte Instanzen wie Teile hat. | Distributed Physics Ownership. |
Simulation/Konfiguration | Aktualisiert einen Baum von verbundenen Objekten (Assemblys), die von der Physik-Engine verwendet werden. | Reduzieren Sie die Menge der Joints, die erstellt oder zerstört werden. |
Simulation/PhysikSteppedTotal/PhysikStepped | Bietet die Physiksimulation. | Reduzieren Sie die Menge und die Komplexität von physisch simulierten Körpern. |
Simulation/PhysikSteppedTotal/PhysikStepped/SpacialFilter/filterStep | Aktualisiert Simulationsinseln, indem Teile nach dem Besitz des Netzwerks, lokaler Simulation sortiert werden. Inseln sind nicht-interagierende Gruppen von Teilen, die unabhängig simuliert werden können. | Vermeiden Sie es, die Netzwerkbesitzfrequenz häufig zu setzen. Halten Sie Gruppen von Teilen weit genug voneinander, damit sie separat simuliert werden können. |
Simulation/PhysikSteppedTotal/PhysikStepped/worldStep/stepKontakte | Aktualisiert Kontakte zwischen Objekten. | Reduzieren Sie die Anzahl der zusammenstoßenden Körper oder verwenden Sie einfachere Zusammenstoßkisten. Würfel sind besser als komplexe Meshes. |
Simulation/PhysikSteppedTotal/PhysikStepped/worldStep/stepWorld ODER stepWorldThrottled | Löst Physik-Formeln für Konektoren, Schiffsschau und Humanoids . Wenn der Motor überlastet ist und nicht alles in Echtzeit simulieren kann, werden einige Schritte gedrosselt (StepWorldThrottled) und nur "Echtzeit-Assemblies" wie Humanoids simuliert. | Hängt von der Zeit, die auf der folgenden drei Phasen basiert, ab, in der die Zeit geht: stepContacts: Narrow Phase Collision DetectionGeometry tests. Solver step: Integrate Zeit und löse Kollisionen und andere Einschränkungen updateBroadphase: Update Positionen von Assemblies in Collision Detection System und finden Sie möglicherweise kollidierende schlanke Phase Paare. |
Benachrichtigen Sie sich bewegende Montagemaschinen | Hilft, zu verfolgen, wie lange Primitiven schlafen. | |
Simulation/PhysikSteppedTotal/PhysikStepped/interpolateNetworkedAssemblies | Interpoliert Assemblagen, die von diesem Netzwerk-Mitglied nicht kontrolliert werden. | Setzen Sie den Netzwerkbesitzer der Teile auf diesen Peer, um dies zu reduzieren; obwohl dies normalerweise mehr Physik-Arbeit anderswo erledigt werden muss. |
Simulation/HandleFallenParts | Entfernt Teile, die unter Workspace/FallenPartsDestroyHeight gefallen sind. | Verringere die Zerstörhöhe oder reduziere die Menge der Teile, die zur Zerstörhöhe fallen. |
Herzschlag/HerzschlagIntern/workspaceOnHeartbeat/updateVisuallySleeping | Zweiter Teil von NotifyMovingAssemblies. | |
Herzschlag/RunService.Herzschlag | Runs Funktionen, die mit dem Class.RunService.Heartbeat``event.Talk zu Simulation und Skript-Kontakten. Aktuelle Beschreibung ist generisch genug, um nicht falsch zu sein | Reduzieren Sie die Menge oder die Arbeit der mit RunService.Heartbeat verbundenen Funktionen. |
worldStep/StepKontakte | Hilft der Physiksimulation, viele Kontakte auf einmal auszuführen. | Reduzieren Sie die Anzahl der kollidierenden Objekte. |
LöseBatch | Hilft der Physiksimulation, Batchs von Objekten zu lösen. | |
Mechanismus-Interpolation | Hilfe mit InterpolateNetworkAssemblies. |
Benutzeroberfläche
Etikett | Beschreibung | Leistungstipps |
---|---|---|
Render/PreRender/UpdateInput | Aktualisiert und feuert alle benutzerbezogenen Ereignisse ab, wenn der Benutzer seit dem letzten Bildschirm Eingaben durchgeführt hat. | Dies ist der Zeitpunkt, an dem Ereignisse, die mit der Benutzeroberfläche eingeben, initiieren. Es ist wichtig, so wenig Arbeit wie möglich direkt nach dem Erhalt der Eingabe zu versuchen. Betrachten Sie, eine minimalen Betrag an Verarbeitung für die Eingabe zu tun, und größere Berechnungen sollten an einen anderen Thread geschoben werden, der später passiert. |
Render/PreRender/TweenService | Aktualisiert Objekte, indem sie mit TweenService und Aufruf-Callbacks wie diesen, die an TweenSize oder TweenPosition bereitgestellt wurden, aktualisiert werden. | Reduzieren Sie die Anzahl der Objekte, die mit TweenService getweetet werden, und stellen Sie sicher, dass Rückrufe so wenig Arbeit wie möglich erledigen. |
Render/PreRender/UpdateUI-布局 | Aktualisiert die Position und Größe von Benutzeroberflächenelementen. | Reduzieren Sie die Menge an UI-Elementen, die dynamisch vergrößert oder verkleinert werden, wie diejenigen, die von UILayout verwaltet werden. |
Herzschlag/TweenService | Auf dem Server werden Objekte mit TweenService getwinkelt. Auf dem Client wird dies in einem VorRender-Schritt getwinkelt. | Reduziere die Anzahl der Objekte, die von TweenService tweened. |