Profiler di Script

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

Profiler di Script è uno strumento all'interno della Console di Sviluppo che consente di registrare sessioni di profiling di tutti gli script in esecuzione e visualizzare i loro costi di tempo CPU con impostazioni di registrazione e visualizzazione personalizzate. Può registrare tutti i tipi di chiamate di funzione, comprese le funzioni Luau, le chiamate ai metodi e gli accessi alle proprietà. Questo strumento è utile per identificare gli script che occupano le maggiori risorse CPU e che rallentano le prestazioni.

Registrare sessioni di profiling

Prima di registrare, è necessario selezionare l'ambiente di registrazione da:

  • Client (Predefinito) — Registra script lato client, inclusi LocalScripts e Scripts con RunContext impostato su Client.
  • Server — Registra script lato server, inclusi Scripts con RunContext impostato su Server o Legacy. Il Profiler di Script cancella tutti i dati raccolti dal lato server alla fine di ogni sessione.

Puoi anche impostare le seguenti opzioni di registrazione:

ComportamentoOpzioniPredefinitoDescrizione
Frequenza1000 volte al secondo (1 KHz)
10.000 volte al secondo (10 KHz)
1 KHzLa frequenza di 10 KHz ha una precisione maggiore, poiché il Profiler di Script potrebbe non registrare le chiamate API che vengono eseguite più frequentemente della frequenza selezionata, ma ha anche un costo di prestazioni più elevato.
Durata della sessione1 minuto
5 minuti
10 minuti
Manuale
ManualeL'opzione manuale richiede di interrompere la registrazione manualmente.
Comportamento di polling in tempo realeAttivato
Disattivato
DisattivatoQuesto comportamento interroga e aggiorna i dati di profiling ogni secondo durante una sessione di profiling.

Per registrare una nuova sessione di profiling:

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

    Menu a discesa di tutti gli strumenti della Console di Sviluppo con l'opzione ScriptProfiler evidenziata per la selezione.
  2. Espandi il menu a discesa client-server per selezionare Client o Server.

    Menu a discesa con opzioni Client e Server per la selezione.
  3. (Opzionale) Seleziona la casella Live per abilitare il comportamento di polling in tempo reale.

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

  5. Fai clic su Start per iniziare la sessione di profiling. Se hai impostato una durata, il Profiler di Script visualizza un timer di countdown con il tempo rimanente nella sessione.

  6. Fai clic su Stop o aspetta che la registrazione finisca per visualizzare i dati di profiling.

Leggere i dati di profiling

Dopo che una sessione si ferma, il Profiler di Script genera una tabella che mostra quanto tempo costa ogni chiamata di funzione in tempo CPU. La tabella ordina le chiamate di funzione dal maggior tempo speso al minor tempo speso, e consente di cercare funzioni specifiche per nome. Fornisce le seguenti due visualizzazioni:

  • Callgraph (Predefinito): Classifica e visualizza le chiamate di funzione in una struttura ad albero basata sui compiti del frame. Questa visualizzazione mostra ogni categoria di compito come nodi sotto lo stesso nodo radice e consente di espanderli per visualizzare le funzioni. Puoi anche passare il mouse su qualsiasi nodo nell'albero per visualizzare le informazioni su file e riga. Ad esempio, Stepped/CameraInput/<anonimo> potrebbe rivelare Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125. Esempio di visualizzazione callgraph di una sessione di profiling.
  • Funzioni: Elenca tutte le funzioni senza classificarle per compiti. Esempio di visualizzazione funzioni di una sessione di profiling.

Puoi anche selezionare tra le seguenti opzioni di visualizzazione per adattare le tue esigenze di debug:

NomeOpzioniPredefinitoDescrizione
UnitàMillisecondi (ms)
Percentuale (%)
msVisualizza il tempo speso su ogni chiamata API in millisecondi o in percentuale del totale della sessione di registrazione.
MediaDisattivato
1 secondo
1 minuto
5 minuti
10 minuti
DisattivatoCalcola il tempo medio speso su ogni chiamata API in base al valore selezionato. Se selezioni un'opzione che è più lunga della durata della sessione, il Profiler di Script estrae la durata della sessione per calcolare la media. Ad esempio, puoi selezionare l'opzione da 5 minuti per una sessione da 1 minuto per vedere il valore medio atteso se esegui il codice per 5 minuti.

Esportare i dati di profiling

Il Profiler di Script consente di esportare i dati di profiling registrati come file JSON. Per esportare i dati registrati dopo una sessione di profiling:

  1. Nella finestra del Profiler di Script, fai clic su Export.

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

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

    Esempio di finestra di esportazione.

Il file JSON esportato include i seguenti campi:

  • Versione: Il numero di versione.
  • SessionStartTime: Un timestamp in millisecondi che registra l'inizio della sessione.
  • SessionEndTime: Un timestamp in millisecondi che registra la fine della sessione.
  • Categories: Un array delle categorie di compiti del frame registrati nella sessione di profiling. Ogni voce include:
    • Name: Il nome di ciascuna categoria di compito del frame.
    • NodeId: L'identificatore unico di una categoria di compito (nodo). È un indice basato su 1 nell'array Nodes. Ad esempio, puoi cercare il nodo con il NodeId di 123 recuperando il 123° elemento in Nodes.
  • Nodes: Un array di nodi registrati nella sessione di profiling. Ogni voce include:
    • TotalDuration: 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 dei nodi.
  • Functions: Un array di funzioni registrate nella sessione di profiling.
    • TotalDuration: La quantità di tempo che la funzione costa in tempo CPU in microsecondi.
    • Name: Il nome della funzione, se disponibile.
    • Source: La fonte della funzione, se disponibile.
    • Line: Il numero di riga della funzione, se disponibile.
    • Flags: Un campo bit che indica l'ambiente di esecuzione specifico della funzione. Attualmente può avere i seguenti valori:
      • 0: Il bit 0 rappresenta IsNative per l'esecuzione sotto Native CodeGen.
      • 1: Il bit 1 rappresenta IsPlugin per l'esecuzione come parte di un plugin.
Esempio di dati di profiling 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}
]
}
© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.