Il MicroProfiler è uno strumento di ottimizzazione disponibile in Roblox Studio e nel client Roblox che fornisce informazioni dettagliate sui tempi di esecuzione per le attività chiamate tags .
- Per un elenco di attività comuni, fai riferimento alla Référence de tag .
- Per un esempio passo-passo su come utilizzare il MicroProfiler per identificare un problema di prestazioni, vedi il MicroProfiler Walkthrough .
MicroProfiler Basics
Per aprire il MicroProfiler, premi CtrlAltF6 ( ⌘1> ⌥1> 3> F6 3> ) nel Studio o nel client. Puoi anche usare il menu delle impostazioni nel client.
Quando è aperto, a menu bar è visibile nella parte superiore della finestra3D. Nel modo predefinito, un grafico di barra mobile mostra il tempo usato su ciascuna immagine della Task Scheduler.
Le barre dovrebbero essere generalmente intorno al centro del grafico, ma potresti vedere improvvisi picchi (aumenti rapidi del valore). I picchi indicano che è stato necessario più tempo per eseguire alcune attività, di solito a causa di un aumento del carico di lavoro. Ad esempio, la creazione di molte parti in movimento richiede più lavoro dalla simulazione fisica, che poi richiede più tempo per elaborare il movimento e i contatti delle parti. L'immagine seguente mostra un esempio di uno
Per sospendere la registrazione dei frame, fai clic su CtrlP ( ⌘P ) o fai clic su 2> Pause2> nella barra dei menu. Mentre sei in pausa, viene visualizzata una timeline e puoi navigare attraverso i frame facendo clic o trascinando sulla grafica.
Per un'anteprima completa delle varie visualizzazioni e per navigare nell'interfaccia MicroProfiler, vedi Modalità MicroProfiler.
Thread
Come molti programmi, Roblox utilizza più thread per eseguire più sequenze di attività contemporaneamente. Nel MicroProfiler Modalità dettagliata, puoi vedere le etichette per ciascun thread sulla sinistra.
Ci sono tre tipi principali di thread:
Principale/Render : Forse in modo inintuitivo, viene eseguito sull'architettura del processore. Elabora l'input, Humanoids , animazioni/tweening, proprietà fisica, sonoro e script di attesa. Aggiorna anche le interfacce Studio e coordina gli altri thread.
Worker ("RBX Worker") aiuta il thread principale con networking, fisica e pathfinding. A causa del numero di core in moderni CPU, probabilmente hai molti thread del lavoratore.
Render ("GPU") Segue una logica "prepara, esegui, presenta". Comunica con l'unità di elaborazione grafica (GPU) del Dispositivo.
- Preparazione: Le informazioni dalla thread principale vengono utilizzate per aggiornare i modelli di rendering.
- Esegui comandi di rendering, tra cui interfacce 2D.
- Present: Sincronizza con ilGPU.
Profilazione personalizzata
Se i tuoi script eseguono compiti complessi, puoi profilare le parti critiche del codice per assicurarti che non stanno prendendo troppo tempo. Wrap code in debug.profilebegin() e debug.profileend() to time everything done between those function calls and create a label on the MicroProfiler timeline.
Script del lavoro duro
debug.profilebegin("Hard Work")-- Ecco dove il codice da profilare dovrebbe esseredebug.profileend()
C'è una quantità limitata di memoria disponibile per le etichetta MicroProfiler. Se questa memoria viene utilizzata, le etichette personalizzate profiler potrebbero non apparire come un nome significativo nel timeline. Usa meno etichette per evitare questo problema. Se non hai più bisogno di profilare una sezione del tuo codice, commenta o rimuovi chiamate a queste funzioni.
Esempio
Il codice di esempio seguente connette una funzione dummy alla evento RunService.PreSimulation , che viene eseguita ogni frame. Tutto ciò che viene fatto di solito dovrebbe essere eseguito il più efficientemente possibile, quindi questa funzione è un buon candidato per profilare.
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Esempio di duro lavoro: scambiare due variabili 200.000 volte
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
Quando esegui l'esperienza e fai clic e MicroProfiler ( CtrlP o ⌘0> P0>), la etichetta personalizzata è visibile sotto la 2>gameStepped2> Etichetta.
Dalla sua durata sulla linea del tempo, puoi dire che la funzione sta usando un sacco di tempo di elaborazione rispetto ad altre operazioni.
Salvataggio dei dati di frame
Se vuoi salvare un insieme di dati di frame per una revisione futura (o condividere con qualcun altro), usa il menu Dump . Il motore salva i dati di frame in un file chiamato microprofile-<date>-<time>.html nella cartella Roblox Logs.
- On Windows, check %LOCALAPPDATA%\Roblox\logs .
- Su macOS, controlla ~/Library/Logs/Roblox .
Questi file HTML utilizzano gli stessi UI basati sul web come la live connection for mobile devices e dumps del server.
Profilazione su dispositivi mobili
Per accedere al MicroProfiler dal cliente mobile, il tuo dispositivo mobile deve essere connesso alla rete stessa come la tua macchina di sviluppo.
Abilita il MicroProfiler nel menu Impostazioni del Dispositivomobile. Dopo averlo abilitato, il menu mostra un indirizzo IP e un numero di porta.
Ad esempio, nella schermata sopra, l'indirizzo è 192.168.1.166 e il porto è 1338 . Da un computer sullo stesso network, naviga a http://192.168.1.166:1338 per una versione web-based della interfaccia utente MicroPro
Profilazione del server
Oltre al client standard MicroProfiler, puoi fare brevi dump dell'attività del server utilizzando il server MicroProfiler.
In un'esperienza che hai i permessi di modifica, apri la Developer Console con CtrlAltF9 .
Nel menu a discesa, seleziona MicroProfiler .
Nella sezione ServerProfiler , specifica il numero di frame per secondo (massimo 60) e il numero di secondi per il profilo (massimo 4).
Fai clic su Inizia registrazione .
Dopo pochi secondi, la Developer Console fornisce il percorso al file, che è lo stesso percorso di un dump standard .
Usa l'interfaccia utente web
In Generale, l'interfaccia utente MicroProfiler funziona in modo simile a Modalità dettagliata, ma ha alcune funzionalità aggiuntive:
Oltre a filtrare per Gruppo, puoi filtrare per Filo.
Usa CtrlF / ⌘F per saltare all'avvenimento di un'attività che richiede il maggior tempo nell'scaricare. Ad esempio, 2> computeLightingPerform2> viene eseguito in ogni frame. Se cerchi in unump con 128 frame, puoi saltare all'frame in cui ci vuole più tempo per
Usa il menu X-Ray per abilitare o disabilitare la codifica dei colori per la distribuzione della memoria.
- IFrame più leggeri all'interno della barra di riquadratura principale indicano un'allocazione di memoria più elevata.
- Le parti più chiare della barra di anteprima e le etichettature più chiare sulla timeline indicano le parti dellaFrame con maggiore allocazione della memoria.
- In modalità X-ray, premi C per mostrare la dimensione totale delleallocazioni della memoria piuttosto che il numero di alleazioni.
Usa il menu Esporta per esportare un grafico a fiamma CPU o memoria, una visualizzazione specializzata cheaggrega tutti i call stack inclusi nel scaricare. Il grafico a fiamma è particolarmente utile per identificare le attività che non richiedono particolarmente lungo per essere eseguite (e quindi sono difficili da notare), ma eseguono con una frequenza sufficiente che diventa significativa.
Trascina e fai un doppio file di scarico nella UI web per generare un grafico di fiamma diff, che può aiutarti ad identificare le miglioramenti o i regressi alle prestazioni della tua esperienza nel tempo. Fai clic su Combina e paragona per esportare un nuovo file HTML.
Il grafico a fiamma diffusa evidenzia il dump (a sinistra o a destra) che consuma più CPU o memoria, con colori più luminosi che indicano una maggiore differenza.