Następująca lista to wspólne tagi w MicroProfilerze, grupowane według kategoria. Zrozumienie tych tagów może pomóc Ci zidentyfikować problematyczny kod w swoim doświadczeniu. Tabely zawierają etykiety, opisy i wskazówki dotyczące optymalizacji swojego doświadczenia.
AI/Navigacja
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
rasterizuj | Aktualizuje płytki nawigacyjne wymagane do wyszukaiwania prośba, zwykle poprzedzane przez wykonaniePath, które wymaga, aby te płytki były aktualizowane. Śledzi NavigationJob / pre処理 na głównym wątku. | Zmniejsz liczbę nieprawidłowych znalezisk ścieżek, ponieważ powoduje to, że te ścieżki muszą być ponownie obliczone. To jest spowodowane przez nieprawidłowo położone części. |
liczŚcieg | Oblicza ścieżki, zwykle po rasterizeTile . | Zmniejsz liczbę i zasięg świata ComputePath wezwania. Spróbuj ponownego użycia ścieżek dla wielu agentów, jeśli oczekuje się, że zaczną/zakończą się z około podobnych lokalizacji. |
preprocess/getPrimitivesOverlapping | Zbiera geometrię świata dla każdej płytki ścieżki i zaplanowuje zadania na rasterizację do wykonania przez wątek ścieżki. | Zmniejsz liczbę części. |
Animacja
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Simulacja/gra | Przetwarzanie obiektów specjalnych gry, takich jak Humanoids, Animations i wezwania do serca | |
Simulation/gameStepped/StepLegacy | Humanoid zmienia stan i movement.Called krokHumanoid na serwerze teraz (wersja równoległa) | Wyłącz lub zmniejsz Humanoid stan na NPC, jeśli masz go. stan licytacji jest najważniejszy do wyłączać, przestawać. Redukuj wezwania do zmiany stanu, takich jak Humanoid.Died lub Humanoid.Running. |
Simulation/gameStepped/stepAnimation | Animators pójdzie do przodu w graniu w animacje. | Zmniejsz ilość Animators lub połączeń animowanych, aby zmniejszyć obciążenie tego kroku. Zmniejsz liczbę wezwanych funkcji do wydarzeń animacji, takich jak AnimationTrack.KeyframeReached lub AnimationTrack.Ended. |
Simulation/gameStepped/RunService | Wykonuje funkcje powiązane z wydarzeniem RunService.Stepped. | Zmniejsz ilość lub obciążenie funkcji powiązanych z tym wydarzeniem. Rozważ rozszerzenie lub zastąpienie drogich obliczeń. Rozważ rozprzestrzenianie obliczeń na wiele ram. |
Dźwięk
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Dźwięk | Przetwarzanie dźwięku: lokalizacje, efekty, głośniki itp. | |
DeveloperTag_Dźwięki | Dźwięki w pamięci: ogólnie różne krótkie dźwięki, które są wystarczająco duże, aby trafić w pamięć. Zwykle krótkie fx jednorożca, nie długa muzyka. | Użyj mniej krótkich dźwięków. |
DeveloperTag_StreamingSounds | stream/StreamingSounds: są to większe dźwięki, które są transmitowane z dysk. Zwykle dłuższe pliki muzyczne w formie. | Użyj mniej długich dźwięków. |
Sieci
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Odbieranie pakietów sieciowych | Otrzymuje paczki sieciowe. Jeśli wiele obiektów lub wydarzeń jest replikowanych, ten krok trwa dłużej. | Replikuj mniej obiektów lub wydarzeń. |
Replikator/PackietyProcesowe | Przetwarza treści pakietów sieciowych, takie jak ruch, wezwania wydarzeń i zmiany właściwości. | Zmniejsz liczbę lub rozmiar obiektów replikowane, lub wykonaj to w krokach zwiększonych. Może się to zwiększyć, jeśli rozmiar mapy się zwiększa, ponieważ większe mapy mają tendencję do posiadania więcej ogólnej aktywność. |
Dostarcz pasmo i uruchom wysyłaczy/dyspozytorników fizycznych i TouchSenders | Wyświetla dane o aktywności w doświadczeniu. | Zmniejsz ilość ruchomych obiektów i/lub dotyków. Zobacz następne sekcje. |
Zakonfiguruj przepustnicę i zadaj zadanie wysyłania/dysponowania | Wyświetla odpowiadające regiony dla konkretnych klientów w funkcja"Przesyłanie". | Zmniejsz minimum i docelowy obszar przesyłania. |
Zakonfiguruj przepustnicę i zesyłaj dane wysyłania/dane dystrybucji | Wyświetla zmiany właściwości, zdarzenia zdalne, zmiany stanu ludzkiego, animacja start / zatrzymania. | Ogranicz liczbę powtórzonych zmian do modelu danych |
Wysyłacz Replikatorów | Wyświetla dane terenu dla klientów. | Zmniejsz ilość lub rozmiar zmian terenu. |
ModelCompleteness Mega Praca | Tylko na serwerze: kompletość jest koncepcją wewnętrzną. Gdy modele są wysyłane w pełni, zdarza się wysyłanie zdarzeń kompletości modelu. | Dodaj lub usuń mniej instancji. |
Zeszyfrowany pakiet | Przesyłanie pakietów sieciowych niskiego poziomu. Przygotowuje się do Replicator ProcessPackets. | Wyślij mniej aktualizacji. |
Renderowanie
Etykieta | Opis | Notatki o wydajności |
---|---|---|
Przygotuj | Informacje z głównego wątku i aktualizowane są różne struktury danych używane do renderowania. To blokuje wątki simulacyjne, więc powinny być tak małe, jak to możliwe. | Zobacz przygotuj poniżej. |
Przygotuj/Pass3dAdorn | Renderowanie różnych ozdób obiektów, takich jak tekstowe etykiety nad obiektami. Ten krok może obejmować raycasting, aby określić, czy takie obiekty są widoczne. | Zmniejsz liczbę widocznych ozdobionych obiektów, takich jak BillboardGuis, Humanoid imię/zdrowia nalepek itp. |
Przygotuj/Pass2d | Gotowy renderowanie interfejsu 2D (zarówno dla gracza jak i dla Roblox UI). | Zmniejsz ilość lub złożoność elementów interfejsu. |
Przygotuj/aktualizuj/aktualizuj nieprawidłowe części | Aktualizuje części, które miały zmienioną lub dodaną właściwość. | Zmniejsz ilość zmian właściwości na świecie. Jeśli skrypt aktualizuje duże zestawy właściwości obiektu, podziel go na klatki. |
Przygotuj/aktualizuj/aktualizuj nieaktualizowaneFastClusters | Przygotowuje geometrię, zwykle "FastClusters" używany do renderowania Humanoids . Podziałniki określają liczbę części, wierzchołków i rozmiar wierzchołków. | Ogranicz użycie 'Humanoid' pod obiektami, które nie są Humanoids . Nie należy używać tego, aby skrócić wezwania rysunku, ponieważ FastClusters zużywa znacznie więcej pamięci. |
Przygotuj/aktualizuj/aktualizujDynamische Teile | Aktualizuje pozycje dla Humanoids , pojazdy i inne ruchome instancje do renderowania. | Zmniejsz liczbę lub złożoność widocznych Humanoids lub pojazdów. Połączenie części tego samego materiału i koloru w jedną lub MeshPart może pomóc. |
Przygotuj/ZaktualizujPrzygotuj/aktualizInstancedClusters | Przygotowuje statyczną geometrię, która używa instancyjnego renderowania (części i części siatki). Label "klastry" i "instancje" oznaczają aktualizowany numer. | Użyj mniej ogólnej zmiany siatki i materiału. Możesz również tworzyć klamerki, używając obiektów, które mają podobny wygląd - rozmiar, kolor, materiał. |
Wykonaj | Gdy rzeczywiste komendy renderowania są utworzone i wydane. | Zobacz poniżej etykiety wykonania. |
Wykonaj/zapełnij GUI | Renderowanie interfejsu. Wypełnia wierzchowce z interfejsu dla ozdób. Przycisk „Gui count” wskazuje ilość elementów w liście renderera. | Jeśli koszt jest wysoki, zmniejsz ilość interfejsu aktualizowana przez wyłączenie go, gdy nie jest używany, zapewniając, że jest poprawnie ukryty. |
Perform/Scene/queryFrustumOrdered | Stosuje filtrowanie frustum, aby obiekty niewidoczne nie były renderowane. | Jeśli istnieje duży koszt, co oznacza, że istnieje wiele elementów. Być może użyj większych siatek, gdzie jedna siatka ma więcej szczegółów niż wiele małych pojedynczych części. |
Perform/Scene/計算光源Perform | Obliczanie oświetlenia w pobliżu kamery. | Manipuluj ilością źródeł światła lub przesuń kamerę mniej, aby zmniejszyć czas potrzebny do obliczenia oświetlenia. |
Perform/Scene/computeLightingPerform/LightGridCPU | Aktualizuje oświetlenie woxela, które jest używane w Voxel i ShadowMap trybach i na poziomach jakości poniżej 4 w trybie Future . | Jeśli aktualizacja zajęcia części zajmuje zbyt wiele czasu, rozważaj używanie niższej geometrii rozdzielczości, zmniejszając liczbę części lub przywiązując części. Jeśli inne subarkery biorą zbyt długo, rozważaj zmniejszenie liczby świateł i używanie geometrii niecienkiej dla obiektów, które się poruszają i anulują znajomość. |
Perform/Scene/computeLightingPerform/ShadowMapSystem | Aktualizuje mapy cienia. Nie wykonuje się na poziomach jakości poniżej 4 lub gdy Lighting.Technology jest ustawiony na Voxel. | Jeśli oświetlenie jest ustawione na Future, zmniejsz go do ShadowMap lub zmniejsz liczbę świateł. Możesz również użyć Light.Shadows i 1> Class.BasePart.CastShadows1>, aby wyłączyć kastowanie c |
Wykonaj/Scenę/Zdrowaś, Korrekcja Kolorów, MSAA, SSAO i SSAOApply | Renderowanie post-Processing. | Zmniejsz liczbę efektów post-processing. Zwykle nie jest to istotne. |
Wykonaj/Scenę/UI | Renderowanie interfejsu. W Id_Screen istnieje etykieta z liczbą rzędów, materiałów i kątów używanych. | Zmniejsz liczbę widocznych elementów interfejsu. Używanie CanvasGroups może pomóc kosztem zwiększonego zużycia pamięci. |
Perform/Scene/UpdateView/updateParticles, updateParticleBindings | Aktualizuj pozycję i granice cząsteczek. | Zmniejsz liczbę ParticleEmitters , stawki emisji, czasy życia itp. Ogranicz ruch emisji. |
Id_Opakowanie | Części na scenie z wartością przejrzystości 0. | |
Id_Przezroczysty | Obiekty w scenie z inną wartością przejrzystości niż 0. | Ogranicz użycie częściowej przejrzystości (wartości poza 0 i 1). |
Id_Naklejka | Dekale na scenie. | |
Wykonaj/Zgłoś | Czeka na ukończenie renderowania poprzedniego klatki przez GPU; w rzeczywistości wykonuje komendy renderowania dlaGPU; zajmuje się niskiego poziomowego zasobami graficznymi. | Redukuj złożoność sceny ogólnie rzecz ogólne. Jeśli ten krok trwa długo, możesz być ograniczony przez GPU. |
Wykonaj/Zgłoś/czekaj aż zakończone | Czeka na zakończenie renderowania poprzedniego klatki przez GPU. | Jeśli to się zdarza bardzo często, to ilość renderowanych rzeczy jest zbyt duża. FRM pomaga zrównoważyć to, ale jeśli pozostaje duża, spróbuj użyć mniej szczegółowości. |
Skrypcje
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Render/PreRender/fireBindToRenderSteppedCallbacks | Funkcje do renderowania związane z krokiem związanym z RunService:BindToRenderStep() . | Upewnij się, że funkcje w skryptach używają RunService:BindToRenderStep() , aby wykonać tak mało pracy, jak to możliwe. |
Render/PreRender/RunService.RenderStepped | Wykonuje funkcje związane z wydarzeniem RunService.RenderStepped. | Podobnie jak BindToRenderStep, upewnij się, że funkcje używające tego wydarzenia wykonują tak mało pracy, jak to możliwe. |
Czekaj na zadanie hybrydowe | Zwraca skrypty, które czekają, używając czekań. | Ten krok ma budżet czasu wykonania, aby wykonać czekające skrypty, więc jeśli masz zbyt wiele czekających skryptów lub skryptów z długim czasem wykonania przed wydaniem, ten krok może zająć wiele |
LuaGCC | Cykl zbierania śmieci Lua. Label dostarcza szacunki pamięci na poziomie całkowitej dystrybucji i tego, ile zostało odizolowane. | Stawiaj tabeli lua w basenie lub inne zbieralne obiekty lub spróbuj zmniejszyć tworzenie tymczasowych tabel lub łańcuszków |
Heartbeat/RunService.Heartbeat | Wykonuje funkcje połączone z Class.RunService.Heartbeat``event.Talk do kontaktów z symulacją i skryptami. Obecna opis jest wystarczająco ogólna, aby nie być błędna | Zmniejsz ilość lub obciążenie funkcji powiązanych z RunService.Heartbeat. |
Simulacja
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Dystrybucja własności fizyki | Określa, czy serwer lub klient ma autorytet nad niektórymi instancjami, takimi jak części. | Dystrybucja własności fizyki. |
Simulacja/zgromadzenie | Aktualizuje drzewo połączonych obiektów (zestawień), które są używane przez silnik fizyczny. | Zmniejsz ilość stworzonych lub zniszczonych łączeń. |
Simulation/physicsSteppedTotal/physicsStepped | Zaopatruje siMULATION fizycznych. | Zmniejsz ilość i złożoność fizycznie symulowanych ciał. |
Simulation/physicsSteppedTotal/physicsStepped/SpacialFilter/filterStep | Aktualizuje wyspy symulacyjne, ustawiając części według własności sieci, lokalnej simulacji. Wyspy są niezależnymi grupami części, które można symulować niezależnie. | Unikaj ustawiania własności sieci często. Miej grupy części tak daleko od siebie, aby można było je symulować osobno. |
Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepKontakty | Aktualizuje kontakty między obiektami. | Zmniejsz ilość kolidujących się jednocześnie ciał lub użyj prostszych skrzynek kolizji. Kostki są lepsze niż złożone siatki. |
Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld LUB stepWorldThrottled | Rozwiązuje problemy fizyczne dotyczące połączników, pływalności i Humanoids . Gdy silnik jest przeciążony i nie może simulować wszystkiego w czasie rzeczywistym, niektóre kroki mogą być ograniczone (stepWorldThrottled) i tylko "czasy rzeczywiste" takie jak Humanoids są simul | Zależy od tego, gdzie czas biegnie w oparciu o następujące trzy fazy: stepContacts: szerokie wykrywanie kolizji z geometrią testów. Solver step: integrates time and solve collisions and other constraints updateBroadprice: update pozycje zespołów w systemie wykrywania kolizji i znaleźć ewentualnie kolizją dwóch faz wąskich. |
Powiadomienia o przesuwaniu zestawów | Pomaga śledzić, ile czasu odkrywały się podstawowe części. | |
Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpoluje zgromadzenia niekontrolowane przez tego sieciowego kola. | Ustaw właściciel sieci części na ten sąsiad, aby zmniejszyć to; choć to zwykle powoduje, że więcej pracy fizycznej będzie wykonanych gdzie indziej. |
Simulacja/HandleFallenParts | Usuwa części, które spadły poniżej Workspace / FallenPartsDestroyHeight. | Zmniejsz wysokość niszczenia lub zmniejsz ilość części, które spadają podczas niszczenia wysokości. |
Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Druga część NotifyMovingAssemblies. | |
Heartbeat/RunService.Heartbeat | Wykonuje funkcje połączone z Class.RunService.Heartbeat``event.Talk do kontaktów z symulacją i skryptami. Obecna opis jest wystarczająco ogólna, aby nie być błędna | Zmniejsz ilość lub obciążenie funkcji powiązanych z RunService.Heartbeat . |
worldStep/Kontakty krok po kroku | Pomaga to wymodelować fizykę symulacji wielu kontaktów naraz. | Zmniejsz liczbę kolizujących obiektów. |
Rozwiąż problem | Pomaga symulacji fizycznej rozwiązać masy obiektów. | |
Interpolacja mechanizmu | Pomaga w InterpolateNetworkAssemblies. |
Interfejs użytkownika
Etykieta | Opis | Rada dotycząca wydajności |
---|---|---|
Render/PreRender/UpdateInput | Aktualizuje i pożega wszystkie związane z użytkownikiem wydarzenia w ramach, jeśli użytkownik wykonał wejście od czasu ostatniej ramy. | To jest czas, w którym zdarza się pożar wszystkich wydarzeń związanych z wejściem użytkownika. Ważne jest, aby spróbować nie robić zbyt wiele pracy bezpośrednio po otrzymaniu wejścia. Rozważ powiększenie minimalnej ilości pracy dla wejścia i większych obliczeń powinien zostać przeniesiony na inny wątek, który następnie się pojawi. |
Render/PreRender/TweenService | Aktualizuje obiekty, które są tweenowane przy użyciu TweenService i wzywa do ukończenia wezwania, takich jak te używane do TweenSize lub TweenPosition. | Zmniejsz liczbę obiektów do zapisu używając TweenService i upewnij się, że wezwania zwracają tyle pracy, ile to możliwe. |
Render/PreRender/UpdateUILayouts | Aktualizuje pozycję i rozmiar elementów UI. | Zmniejsz ilość elementów interfejsu, które są zmniejszane lub przesuwane dynamicznie, takich jak te zarządzane przez UILayout . |
Heartbeat/TweenService | Na serwerze aktualizuje się obiekty z TweenService. Na klientach zamiast tego zrobione jest to w kroku przed renderowaniem. | Zmniejsz ilość obiektów uczynszonych przez TweenService . |