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 .
- Aby uzyskać listę powszechnych zadań, odwołaj się do tagu odniesienia do tagu.
- Aby uzyskać krok po kroku przykład użycia mikroprofilera do zidentyfikowania problemu wydajności, zobacz przewodnik po mikroprofilera.
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ń.

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:

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.

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 profilowaniadebug.profileend()

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 .

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.

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.

Profiluj serwer
Oprócz standardowego klienta MicroProfiler możesz wykonać krótkie kopie działalności serwera za pomocą serwerowego MicroProfiler.
W doświadczeniu, dla którego masz uprawnienia do edytowania, otwórz konsolę programisty za pomocą CtrlAltF9 .
W menu rozwijanym wybierz Mikroprofilownik .
W sekcji ServerProfiler , określ liczbę klatek na sekundę (maksymalnie 60) i liczbę sekund do profilowania (maksymalnie 4).
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.
- 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.
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.
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.
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ę.