Profiler skryptów

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

Profiler skryptów to narzędzie w Konsoli Dewelopera, które pozwala na rejestrowanie sesji profilowania wszystkich uruchomionych skryptów oraz przeglądanie ich kosztów czasu CPU z niestandardowymi ustawieniami nagrywania i wyświetlania. Może rejestrować wszystkie typy wywołań funkcji, w tym funkcje Luau, wywołania metod i dostęp do właściwości. To narzędzie jest pomocne w identyfikacji skryptów, które wykorzystują najwięcej zasobów CPU i spowalniają wydajność.

Rejestruj sesje profilowania

Przed rozpoczęciem nagrywania musisz wybrać środowisko nagrywania:

  • Klient (domyślnie) — Rejestruje skrypty po stronie klienta, w tym LocalScripts oraz Scripts z RunContext ustawionym na Client.
  • Serwer — Rejestruje skrypty po stronie serwera, w tym Scripts z RunContext ustawionym na Server lub Legacy. Profiler skryptów usuwa wszystkie zebrane dane po stronie serwera na końcu każdej sesji.

Możesz także ustawić poniższe opcje nagrywania:

ZachowanieOpcjeDomyślnieOpis
Częstotliwość1000 razy na sekundę (1 KHz)
10 000 razy na sekundę (10 KHz)
1 KHzCzęstotliwość 10 KHz ma wyższą precyzję, ponieważ Profiler skryptów może nie wykrywać wywołań API, które są wykonywane częściej niż wybrana częstotliwość, ale wiąże się z wyższym kosztem wydajności.
Długość sesji1 minuta
5 minut
10 minut
Ręcznie
RęcznieOpcja ręczna wymaga od Ciebie ręcznego zatrzymania nagrywania.
Zachowanie w czasie rzeczywistymWłączone
Wyłączone
WyłączoneTo zachowanie ankietuje i odświeża dane profilowania co sekundę podczas sesji profilowania.

Aby zarejestrować nową sesję profilowania:

  1. Rozwiń rozwijane menu narzędzi, aby wybrać ScriptProfiler.

    Menu rozwijane wszystkich narzędzi Konsoli Dewelopera z wyróżnioną opcją ScriptProfiler do wyboru.
  2. Rozwiń menu rozwijane klient-serwer, aby wybrać Klient lub Serwer.

    Menu rozwijane z opcjami Klient i Serwer do wyboru.
  3. (Opcjonalnie) Zaznacz pole wyboru Na żywo, aby włączyć zachowanie ankiety w czasie rzeczywistym.

  4. (Opcjonalnie) Wybierz Częstotliwość i Czas, aby wybrać częstotliwość nagrywania i długość sesji, jeśli nie chcesz używać wartości domyślnych.

  5. Kliknij Rozpocznij, aby rozpocząć sesję profilowania. Jeśli ustawisz czas trwania, Profiler skryptów wyświetli licznik odliczający pozostały czas w sesji.

  6. Kliknij Zatrzymaj lub poczekaj, aż nagrywanie się zakończy, aby wyświetlić dane profilowania.

Odczytaj dane profilowania

Po zakończeniu sesji, Profiler skryptów generuje tabelę pokazującą, ile czasu każde wywołanie funkcji kosztuje w czasie CPU. Tabela sortuje wywołania funkcji od najdłużej do najkrócej trwających, a także pozwala na wyszukiwanie konkretnych funkcji po ich nazwie. Dostarcza następujące dwa widoki:

  • Callgraph (domyślnie): Kategoryzuje i wyświetla wywołania funkcji w strukturze drzewiastej na podstawie zadań ramki. Ten widok wyświetla każdą kategorię zadań jako węzły pod tym samym korzeniem i pozwala na ich rozwinięcie, aby zobaczyć funkcje. Możesz także najechać kursorem na dowolny węzeł w drzewie, aby zobaczyć informacje o pliku i linii. Na przykład Stepped/CameraInput/<anonymous> może ujawnić Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125. Przykładowy widok callgraph z sesji profilowania.
  • Funkcje: Wypisuje wszystkie funkcje bez kategoryzacji ich według zadań. Przykładowy widok funkcji z sesji profilowania.

Możesz również wybrać spośród następujących opcji wyświetlania, aby dostosować swoje potrzeby debugowania:

NazwaOpcjeDomyślnieOpis
JedenMilisekundy (ms)
Procenty (%)
msWyświetla czas spędzony na każdym wywołaniu API w milisekundach lub procentach całkowitej sesji nagrywania.
ŚredniaWyłączone
1 sekunda
1 minuta
5 minut
10 minut
WyłączoneOblicza średni czas spędzony na każdym wywołaniu API według wybranej wartości. Jeśli wybierzesz opcję, która jest dłuższa niż długość sesji, Profiler skryptów ekstrapoluje długość sesji, aby obliczyć średnią. Na przykład, możesz wybrać opcję 5 minut dla sesji 1-minutowej, aby zobaczyć oczekiwaną wartość średnią, jeśli uruchomisz kod przez 5 minut.

Eksportuj dane profilowania

Profiler skryptów umożliwia eksportowanie zarejestrowanych danych profilowania jako pliku JSON. Aby wyeksportować zarejestrowane dane po sesji profilowania:

  1. W oknie Profilera skryptów kliknij Eksportuj.

  2. W oknie eksportu wybierz sesję profilowania, którą chcesz wyeksportować. Zmień domyślną nazwę pliku, jeśli chcesz ustawić własną nazwę.

  3. Kliknij Eksportuj, aby zapisać plik JSON.

    Przykładowe okno eksportu.

Wyeksportowany plik JSON zawiera następujące pola:

  • Wersja: Numer wersji.
  • SessionStartTime: Znak czasowy w milisekundach, który rejestruje czas rozpoczęcia sesji.
  • SessionEndTime: Znak czasowy w milisekundach, który rejestruje czas zakończenia sesji.
  • Kategorie: Tablica kategorii zadań ramki zarejestrowanych w sesji profilowania. Każdy wpis zawiera:
    • Nazwa: Nazwa każdej kategorii zadań ramki.
    • NodeId: Unikalny identyfikator kategorii zadań (węzeł). Jest to indeks oparty na 1 w tablicy Nodes. Na przykład, możesz znaleźć węzeł o NodeId równym 123, pobierając 123. element w Nodes.
  • Węzły: Tablica węzłów zarejestrowanych w sesji profilowania. Każdy wpis zawiera:
    • TotalDuration: Ilość czasu, którą węzeł kosztuje w czasie CPU w mikrosekundach.
    • FunctionIds: Tablica unikalnych identyfikatorów funkcji.
    • NodeIds: Tablica identyfikatorów węzłów.
  • Funkcje: Tablica funkcji zarejestrowanych w sesji profilowania.
    • TotalDuration: Ilość czasu, który funkcja kosztuje w czasie CPU w mikrosekundach.
    • Nazwa: Nazwa funkcji, jeśli dostępna.
    • Źródło: Źródło funkcji, jeśli dostępne.
    • Linia: Numer linii funkcji, jeśli dostępny.
    • Flagi: Pole bitowe, które wskazuje na jakiekolwiek konkretne środowisko wykonawcze funkcji. Obecnie może mieć następujące wartości:
      • 0: Zerowa pozycja reprezentuje IsNative dla wykonania w ramach Native CodeGen.
      • 1: Pierwsza pozycja reprezentuje IsPlugin dla wykonania jako część wtyczki.
Przykładowe wyeksportowane dane profilowania

{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Równoległe Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.