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

Profilowanie skryptów to narzędzie w Konsoli Dewelopera, które pozwala na rejestrowanie sesji profilowania wszystkich działających skryptów oraz przeglądanie ich kosztów czasowych CPU z niestandardowymi ustawieniami rejestracji 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 zajmują najwięcej zasobów CPU i spowalniają wydajność.

Rejestracja sesji profilowania

Przed rozpoczęciem rejestracji musisz wybrać środowisko rejestracji z:

  • Klient (Domyślnie) — Rejestruje skrypty po stronie klienta, w tym LocalScripts i Scripts z RunContext ustawionym na Client.
  • Serwer — Rejestruje skrypty po stronie serwera, w tym Scripts z RunContext ustawionym na Server lub Legacy. Profilowanie skryptów czyści wszystkie zebrane dane po stronie serwera na koniec każdej sesji.

Możesz również ustawić następujące opcje rejestracji:

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ż Profilowanie skryptów może nie uchwycić wywołań API, które wykonują się częściej niż wybrana częstotliwość, ale ma również wyższy koszt wydajności.
Długość sesji1 minuta
5 minut
10 minut
Ręcznie
RęcznieOpcja ręczna wymaga, abyś ręcznie zatrzymał rejestrację.
Zachowanie na żywoWłączone
Wyłączone
WyłączoneTo zachowanie odświeża dane profilowania co sekundę podczas sesji profilowania.

Aby zarejestrować nową sesję profilowania:

  1. Rozwiń rozwijane menu narzędzi, aby wybrać ProfilowanieSkryptów.

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

    Menu rozwijane z opcjami Klient i Serwer do wyboru.
  3. OPCJONALNE
    Zaznacz pole Na żywo, aby włączyć zachowanie odświeżania na żywo.

  4. OPCJONALNE
    Wybierz Częstotliwość i Czas, aby wybrać częstotliwość rejestracji 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, Profilowanie skryptów wyświetli licznik odliczający z pozostałym czasem w sesji.

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

Odczyt danych profilowania

Po zakończeniu sesji Profilowanie 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 spędzonego czasu do najkrótszego, i pozwala na wyszukiwanie konkretnych funkcji po ich nazwie. Oferuje następujące dwa widoki:

  • Callgraph (Domyślnie): Kategoryzuje i wyświetla wywołania funkcji w strukturze drzewa na podstawie zadań ramki. Ten widok wyświetla każdą kategorię zadań jako węzły pod tym samym korzeniem i pozwala na ich rozwijanie, aby zobaczyć funkcje. Możesz również 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 sesji profilowania.
  • Funkcje: Wymienia wszystkie funkcje bez kategoryzowania ich według zadań. Przykładowy widok funkcji sesji profilowania.

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

NazwaOpcjeDomyślnieOpis
JednostkaMilisekundy (ms)
Procenty (%)
msWyświetla czas spędzony na każdym wywołaniu API w milisekundach lub procentach całkowitej sesji rejestracji.
Ś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, Profilowanie 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.

Eksport danych profilowania

Profilowanie skryptów pozwala na eksportowanie zarejestrowanych danych profilowania jako plik JSON. Aby wyeksportować zarejestrowane dane po sesji profilowania:

  1. W oknie Profilowania skryptów kliknij Eksportuj.

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

  3. Kliknij Eksportuj, aby zapisać plik JSON.

    Przykładowe okno eksportu.

Wyeksportowany plik JSON zawiera następujące pola:

  • Wersja: Numer wersji.
  • SessionStartTime: Znacznik czasu w milisekundach, który rejestruje czas rozpoczęcia sesji.
  • SessionEndTime: Znacznik czasu 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ęzła). Jest to indeks oparty na 1 w tablicy Nodes. Na przykład, możesz znaleźć węzeł z 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óry 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 specyficzne środowisko wykonania funkcji. Obecnie może mieć następujące wartości:
      • 0: 0. bit reprezentuje IsNative dla wykonania pod Native CodeGen.
      • 1: 1. bit reprezentuje IsPlugin dla wykonania jako część wtyczki.
Przykładowe wyeksportowane dane profilowania
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Równoległy 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":"Skrypt","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.