Script Profiler è uno strumento all'interno della Developer Console che ti consente di registrare le sessioni di profilazione di tutti gli script in esecuzione e visualizzare i loro costi di CPU con registrazione personalizzata e impostazioni di visualizzazione. Può registrare tutti i tipi di chiamate di funzione, tra cui le chiamate metodo e le proprietà di accesso. Questo strumento è utile per identificare gli script che occupano le risorse più CPU e rallentano le
Registrazione delle sessioni di profilazione
Prima di registrare, è necessario selezionare l'ambiente di registrazione da:
- Client (Predefinito) — Racchiude gli script lato client, tra cui LocalScripts e Scripts con 0> Class.BaseScript.RunContext|RunContext0> impostato su 3> Enum.RunContext.Client|Client 3> .
- Server — Racchiude gli script lato server, tra cui Scripts con RunContext impostato su 0> Enum.RunContext.Server|Server0> o 3> Enum.RunContext.Legacy|Legacy 3> . Il profiler di scriptcleara tutti i dati lato server raccolti
Puoi anche impostare le seguenti opzioni di registrazione:
Comportamento | Opzioni | Predefinito | Descrizione |
---|---|---|---|
Frequenza | 1000 volte al secondo (1 KHz)10,000 volte al secondo (10 KHz) | 1 GHz | La frequenza di 10 KHz ha una precisione maggiore, poiché lo script profiler potrebbe non rilevare le chiamate API che vengono eseguite con maggior frequenza rispetto alla velocità selezionata, ma ha anche un costo di prestazioni più elevato. |
Lunghezza della sessione | 1-minute5-minute10-minuteManuale | Manuale | L'opzione manuale richiede che tu fermi di registrare manualmente. |
Comportamento di voto dal vivo | OnOff | Disattivato | Questo comportamento raccoglie e aggiorna i dati di profilazione ogni secondo durante una Sessionedi profilazione. |
Per registrare una nuova Sessionedi profilazione:
Apri Console del sviluppatore .
Espandi il menu a discesa degli strumenti per selezionare ScriptProfiler .
Espandi il menu a discesa client-server per selezionare Client o Server .
(Facoltativo) Controlla la casella di controllo Live per abilitare il comportamento di polling live.
(Facoltativo) Seleziona Freq e Time per scegliere la frequenza di registrazione e la durata della sessione se non vuoi usare i valori predefiniti.
Fai clic su Inizia per iniziare la Sessionedi profilazione. Se impostate una durata, Script Profiler visualizza un timer countdown con il tempo rimanente nella Sessione.
Fai clic su Stop o aspetta fino a quando la registrazione finisce per visualizzare i dati di profilazione.
Leggere i dati di profilazione
Dopo che una sessione si è interrotta, Script Profiler genera una tabella che mostra quanto tempo ciascun chiamata funzione costa in tempo CPU. La tabella classifica le chiamate funzione dal più grande tempo speso al meno tempo speso, e consente di cercare specifiche funzioni per il loro nome. Fornisce le seguenti due visualizzazioni:
- Callgraph (Predefinito): Categoriaizza e visualizza le chiamate di funzione in una struttura a albero basata sulle attività di frame. Questa visualizzazione mostra ogni categoria di attività come nodi sotto la stessa radice e ti consente di espandere per visualizzare le funzioni. Puoi anche passare il mouse su qualsiasi nodo nella struttura a al
- Funzioni : Elenca tutte le funzioni senza categorizzarle in base alle attività.
Puoi anche selezionare dalle seguenti opzioni di visualizzazione per personalizzare le tue esigenze di debug:
Nome | Opzioni | Predefinito | Descrizione |
---|---|---|---|
Unità | Millisecondi (ms)Percentage (%) | ms | Mostra il tempo trascorso su ogni chiamata API in millisimi o percentuali della Sessionedi registrazione totale. |
Medio | Off1-second1-minute5-minute10-minute | Disattivato | Calcola il tempo medio speso per ciascuna chiamata API dal valore selezionato. Se selezioni un'opzione che è più lunga della durata della sessione, lo script profiler extrapolerà la durata della sessione per calcolare il valore medio. Ad esempio, puoi selezionare l'opzione di 5 minuti per una sessione di 1 minuto per vedere il valore medio previsto se esegui il codice per 5 minuti. |
Esportazione dei dati di profilazione
Script Profiler ti consente di esportare i dati di profilazione registrati come file JSON. Per esportare i dati registrati dopo una Sessionedi profilazione:
Nella finestra Script Profiler, fai clic su Esporta .
Nella finestra di esportazione, seleziona la sessione di profilazione che vuoi esportare. Rinomina il nome del file predefinito se vuoi impostare un nome personalizzato.
Fai clic su Esporta per salvare il file JSON.
Il file JSON esportato include i seguenti campi:
- Versione : Il numero di versione.
- SessionStartTime : A timestamp in milliseconds that records the session start time.
- SessionEndTime : Un timestamp in millisecondi che registra l'ora di fine sessione.
- Categorie : Un array di categorie di compito registrate nella Sessionedi profilazione. Ogni voce include:
- Nome : il nome di ogni categoria di compito di frame.
- NodeId : L'identificatore unico di una categoria di lavoro (节). È un 1-based index nell'Nodes vettore. Ad esempio, puoi ottenere il nodo con il NodeId di 0> 1230> recuperando l'元素 123 nell' 3> Nodes 3> .
- Nodi : Un array di nodi registrati nella Sessionedi profilazione. Ogni entry include:
- Durata totale : La quantità di tempo che il nodo costa in tempo CPU in microsecondi.
- FunctionIds : Un array di identificatori unici delle funzioni.
- NodeIds : Un array di ID del nodo.
- Funzioni : Un array di funzioni registrate nella Sessionedi profilazione.
- Durata totale della funzione : La quantità di tempo che la funzione costa in tempo CPU in microsecondi.
- Nome : Il nome della funzione, se disponibile.
- Fonte : La fonte della funzione, se disponibile.
- Linea : Il numero di linea della funzione, se disponibile.
- Bandiere : Bit field che indica qualsiasi Ambientedi esecuzione della funzione specifica. Attualmente può avere i seguenti valori:
- 0 : Il bit 0 rappresenta IsNative per l'esecuzione sotto CodeGen nativo.
- 1 : Il bit 1 rappresenta IsPlugin per l'esecuzione come parte di un Collegare.
Esempio di dati di profilazione esportati
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel 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}
]
}