MikroProfilownik

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Mikroprofilownik jest narzędziem do optymalizacji wydajności i rozwiązywania problemów dostępnym w Roblox Studio i klientzie Roblox.Zapewnia szczegółowe informacje o czasie dla zadań harmonogramu zadań o nazwie tagi .

Podstawy mikroprofilera

Aby otworzyć mikroprofiler, naciśnij CtrlAltF6 ( F6 ) w Studio lub klientzie.Możesz również użyć menu ustawień w klientzie.

Gdy otwarty, pasek menu jest widoczny na górze okna 3D.W trybie domyślnym wykres paska przesuwającego się pokazuje czas użyty na każdą ramę harmonogramu zadań.

The Microprofiler frame graph, showing blue frames and detailed frame information.

Pasy powinny być ogólnie wokół środka wykresu, ale możesz zobaczyć nagłe wzrosty (szybkie wzrosty wartości).Kolce wskazują, że poświęcono więcej czasu na wykonanie pewnych zadań, zwykle z powodu zwiększonego obciążenia.Na instancjatworzenie dużej liczby ruchomych części wymaga więcej pracy z symulacją fizyczną, która następnie potrzebuje więcej czasu na przetwarzanie ruchu i kontaktów części.Poniższy obraz pokazuje przykład kolca:

The Microprofiler with several bars higher than others.

Aby wstrzymać rejestrację ram, naciśnij CtrlP ( P ) lub kliknij Pauza w pasku menu.Podczas przerwy pojawia się czasochronny harmonogram, a możesz nawigować po ramach, klikając lub przeciągając po wykresie.

Aby uzyskać pełny przegląd różnych widoków i sposobów nawigacji po interfejsie MicroProfiler, zobacz tryby MicroProfiler.

Wątki

Podobnie jak wiele programów, Roblox wykorzystuje wiele wątków do wykonywania kilku sekwencji zadań jednocześnie.W mikroprofilu trybie szczegółowym możesz zobaczyć etykiety dla każdego wątku po lewej stronie.

The lefthand side of the Microprofiler detailed view, with rows for threads.

Istnieją trzy główne typy wątków:

  • Główny/Render : Być może niezrozumiale, uruchamia się na CPU.Przetwarzanie wejścia, Humanoids , animacje/tweening, własność fizyczna, dźwięk i odnowienie skryptu oczekiwania.Aktualizuje również interfejsy Studio i koordynuje inne wątki.

  • Pracownik ("Pracownik RBX": Pomaga głównemu wątkowi związanemu z siecią, fizyką i odnajdywaniem ścieżek.Ze względu na liczbę rdzeni w nowoczesnych procesorach, prawdopodobnie masz wiele wątków pracowników, z których większość jest w stanie spania w dowolnym momencie.

  • Renderuj ("GPU"): Śledzi logikę "przygotuj, wykonaj, przedstaw" . Komunikuje się z jednostką przetwarzania grafiki (GPU) urządzenie.

    • Przygotuj: Informacje z głównego wątku są wykorzystywane do aktualizowania modeli renderowania.
    • Wykonaj: wydaj komendy renderowania, w tym interfejsy 2D.
    • Obecny: Synchronizuje się z GPU.

Profili niestandardowych

Jeśli twoje skrypty wykonują skomplikowane zadania, możesz przeanalizować krytyczne części kodu, aby upewnić się, że nie zajmują zbyt dużo czasu.Owiń kod w debug.profilebegin() i debug.profileend() aby wszystko zrobić między tymi wezwaniami funkcji i stworzyć etykietę na czasie linii czasu MicroProfilera.

Skrypt ciężkiej pracy

debug.profilebegin("Hard Work")
-- Kod do profilowania
debug.profileend()
A custom label on the detailed view of the MicroProfiler.

Istnieje ograniczona ilość pamięci dostępna dla etykiet MicroProfiler.Jeśli ta pamięć się wyczerpie, niestandardowe etykiety profilera mogą nie pojawić się jako znacząca nazwa w czasie trwania.Użyj mniej etykiet, aby uniknąć tego problemu.Jeśli nie musisz już profilować sekcji kodu, skomentuj lub usuń wezwania do tych funkcji.

Przykład

Poniższy przykład kodu połącza fałszywą funkcję z wydarzeniem RunService.PreSimulation, które uruchamia się co każdą ramę.Wszystko, co wykonane to często powinno działać tak wydajnie, jak to możliwe, więc ta funkcja jest dobrym kandydatem do profilowania.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Przykład ciężkiej pracy: zamień dwie zmienne 200 000 razy
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)

Gdy uruchomisz doświadczenie i zatrzymasz mikroprofiler ( CtrlP lub P ), widoczna jest niestandardowa etykieta pod etykietą gameStepped .

Many labels on the MicroProfiler, with a custom label taking up the majority of the processing time.

Z jego czasu trwania na osi czasu możesz powiedzieć, że funkcja wykorzystuje dużo czasu przetwarzania w porównaniu do innych operacji.

Zapisz dane ramy

Jeśli chcesz zapisać zestaw danych o ramach na późniejsze przeglądanie (lub do udostępnienia z kimś innym), użyj menu Eksportuj .Silnik zapisuje dane ramy do pliku o nazwie microprofile-<date>-<time>.html w katalogu logów Roblox.

  • Na Windows sprawdź %LOCALAPPDATA%\Roblox\logs.

    Jeśli używasz aplikacjaUniversal Windows Platform (UWP), sprawdź \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.

  • Na macOS sprawdź ~/Library/Logs/Roblox.

Te pliki HTML używają tej samej interfejsu użytkownika opartej na witrynie jako połączenia na żywo dla urządzeń mobilnych i zrzutów serwera.

Profile mobilnych urządzeń

Aby uzyskać dostęp do mikroprofilera z mobilnego klienta, urządzenie mobilne musi być podłączone do tej samej sieci jak maszyna rozwojowa .

Włącz MicroProfilera w menu Ustawienia urządzeniemobilnego. Po jego włączeniu menu wyświetla adres IP i numer portu.

A picture of the Settings menu on mobile, showing how to enable the MicroProfiler.

Na przykład, w powyższym przykładzie adres to 192.168.1.166 i port to 1338.Z komputera na tej samej sieci przejdź do http://192.168.1.166:1338 w celu uzyskania wersji opartej na webie interfejsu użytkownika MicroProfiler.

The MicroProfiler web view.

Profiluj serwer

Oprócz standardowego klienta MicroProfiler możesz wykonać krótkie kopie działalności serwera za pomocą serwerowego MicroProfiler.

  1. W doświadczeniu, dla którego masz uprawnienia do edytowania, otwórz konsolę programisty za pomocą CtrlAltF9 .

  2. W menu rozwijanym wybierz Mikroprofilownik .

  3. W sekcji ServerProfiler , określ liczbę klatek na sekundę (maksymalnie 60) i liczbę sekund do profilowania (maksymalnie 4).

  4. Kliknij Rozpocznij rejestrację .

    The Developer Console MicroProfiler screen.

    Po kilku sekundach konsola dla programistów dostarcza ścieżkę do pliku, który jest tą samą ścieżką, co standardowy dump .

Użyj interfejsu webowego

ogólnerzecz biorąc, interfejs webowy MicroProfiler działa podobnie do szczegółowego trybu, ale ma kilka dodatkowych funkcji:

  • Oprócz filtrowania według grupamożesz filtrować według wątku.

  • Użyj CtrlF / F aby przejść do wystąpienia zadania, które zajmuje najwięcej czasu w dumpie.Na przykład, computeLightingPerform uruchamia się w każdym ramie.Jeśli szukasz go w dumpie z 128 ramami, możesz przejść do ramy, w której zajęło najdłużej ukończenie.

  • Użyj menu promieniowania rentgenowskiego , aby włączyć lub wyłączyć kolorowanie pamięci przydziału.

    The MicroProfiler web view with x-ray enabled.
    • Lżejsze ramki w grafice głównej paska wskazują na wyższą alokację pamięci.
    • Lżejsze części paska podglądu i lżejsze etykiety na osi czasu wskazują na części ramy z wyższą alokacją pamięci.
    • W trybie rentgena naciśnij C, aby pokazać całkowitą wielkość przydziałów pamięci, a nie liczbę przydziałów.
  • Użyj menu Eksport , aby wyeksportować wykres płomieni procesora lub pamięci, wyspecjalizowaną wizualizację, która zbiera wszystkie stosy wezwania zawarte w dumpie, utrzymuje hierarchię rodzica i dziecka oraz dostosowuje ich rozmiar w zależności od czasu trwania.Grafy płomieni są szczególnie przydatne do identyfikacji zadań, które nie zajmują szczególnie dużo czasu na wykonanie (a zatem są trudne do zauważenia), ale uruchamiane są tak często, że ich czas przetwarzania staje się znaczący.

    The MicroProfiler flame graph in the web UI.

    Możesz także tworzyć wykresy płomieniowe w Studio, choć tylko dla skryptów (czas wykonania i alokacje pamięci).W porównaniu do grafów płomieniowych opartych na witrynie, te w Studio są od góry do dołu, a nie od dołu, i wspierają dramatycznie dłuższe czasy rejestracji.

    The MicroProfiler flame graph in Studio.
  • Przeciągnij i upuść drugi plik wykopu do interfejsu web, aby wygenerować wykres płomieni różnic, który może pomóc ci zidentyfikować ulepszenia lub regresje wydajności twojego doświadczenia z czasem.Kliknij Połącz i porównaj , aby eksportować nowy plik HTML.

    The MicroProfiler diff flame graph builder showing the left and right sides.

    Grafika płomieni różnicowych podkreśla wysyp (lewo lub prawo), który zużywa więcej CPU lub pamięci, z jaśniejszymi kolorami wskazującymi na większą różnicę.

    The MicroProfiler diff flame graph.