Perfilador Micro

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

O MicroProfiler é uma ferramenta de otimização de desempenho e solução de problemas disponível no Roblox Studio e no cliente Roblox.Ele fornece informações de tempo detalhadas para agendador de tarefas tarefas chamadas tags .

  • Para uma lista de tarefas comuns, consulte a referência da etiqueta .
  • Para um exemplo passo a passo de uso do MicroProfiler para identificar um problema de desempenho, veja o MicroProfiler walkthrough.

Noções básicas de MicroProfiler

Para abrir o MicroProfiler, pressione CtrlAltF6 ( F6 ) no Studio ou no cliente.Você também pode usar o menu de configurações no cliente.

Quando aberto, uma barra de menu é visível na parte superior da janela de visualização 3D.No modo padrão, um gráfico de barra em movimento mostra o tempo usado em cada quadro do Programador de Tarefas.

The Microprofiler frame graph, showing blue frames and detailed frame information.

Barras devem estar geralmente ao redor do meio do gráfico, mas você pode ver picos repentinos (aumentos rápidos de valores).Os picos indicam que mais tempo foi gasto para executar alguma tarefa, geralmente devido a um aumento da carga de trabalho.Por instância, criar muitas peças móveis requer mais trabalho da simulação de física, que, em seguida, precisa de mais tempo para processar movimento e contatos de peças.A seguinte imagem mostra um exemplo de um pico:

The Microprofiler with several bars higher than others.

Para pausar a gravação de quadros, pressione CtrlP ( P ) ou clique em Pause na barra de menus.Enquanto pausado, uma linha do tempo aparece e você pode navegar por quadros clicando ou arrastando no gráfico.

Para um resumo completo das várias visualizações e como navegar pela interface do MicroProfiler, veja modos do MicroProfiler.

Subprocessos

Como muitos programas, o Roblox usa vários subprocessos para executar várias sequências de tarefas ao mesmo tempo.No MicroProfiler modo detalhado, você pode ver rótulos para cada subprocesso à esquerda.

The lefthand side of the Microprofiler detailed view, with rows for threads.

Existem três tipos principais de subprocesso:

  • Principal/Renderizar : Talvez de forma não intuitiva, execute na CPU.Processa a entrada, Humanoids , animações/tweening, propriedade de física, som e resumes de scripts de espera.Atualiza também as interfaces do Studio e coordena os outros subprocessos.

  • Trabalhador ("Trabalhador RBX": Ajuda o thread principal com rede, física e busca de caminho.Devido ao número de núcleos em CPUs modernas, você provavelmente tem muitos subprocessos de trabalho, a maioria dos quais está em um estado de sono a qualquer momento.

  • Renderizar ("GPU"): Segue uma lógica de "preparar, executar, apresentar": Comunica-se com a unidade de processamento gráfico (GPU) do dispositivo.

    • Prepare: Informações do subprocesso principal são usadas para atualizar modelos de renderização.
    • Realizar: Emite comandos de renderização, incluindo interfaces 2D.
    • Presente: Sincroniza com a GPU.

Perfis personalizados

Se seus scripts estiverem executando tarefas complicadas, você pode perfilar partes críticas do código para garantir que elas não estejam levando muito tempo.Envolva o código em debug.profilebegin() e debug.profileend() para definir o tempo de tudo feito entre essas chamadas de função e criar uma etiqueta na linha do tempo do MicroProfiler.

HardWorkScript

debug.profilebegin("Hard Work")
-- Código para ser perfilado
debug.profileend()
A custom label on the detailed view of the MicroProfiler.

Há uma quantidade limitada de memória disponível para rótulos do MicroProfiler.Se esse memória acabar, rótulos de perfis personalizados podem não aparecer como um nome significativo na linha do tempo.Use menos rótulos para evitar esse problema.Se você não precisar mais de perfilar uma seção de seu código, comente ou remova chamadas para essas funções.

Exemplo

O exemplo de código abaixo conecta uma função falsa ao evento RunService.PreSimulation, que é executado a cada quadro.Qualquer coisa feita isso frequentemente deve ser executada com a maior eficiência possível, então essa função é um bom candidato para perfis.


local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- Exemplo de trabalho duro: trocar duas variáveis 200.000 vezes
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)

Quando você executa a experiência e pausa o MicroProfiler ( CtrlP ou P ), a etiqueta personalizada é visível sob a etiqueta / rótulo gameStepped .

Many labels on the MicroProfiler, with a custom label taking up the majority of the processing time.

A partir da duração na linha do tempo, você pode dizer que a função está usando muito tempo de processamento em comparação com outras operações.

Salvar dados de quadro

Se você quiser salvar um conjunto de dados de quadro para revisão posterior (ou para compartilhar com outra pessoa), use o menu Descarte .O motor salva os dados do quadro em um arquivo chamado microprofile-<date>-<time>.html no diretório de registros do Roblox.

  • On Windows, verifique %LOCALAPPDATA%\Roblox\logs .

    Se você usar o aplicativo da Plataforma de Janelas Universais (UWP), verifique \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\.

  • No macOS, verifique ~/Library/Logs/Roblox .

Estes arquivos HTML usam a mesma interface baseada na web como a conexão ao vivo para dispositivos móveis e dumps de servidor.

Dispositivos móveis de perfil

Para acessar o MicroProfiler a partir do cliente móvel, seu dispositivo móvel deve estar conectado à mesma rede como sua máquina de desenvolvimento .

Ative o MicroProfiler no menu Configurações do dispositivo móvel. Depois de ativá-lo, o menu mostra um endereço IP e um número de porta.

A picture of the Settings menu on mobile, showing how to enable the MicroProfiler.

Por exemplo, na captura de tela acima, o endereço é 192.168.1.166 e o porto é 1338.De um computador na mesma rede, navegue para http://192.168.1.166:1338 para uma versão baseada na web da interface do usuário MicroProfiler.

The MicroProfiler web view.

Perfil do servidor

Além do cliente padrão MicroProfiler, você pode fazer dumps breves da atividade do servidor usando o MicroProfiler do servidor.

  1. Em uma experiência para a qual você tem permissões de edição, abra o Console de Desenvolvedor com CtrlAltF9 .

  2. No menu suspenso, selecione MicroProfiler .

  3. Na seção Perfilador de Servidor , especifique o número de quadros por segundo (máximo 60) e o número de segundos para perfilar (máximo 4).

  4. Clique em Iniciar Gravar .

    The Developer Console MicroProfiler screen.

    Após alguns segundos, o Console do Desenvolvedor fornece o caminho para o arquivo, que é o mesmo caminho de um dump padrão .

Use a interface da web

Em geral, a interface da web do MicroProfiler funciona de forma semelhante ao modo detalhado, mas tem alguns recursos adicionais:

  • Além de filtrar por grupo, você pode filtrar por Subprocesso.

  • Use CtrlF / F para saltar para a ocorrência de uma tarefa que ocupa a maior parte do tempo no descarregar.Por exemplo, computeLightingPerform corre em todos os quadros.Se você pesquisar por ele em um dump com 128 quadros, você pode pular para o quadro onde demorou mais para concluir.

  • Use o menu Raio-X para habilitar ou desabilitar a codificação de cores para a alocação de memória.

    The MicroProfiler web view with x-ray enabled.
    • Arcos mais leves dentro do gráfico da barra principal indicam maior alocação de memória.
    • As porções mais leves da barra de pré-visualização e rótulos mais leves na linha do tempo indicam porções do quadro com maior alocação de memória.
    • No modo de raio-X, pressione C para mostrar o tamanho total das alocações de memória em vez do número de alocações.
  • Use o menu Exportar para exportar um gráfico de chamas de CPU ou memória, uma visualização especializada que agrega todas as pilhas de chamadas incluídas no descarregar, mantém a hierarquia pai-filho e as dimensiona de acordo com a duração.Gráficos de chamas são especialmente úteis para identificar tarefas que não levam muito tempo para serem executadas (e, portanto, são difíceis de notar), mas são executadas com tanta frequência que seu tempo de processamento se torna significativo.

    The MicroProfiler flame graph in the web UI.

    Você também pode criar gráficos de chamas no Studio, embora apenas para scripts (tempo de execução e alocações de memória).Comparado aos gráficos de chamas baseados na web, os do Studio são de cima para baixo, ao invés de de baixo para cima, e suportam tempos de captura dramaticamente mais longos.

    The MicroProfiler flame graph in Studio.
  • Arraste e solte um segundo arquivo de dump na interface da web para gerar um gráfico de chamas de diferença, que pode ajudá-lo a identificar melhorias ou regressões na performance da sua experiência ao longo do tempo.Clique em Combinar e Comparar para exportar um novo arquivo HTML.

    The MicroProfiler diff flame graph builder showing the left and right sides.

    O gráfico de chamas de diferença destaca o dump (esquerda ou direita) que consome mais CPU ou memória, com cores mais brilhantes indicando uma diferença maior.

    The MicroProfiler diff flame graph.