Przewodnik po MicroProfilerze

*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.

Ten przewodnik pokazuje, jak używać mikroprofilera, aby znaleźć problematyczny aspekt doświadczenia i zidentyfikować przyczynę korzeniową.Pobierz doświadczenie, Otwórz z pliku w Studio i podążaj dalej.


Zidentyfikuj problem

  1. Po otwarciu doświadczenia w Studio rozpocznij testowanie z F5 lub przyciskiem Rozegraj .

  2. Szybkość klatek wydaje się przyzwoita, ale nie tak gładka, jak powinna być dla doświadczenia tej wielkości i zakresu.Przejdź do zakładki Wygląd i kliknij Podsumowanie pod Statystykami.

    Debug stats summary showing 45 FPS.

    Zauważ, że szybkość klatek jest poniżej 60 klatek na sekundę (strzelanki FPS).

  3. Otwórz mikroprofiler, naciskając CtrlAltF6 ( F6 ).

    The MicroProfiler after opening it.

    Zauważ, że czasy ram są konsekwentne — paski są mniej więcej tej samej wysokości — więc cokolwiek powoduje niską szybkość ram, uruchamia każdą ramę, zamiast uruchamiać ją okazjonalnie i powodować wzrosty czasu ram.

  4. Zatrzymaj mikroprofiler, naciskając CtrlP ( P ).Pauza za pomocą skrótu klawiszowego otwiera tryb szczegółowy.

  5. Kliknij i przeciągnij, aby przesunąć wykres.Zauważ, jak jedna konkretna zadanie w wątkach pracowników wydaje się używać dużo czasu przetwarzania w porównaniu do głównego wątku.Najedź na RunService.Stepped i zobacz, jak długo zajmuje renderowanie.

    Detailed mode with long labels for processes.
  6. Pozostawione paski w czasie trwania wskazują na hierarchię kodu, więc nadal przewijaj niższe i niższe warstwy, aby spróbować zidentyfikować problem.

    On-hover details for various processes, with LocalScript highlighted. On-hover details for various processes, with Raycast highlighted.

    Zauważ etykietę LocalScript, która wskazuje nazwę skryptu, oraz etykietę Raycast, która wskazuje, że problem może być związany z raycastingiem.

Twórz etykiety rozwiązywania problemów

Teraz, gdy mikroprofiler dostarczył punkt wyjścia, możesz rozwiązać problematyczny kod.

  1. Zatrzymaj test odtwarzania i przefiltruj okno Explorer na localscript, aby znaleźć plik.

    A view of filtering in the Explorer window.

    Wyszukiwanie raycast wskazuje, że ta część kodu jest prawdopodobnie winna słabej wykonywaniedoświadczenia:


    local RAYS_PER_SECOND = 1500
    local function onStepped()
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    end
    RunService.Stepped:Connect(onStepped)

    W szczególności możesz zobaczyć, że kod rzuca 1,500 promieni na sekundę w losowych kierunkach.

  2. Aby zweryfikować, czy ta część kodu powoduje opóźnienie renderowania, owiń zawartość funkcji za pomocą debug.profilebegin() i debug.profileend() :


    local function onStepped()
    debug.profilebegin("Raycast Spam")
    for _ = 1, RAYS_PER_SECOND do
    local startPosition = getRandomPosition()
    local endPosition = getRandomPosition()
    local direction = endPosition - startPosition
    Workspace:Raycast(
    startPosition,
    endPosition
    )
    end
    debug.profileend()
    end

Potwierdź i napraw problem

  1. Rozpocznij testowanie doświadczenia i ponownie otwórz mikroprofiler.

  2. Zobacz, jak teraz MicroProfiler wyświetla niestandardową etykietę, wskazującą, że ta funkcja była rzeczywiście przyczyną korzeniową.

    MicroProfiler detailed view with 'Raycast Spam' visible.
  3. Zatrzymaj test grania.

  4. Usuń lub skomentuj funkcję onStepped() i połączenie RunService.Stepped:Connect(onStepped).

  5. Ponownie rozpocznij testowanie doświadczenia i ponownie sprawdź podsumowanie statystyk debugowania.

    Debug stats summary showing 60 FPS.

    Zauważ ogromną poprawę szybkości ramki i odpowiadający spadek czasu ramki na wykresie MicroProfiler.