Profilatore di script

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Profilatore di script è uno strumento all'interno della Console per sviluppatori che ti consente di registrare sessioni di profilazione di tutti gli script in esecuzione e visualizzare i costi del tempo della CPU con impostazioni di registrazione e visualizzazione personalizzate.Può registrare tutti i tipi di chiamate di funzione, incluse le funzioni Luau, le chiamate metodiche e gli accessi alle proprietà.Questo strumento è utile per identificare gli script che occupano la maggior parte delle risorse di CPU e rallentano le Prestazione.

Registra sessioni di profilazione

Prima di registrare, devi selezionare l'ambiente di registrazione da:

  • Cliente (Predefinito) — Registra gli script lato client, inclusi LocalScripts e Scripts con RunContext impostato su Client .
  • Server — Registra gli script lato server, tra cui Scripts con RunContext impostato su Server o Legacy .Il profilatore di script ripulisce tutti i dati lato server raccolti alla fine di ogni Sessione.

Puoi anche impostare le seguenti opzioni di registrazione:

ComportamentoOpzioniBasilareDescrizione
Frequenza1000 volte al secondo (1 KHz)10,000 volte al secondo (10 KHz)1 KHzLa frequenza 10 KHz ha una precisione maggiore, poiché lo script profiler potrebbe non ricevere le chiamate API che vengono eseguite più frequentemente della frequenza selezionata, ma ha anche un costo di prestazioni più elevato.
Durata della sessione1-minute5-minute10-minuteManualeManualeL'opzione manuale richiede che tu interrompa la registrazione manualmente.
Comportamento di voto dal vivoSuOffDisattivatoQuesto comportamento rileva e aggiorna i dati di profilazione ogni secondo durante una Sessionedi profilazione.

Per registrare una nuova Sessionedi profilazione:

  1. Espandi il menu a discesa degli strumenti per selezionare ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Espandi il menu a discesa client-server per selezionare Client o Server .

    Dropdown menu with Client and Server options for selection.
  3. (Opzionale) Controlla la casella di controllo Live per abilitare il comportamento di voto dal vivo.

  4. (Opzionale) Seleziona Freq e Time per scegliere la frequenza di registrazione e la durata della sessione se non vuoi usare i valori predefiniti.

  5. Fai clic su Inizia per iniziare la Sessionedi profilazione.Se impostate una durata, lo script profilatore visualizza un timer di conto alla rovescia con il tempo rimanente nella Sessione.

  6. Fai clic su Stop o attendi fino alla fine della registrazione per visualizzare i dati di profilazione.

Leggi i dati di profilazione

Dopo che una sessione si ferma, lo script profilatore genera una tabella che mostra quanto tempo costa ogni chiamata di funzione in tempo di CPU.La funzione di ordinamento della tabella classifica le chiamate delle funzioni più spese nel tempo a quelle meno spese nel tempo e ti consente di cercare funzioni specifiche per il loro nome.Fornisce le seguenti due viste:

  • Callgraph (Predefinito): Classifica e visualizza le chiamate di funzione in una struttura a albero in base alle attività del quadro.Questa vista visualizza ogni categoria di compito come nodi sotto lo stesso root e ti consente di espanderli per visualizzare le funzioni.Puoi anche passare il mouse su qualsiasi nodo nell'albero per visualizzare le informazioni sul file e sulla linea.Ad esempio, Stepped/CameraInput/<anonymous> potrebbe rivelare Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 . Example callgraph view of a profiling session.
  • Funzioni : Elenca tutte le funzioni senza categorizzarle per compiti. Example functions view of a profiling session.

Puoi anche selezionare dalle seguenti opzioni di visualizzazione per personalizzare le tue esigenze di debug:

NomeOpzioniBasilareDescrizione
UnitàMillisecondi (ms)Percentuale (%)msMostra il tempo speso per ciascuna chiamata API in millisecondi o percentuali della Sessionedi registrazione totale.
MezzoOff1-second1-minuto5-minuto10-minutoDisattivatoCalcola il tempo medio speso per ogni chiamata API dal valore selezionato.Se selezioni un'opzione che è più lunga della durata della sessione, il profilatore di script estrapola la durata della sessione per calcolare la media.Ad esempio, puoi selezionare l'opzione 5 minuti per una sessione di 1 minuto per vedere il valore medio atteso se esegui il codice per 5 minuti.

Esporta 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:

  1. Nella finestra Profilatore di script, fai clic su Esporta .

  2. Nella finestra di esportazione, seleziona la sessione di profilazione che vuoi esportare. Rinomina il nome del file predefinito se vuoi impostare un nome personalizzato.

  3. Fai clic su Esporta per salvare il file JSON.

    Example export window.

Il file JSON esportato include i seguenti campi:

  • Versione : Il numero di versione.
  • SessionStartTime : Un timestamp in millisecondi che registra l'ora di inizio della sessione.
  • SessionEndTime : Un timestamp in millisecondi che registra il tempo di fine sessione.
  • Categorie : Un array di categorie di compito del quadro registrato nella Sessionedi profilazione. Ogni entry include:
    • Nome : Il nome di ogni categoria di task di frame.
    • NodeId : L'identificatore univoco di una categoria di compiti ( nodo ).È un indice basato su 1 nell'vettoreNodes.Ad esempio, puoi recuperare il nodo con il NodeId di 123 recuperando il 123° elemento in Nodes .
  • Nodi : Un array di nodi registrati nella Sessionedi profilazione. Ogni entry include:
    • Durata totale : La quantità di tempo che il nodo costa in tempo di CPU in microsecondi.
    • FunctionIds : Un array di identificatori unici delle funzioni.
    • NodeIds : Un array di ID di nodo.
  • Funzioni : Un array di funzioni registrate nella Sessionedi profilazione.
    • Durata totale : La quantità di tempo che la funzione costa in tempo di 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 : Un campo bit che indica qualsiasi Ambientedi esecuzione specifico della funzione. Attualmente può avere i seguenti valori:
      • 0 : Il bit 0 rappresenta IsNative per l'esecuzione sotto Native CodeGen.
      • 1 : Il 1° bit 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}
]
}