Następująca jest lista powszechnych tagów w MicroProfiler, grupowana według kategoria.Rozumienie tych tagów może pomóc ci zidentyfikować kod problematyczny w twoim doświadczeniu.Tabele zawierają etykietę tagu, opisy i wskazówki dotyczące wydajności, aby poprawić wydajność i zoptymalizować swoje doświadczenia.
Spać
Kiedy wątki nie wykonują aktywnie zadań, wpadają w stan senny, z tagami wskazującymi, jak długo wątek spał.W dowolnym momencie, jest niezwykle powszechne, aby większość wątków roboczych była w stanie spania.
AI/nawigacja
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
rasterizuj płytkę | Aktualizacje płytek nawigacyjnych potrzebnych do wyszukiwania prośba, zwykle połączone z wyliczeniem ścieżki, które wymagają, aby te płytki były aktualne.Śledzi pracę nawigacyjną/preproces na głównym wątku. | Zmniejsz liczbę nieprawidłowości wyszukiwania ścieżki, ponieważ powoduje to, że te ścieżki muszą zostać ponownie obliczone. Powodem jest ruch niedostępnych części. |
puteściePath | Oblicza ścieżki, zwykle po rasterizeTile . | Zmniejsz liczbę i zakres świata wezwań ComputePath.Spróbuj ponownego wykorzystania ścieżek dla wielu agentów, jeśli są one oczekiwane do rozpoczęcia/zakończenia z przybliżonych lokalizacji. |
przedprzetwarzanie/getPrimitivesOverlapping | Zbiera geometrię świata dla każdej płyтки wyszukiwania ścieżki i planuje zadania rasteryzacji, które mają być wykonywane przez wątek wyszukiwania ścieżki. | Zmniejsz liczbę części. |
Animacja
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Symulacja/gra krok po kroku | Przetwarzanie obiektów specyficznych dla gry, takich jak Humanoids , Animations i powiadomienia o bicie serca | |
Symulacja/graStepped/StepLegacy | Humanoid zmiany stanu i movement.Called stepHumanoid na serwerze teraz (wersja równoległa) | Wyłącz lub zmniejsz Humanoid stany na NPC, jeśli je masz.Stan drabiny jest najważniejszy do wyłączenia.Zmniejsz powroty do zmian stanu, takich jak Humanoid.Died lub Humanoid.Running |
Symulacja/graStepped/stepAnimacja | Animators będzie kroczyć naprzód w obecnie odtwarzanych animacjach. | Zmniejsz ilość Animators lub animowanych połączeń, aby obniżyć obciążenie tego kroku.Zmniejsz liczbę wezwań do wydarzeń animacji, takich jak AnimationTrack.KeyframeReached lub AnimationTrack.Ended |
Symulacja/graStepped/RunService.Stepped | Wykonuje funkcje połączone z wydarzeniem RunService.Stepped . | Zmniejsz ilość lub obciążenie funkcji połączonych z tym wydarzeniem.Rozważ opóźnienie lub zastąpienie kosztownych obliczeń.Rozważ rozprzestrzenianie obliczeń na wiele ram. |
Dźwięk
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Dźwięk | Przetwarzanie dźwięku: lokalizacje, efekty, głośności itp. | |
Tag rozwojowy_Dźwięki | Dźwięki w pamięci: ogólnie krótkie dźwięki, które są wystarczająco małe, aby zmieścić się w pamięci. Zazwyczaj krótkie jednorazowe efekty fx, a nie długa muzyka. | Użyj mniej krótkich dźwięków. |
Tag rozwojowy_Dźwięki przesyłania | stream/StreamingSounds: są to większe dźwięki, które są przesyłane z dysku. Ogólnie dłuższe pliki muzyczne. | Użyj mniej długich dźwięków. |
Sieciowanie
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Odbiór pakietów sieciowych | Otrzymuje pakiety sieciowe. Jeśli wiele obiektów lub wydarzeń jest replikowanych, ten krok zajmuje dłużej. | Replikuj mniej obiektów lub wydarzeń. |
Replikator/Pakiety procesów | Przetwarza zawartość pakietów sieciowych, takie jak ruch, wezwania wydarzeń i zmiany właściwości. | Zmniejsz liczbę lub rozmiar obiektów replikowanych lub zrób to w krokach kumulatywnych.Może wzrosnąć, jeśli rozmiar mapy wzrośnie, ponieważ większe mapy mają tendencję do większej ogólnej aktywność. |
Przydział przepustowości i uruchomienie nadawców/dyspatcherów fizyki i nadawców dotykowych | Wysyła dane o aktywności w doświadczeniu. | Zmniejsz ilość poruszających się obiektów i/lub dotknięć. Zobacz następne sekcje. |
Przydzielaj przepustowość i uruchamiaj nadawców/StreamJob rozsyłania | Wysyła odpowiednie specyficzne regiony do określonych klientów w funkcja"Streamowanie". | Zmniejsz minimalny i docelowy promień przesyłania. |
Zarezerwuj przepustowość i uruchom nadawców/rozsyłaczy danych | Wysyła zmiany właściwości, zdarzenia zdalne, zmiany stanu Humanoida, rozpoczęcia/zatrzymania animacji. | Zmniejsz liczbę powtórzonych zmian w modelu danych |
Replikator SendCluster | Wysyła dane o terenie do klientów. | Zmniejsz ilość lub rozmiar zmian terenu. |
ModelCompleteness Mega praca | Tylko serwer: kompletność jest koncepcją wewnętrzną. Gdy modele są wysyłane w całości, wysyłane są wydarzenia kompletności modelu. | Dodaj lub usuń mniej instancji. |
Pakiet Deserializacji | Niskopoziomowe przetwarzanie pakietów sieciowych. Przygotowuje do pakietów procesu replikatora. | Wyślij mniej aktualizacji. |
Renderowanie
Tytuł | Opis | Notatki o wydajności |
---|---|---|
Przygotuj | Informacje są gromadzone z głównego wątku i aktualizują różne struktury danych używane do renderowania.To blokuje wątki symulacyjne, więc powinno być jak najmniejsze. | Zobacz przygotuj etykiety poniżej. |
Przygotuj/Pass3dAdorn | Renderowanie różnych ozdób obiektów, takich jak etykiety tekstowe nad obiektami. Ten krok może obejmować rozsyłanie promieni, aby określić, czy takie obiekty są widoczne. | Zmniejsz liczbę widocznych ozdobionych obiektów, takich jak BillboardGuis , Humanoid etykiety nazwy/zdrowia itp. |
Przygotuj/Przekaż2d | Przygotowuje renderowanie interfejsu 2D (zarówno gracz, jak i interfejs Roblox). | Zmniejsz ilość lub złożoność elementów interfejsu. |
Przygotuj/ZaktualizujPrzygotuj/zaktualizujNieprawidł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żą liczbę właściwości obiektów, rozbij ją na poszczególne ramy. |
Przygotuj/ZaktualizujPrzygotuj/zaktualizujNieważne szybkie klastry | Przygotowuje geometrię, zwykle "Szybkie klastry" używane do renderowania Humanoids. Podmarkery określają liczbę części, wierzchołków i rozmiar wierzchołków. | Zmniejsz użycie "Humanoidów" pod obiektami, które nie są Humanoids .Nie powinno to być używane do skrócenia wezwań do wyciągania, ponieważ FastClusters zużywają znacznie więcej pamięci. |
Przygotuj/ZaktualizujPrzygotuj/zaktualizujDynamiczne części | Aktualizuje pozycje dla Humanoids , pojazdów i innych przemieszczających się instancji do renderowania | Zmniejsz liczbę lub złożoność przemieszczania Humanoids lub widocznych pojazdów.Połączenie części tego samego materiału i koloru w związek lub MeshPart może pomóc w tym. |
Przygotuj/aktualizujPrzygotuj/aktualizujInstancedClusters | Przygotowuje statyczną geometrię, która wykorzystuje renderowanie instancji (części i części siatki). Nazwy "Klastery" i "Instancje" wskazują na aktualizowaną liczbę. | Użyj mniej ogólnej zmiany siatki i różnic materiałów. Możesz także tworzyć klastry za pomocą obiektów o podobnym wyglądzie - rozmiarze, kolorze, materiałzie. |
Wykonaj | Kiedy są tworzone i wydawane rzeczywiste komendy renderowania. | Zobacz etykiety wykonania poniżej. |
Wykonaj/wypełnijGUIVertices | Renderowanie interfejsu. Wypełnia buforami węzłów interfejsu dla ozdób. Etykieta "Liczba GUI" wskazuje ilość elementów na liście renderera. | Jeśli koszt jest wysoki, zmniejsz ilość aktualizowanego interfejsu użytkownika poprzez wyłączenie go, gdy nie jest używany, zapewniając, że jest prawidłowo ukryty. |
Wykonaj/Scenę/queryFrustumOrdered | Stosuje selekcję frustum, aby nie renderować obiektów niewidocznych. | Jeśli istnieje wysoki koszt, oznacza to, że istnieje wiele elementów.Być może użyj nieco większych siatek, w których pojedyncza siatka ma więcej szczegółów w porównaniu do wielu małych części. |
Wykonaj/Scenę/ computeLightingPerform | Obliczanie oświetlenia w pobliżu kamery. | Manipuluj liczbą źródeł światła lub przesuń kamerę mniej, aby zmniejszyć czas potrzebny na ponowne obliczenie oświetlenia. |
Wykonaj/Scena/ computeLightingPerform/LightGridCPU | Aktualizuje oświetlenie voxel, które jest używane w trybach Voxel i ShadowMap i na poziomach jakości poniżej 4 w trybie Future. | Jeśli aktualizacja zajętości kawałków zajmuje zbyt dużo czasu, rozważ użycie mniejszej rozdzielczości geometrii, zmniejszenie liczby części lub zakotwiczenie części.Jeśli inne podmarkery zajmują zbyt dużo czasu, rozważ zmniejszenie liczby świateł i wykorzystanie geometrycznej geometrii rzucania cieni dla obiektów, które się poruszają i anulują obecność. |
Wykonaj/Scena/ computeLightingPerform/ShadowMapSystem | Aktualizuje mapy cieni. Nie wykonywane na poziomach jakości poniżej 4 lub gdy Lighting.Technology jest ustawiony na Voxel. | Jeśli oświetlenie jest ustawione na Future , obniż je do ShadowMap lub zmniejsz liczbę świateł.Możesz także użyć Light.Shadows i BasePart.CastShadows, aby wyłączyć rzucanie cieni na mniej ważnych instancjach.Zobacz Poprawa wydajności. |
Wykonaj/Scenę/Świecenie, Korekcję kolorów, MSAA, SSAO i SSAOApply | Wyświetlanie po przetworzeniu. | Zmniejsz liczbę efektów post-processingowych. Zazwyczaj nie jest to znaczące. |
Wykonaj/Scena/UI | Renderowanie interfejsu. W Id_Screen istnieje etykieta z liczbą użytych partii, materiałów i trójkątów. | Zmniejsz liczbę widocznych elementów interfejsu. Korzystanie z CanvasGroups może pomóc kosztem zwiększonego zużycia pamięci. |
Wykonaj/Scenę/Aktualizuj widok/aktualizuj cząstki, aktualizuj granice cząstek | Aktualizuj pozycję i granice cząstek. | Zmniejsz liczbę ParticleEmitters , poziomy emisji, czas trwania itp. Ogranicz ruch emitentów. |
Id_Opaque | Części w scenie z wartością przeźroczystości 0. | |
Id_Transparent | Części w scenie z wartością przejrzystości inną niż 0. | Zmniejsz użycie częściowej przejrzystości (wartości inne niż 0 i 1). |
Id_Decal | Naklejki w scenie. | |
Wykonaj/Przedstaw | Czeka, aż GPU zakończy renderowanie poprzedniego ramu; rzeczywiście wydaje polecenia renderowania do GPU; zajmuje się niskopoziomowymi zasobami graficznymi. | Zmniejsz ogólnezłożoność sceny. Jeśli ten krok zajmuje dużo czasu, możesz być ograniczony przez GPU. |
Wykonaj/Przedstaw/czekaj aż do ukończenia | Czeka, aż GPU zakończy renderowanie poprzedniego ramu. | Jeśli to ogólnie dzieje się dużo, to ilość renderowanych rzeczy jest zbyt wysoka.FRM pomaga zrównoważyć to, ale jeśli pozostanie wysoki, spróbuj używać mniej szczegółów. |
Skrypty
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Renderowanie/PreRenderowanie/fireBindToRenderSteppedCallbacks | Wykonanie funkcji wiązanych z renderowaniem kroku za pomocą RunService:BindToRenderStep() . | Upewnij się, że funkcje w skryptach za pomocą RunService:BindToRenderStep() wykonują jak najmniej pracy. |
Renderowanie/PreRenderowanie/RunService.RenderStepped | Wykonuje funkcje połączone z wydarzeniem RunService.RenderStepped . | Podobnie jak BindToRenderStep, upewnij się, że funkcje korzystające z tego wydarzenia wykonują jak najmniej pracy. |
Czekanie na hybrydowe skryptowe zadanie | Wznowia skrypty oczekujące za pomocą oczekiwania. ram. | Ten krok ma budżet czasu wykonania do uruchamiania skryptów oczekiwania, więc jeśli masz zbyt wiele skryptów oczekiwania lub skryptów z długim czasem wykonania przed oddaniem, ten krok może zająć wiele |
LuaGC | Cykl zbierania śmieci Luau. Etykieta dostarcza szacunki pamięci na temat całkowitej alokacji i tego, ile zostało odzyskane. | Basenowe tabele lua i inne przedmioty kolekcjonerskie lub spróbuj zmniejszyć tworzenie tymczasowych tabel lub ciągów |
Bicie serca/RunService.Heartbeat | Wykonuje funkcje połączone z Class.RunService.Heartbeat``event.Talk do kontaktów symulacji i skryptów. Obecny opis jest wystarczająco ogólny, aby nie błądzić | Zmniejsz ilość lub obciążenie funkcji połączonych z RunService.Heartbeat. |
Symulacja
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Rozproszone własności fizyczne | Określa, czy serwer lub klient ma uprawnienia do pewnych instancji, takich jak części. | Rozproszone własności fizyczne. |
Symulacja/złożenie | Aktualizuje drzewo połączonych obiektów (zbiory) używane przez silnik fizyczny. | Zmniejsz ilość stawów, które są tworzone lub niszczone. |
Symulacja/fizykaSteppedTotal/physicsStepped | Wykonuje symulację fizyczną. | Zmniejsz ilość i złożoność fizycznie symulowanych ciał. |
Symulacja/fizykaSteppedTotal/physicsStepped/SpatialFilter/filterStep | Aktualizuje wyspy symulacji, organizuje części według własności sieci, lokalną symulację.Wyspy to nieinterakcyjne grupy części, które można symulować niezależnie. | Unikaj częstego ustawiania własności sieci. Trzymaj grupy części wystarczająco daleko od siebie, aby mogły być symulowane oddzielnie. |
Symulacja/fizykaSteppedTotal/physicsStepped/worldStep/stepContacts | Aktualizuje kontakty między obiektami. | Zmniejsz ilość ciał, które jednocześnie się zderzają, lub użyj prostszych skrzynek kolizyjnych. Kostki są lepsze niż skomplikowane siatki. |
Symulacja/fizykaSteppedTotal/physicsStepped/worldStep/stepWorld LUB stepWorldThrottled | Rozwiązuje równania fizyczne dotyczące połączeń, przepływu i Humanoids .Gdy silnik jest przeciążony i nie jest w stanie symulować wszystkiego w czasie rzeczywistym, niektóre kroki mogą zostać ograniczone (stepWorldThrottled) i symulowane są tylko "zebrania rzeczywistego czasu", takie jak Humanoids . | Zależy od tego, gdzie czas idzie w oparciu o następujące trzy fazy: testy geometrii detekcji kolizji wąskiego etapu kontaktów.Krok rozwiązania: zintegruj czas i rozwiąż kolizje oraz inne ograniczenia updateBroadphase: aktualizuj pozycje zespołów w systemie wykrywania kolizji i znajdź ewentualnie kolizyjne wąskie pary fazy. |
Powiadomienie o poruszaniu zespołów | Pomaga śledzić, jak długo prymitywy spały. | |
Symulacja/fizykaSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpoluje zgromadzenia nie kontrolowane przez tę sieć peer. | Ustaw właściciela sieci części do tej pary, aby zmniejszyć to; choć zwykle spowoduje to wykonanie więcej pracy fizycznej gdzie indziej. |
Symulacja/handleFallenParts | Usuwa części, które spadły poniżej Workspace/FallenPartsDestroyHeight. | Obniż wysokość zniszczenia lub zmniejsz ilość części, które spadają do wysokości zniszczenia. |
Bicie serca/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Druga część NotifyMovingAssemblies. | |
Bicie serca/RunService.Heartbeat | Wykonuje funkcje połączone z Class.RunService.Heartbeat``event.Talk do kontaktów symulacji i skryptów. Obecny opis jest wystarczająco ogólny, aby nie błądzić | Zmniejsz ilość lub obciążenie funkcji połączonych z RunService.Heartbeat. |
worldStep/Kontakty kroków | Pomaga symulacji fizycznej krok wielu kontaktów na raz. | Zmniejsz liczbę kolizyjnych obiektów. |
Rozwiąż serię | Pomaga symulacji fizycznej rozwiązać serię ruchu obiektów. | |
Interpolacja mechanizmu | Pomaga w InterpolateNetworkAssemblies. |
UI
Tytuł | Opis | Wskazówki dotyczące wydajności |
---|---|---|
Renderuj/PreRenderuj/Aktualizuj wejście | Aktualizuje i uruchamia wszystkie wydarzenia związane z wejściem użytkownika, jeśli użytkownik wykonał wejście od ostatniego ramu. | Wystrzelą wtedy wydarzenia związane z wejściem użytkownika.Ważne jest, aby spróbować nie wykonywać zbyt dużo pracy bezpośrednio po otrzymaniu wejścia.Rozważ wykonanie minimalnej ilości przetwarzania dla wejścia, a większe obliczenia powinny zostać przesunięte na inny wątek, który pojawi się później. |
Renderowanie/PreRenderowanie/TweenService | Aktualizuje obiekty przechowywane za pomocą TweenService i wzywa powiadomienia o zakończeniu, takie jak te używane do TweenSize lub TweenPosition. | Zmniejsz liczbę obiektów przechwytywanych za pomocą TweenService i zapewnij, że wezwania powrotne wykonują jak najmniej pracy. |
Renderowanie/PreRenderowanie/Aktualizowanie UILayoutów | Aktualizuje pozycję i rozmiar elementów UI. | Zmniejsz ilość elementów interfejsu użytkownika, które są zmieniane lub przesuwane dynamicznie, takich jak te zarządzane przez UILayout. |
Pulser/TweenService | Na serwerze aktualizowane są obiekty przetwarzane za pomocą TweenService. Na klientzie zamiast tego dokonuje się tego w kroku PreRender. | Zmniejsz ilość obiektów przetwarzanych przez TweenService . |