Última atualização em fevereiro de 2020, leitura de 10 minutos 

Otimize o seu jogo com o Profile Analyzer

O que você encontrará nesta página: você aprenderá a usar o Profile Analyzer do Unity para ver o impacto de uma alteração de asset ou código, um trabalho de otimização, uma modificação nas configurações ou uma atualização na versão do Unity. Este artigo se baseia na sessão de Lyndon Homewood na Unite Copenhagen 2019.

Visão geral do Profile Analyzer

Quer saber onde concentrar os esforços de desempenho? Você precisa comparar o desempenho antes e depois de uma alteração? Você tem conhecimento do impacto de uma atualização na versão do Unity sobre o jogo? O Performance Analyzer ajudará a oferecer essa visão geral. 

A ferramenta ajuda você a identificar onde concentrar os esforços e oferece uma maneira de comparar duas capturas de desempenho do Unity e ver o impacto da alteração. A ferramenta oferece representações visuais para ajudar você a entender como as alterações afetam o desempenho. 

O Profile Analyzer agrega e visualiza dados de quadro e marcador de um conjunto de quadros do Unity Profiler para ajudar você a entender o comportamento ao longo de vários quadros, complementando a análise de quadro único já disponível no Unity Profiler.

O Profile Analyzer conduz análise do desempenho da CPU em vários quadros. A ferramenta acompanha estatísticas e visualizações para ajudar você a digerir essas informações rapidamente. Também oferece suporte à Filtragem abrangente, para que possa se aprofundar nas seções de interesse. Você pode usá-la para comparar dois conjuntos de dados ou você pode exportar os dados para análise com outras ferramentas. 

Você pode usar o Profile Analyzer no 2018.4 LTS+ como um pacote, mas também pode baixar e incluir no projeto. Funciona com as versões Unity 5.6 em diante. Para iniciar, acesse Window > Analysis > Profile Analyzer. Em versões mais antigas do Unity, você pode iniciá-lo diretamente do menu Window.

Dicas de perfilagem

Aqui estão algumas dicas de perfilagem para ajudar você a começar a usar o Profile Analyzer: 

  1. Obtenha uma captura representativa e repetível.
  2. Feche todos os outros aplicativos. Você pode usar o Profile.logFile nos scripts em C# para gravar dados de perfil diretamente do jogo em execução, o que significa que você não precisa que o Editor esteja aberto. Ele grava um arquivo .raw que poderá ser carregado no Unity Profiler posteriormente. 
  3. Desative o dimensionamento de desempenho da CPU para que a frequência do clock não sofra alterações, como as configurações Intel SpeedStep ou Turbo Boost.

Análise do desempenho para uma função específica

Se você quiser vem como a chamada de um função afeta o desempenho, use o Unity Profiler para capturar os dados. Depois, você pode usar o botão Pull Data para carregá-los no Profile Analyzer. Ou pode carregar uma captura salva anteriormente. 

Assim que fizer isso, a análise iniciará imediatamente e os dados preencherão o gráfico temporal de quadros. Observe as barras em branco e ciano no gráfico. As barras em branco representam as durações do quadro e as barras em ciano representam os marcadores selecionados atualmente, para que possa ver a contribuição deles para o tempo de quadro. 

Busque marcadores usando filtros. Os detalhes do marcador são atualizados automaticamente para refletir o subconjunto selecionado e, na coluna Count, você verá a quantidade de ocorrências. O gráfico temporal de quadros destaca o marcador. Ao selecionar um marcador, o resumo do marcador também é atualizado. 

 

Localizando quadros representativos

When analyzing performance, you want to make sure that the data you’re looking at is representative. If your data is noisy, it’s easy to ensure that you select an average frame by using the Frame Summary at the top right – just click on the Frame shown as the Median and the Profiler will display the relevant analysis. Or, in the frame time graph, you can right-click and select Select Median Frame

You can also limit your analysis to a selection of frames. All of the statistics you see will be updated to reflect the specific selection. 

Rather than rely on a single data point from a single frame, you can analyze multiple data points by selecting a group of representative frames. If you right-click on the frame time graph and Order by Frame Duration, you can then select a set of frames around the median frame for a representative sample that smooths out some of the noise in your data.

O efeito da alteração de uma configuração do projeto

O Profile Analyzer pode ajudar a determinar a diferença de desempenho ao aplicar uma configuração para todo o projeto, como habilitar trabalhos gráficos. Para usar esse recurso, obtenha uma captura de referência e obtenha outra após as alterações. Execute o jogo, faça a amostragem com o Profiler do Unity, leve a captura para o Profile Analyzer e, depois, leve a segunda captura.

Você poderá ver os resultados das duas capturas lado a lado na seção Frame Summary.

Are you GPU-bound?

Para garantir que o seu desempenho não tenha gargalos, verifique o marcador Gfx.WaitForPresent. Encontre-o digitando Gfx.WaitForPresent na área de filtro. Se o valor da mediana desse marcador for diferente de zero, a CPU estará aguardando a GPU concluir a atividade antes de continuar. 

Você pode observar esse marcador no gráfico temporal de quadros para ver sua contribuição para o tempo de quadro. Se a CPU estiver aguardando a GPU, provavelmente você está limitado à GPU. Dê uma olhada nas ferramentas de perfilagem de GPU para realizar algumas otimizações. 

Noções básicas da interface do Profile Analyzer
Gerenciamento do conjunto de dados

Gerenciamento do conjunto de dados

Você pode gerenciar os dados na seção superior principal da janela Profile Analyzer. Nela você pode abrir o Profiler do Unity, e "Extrair dados" do Profiler do Unity ou carregar um arquivo salvo anteriormente (qualquer versão do Unity). 

Depois de carregar os dados, serão exibidos no gráfico temporal de quadros. Essa é uma região interativa em que você pode selecionar uma gama de amostras; todas as informações de resumo na Tabela de marcadores serão atualizadas automaticamente para refletir a seleção. Você pode acessar opções mais avançadas clicando na seleção com o botão direito do mouse. 

Clique no botão "Save" para alvar os dados de sua análise como um arquivo .pdata. Observe que há duas arquivos para salvar: um arquivo do Profile Analyzer (.pdata) e um arquivo do Profiler (.data ou .raw). Recomendamos salvar ambos no mesmo diretório. 

 

Frame Summary

O Frame Summary exibe os destaques sobre a série temporal de quadros, incluindo mínimo, máximo e mediana, com botões que permitem que você avance para quadros específicos no Profiler do Unity. Essa área também mostra o histograma da distribuição temporal de quadros e o diagrama de caixa. 

tabela do marcador de gráfico de quadro preenchido de visualização única do profile analyzer

Tabela de marcadores

Detalhes de marcadores

Nesta seção, você encontrará a tabela de marcadores dos dados de marcadores do Profiler do Unity, incluindo todas as profundidades de pilha. Os dados do Profiler do Unity para todos os marcadores são agregados para oferecer os tempos da mediana e de outros frames, que também são exibidos nesta tabela. 

 

Marker Summary

A área Marker Summary à direita contém informações agregadas sobre os marcadores selecionados e as respectivas contribuições para a série temporal de quadros. Essas informações também são apresentadas visualmente em um histograma e um diagrama de caixa.

Na parte inferior do resumo, você encontrará os tempos mínimo e máximo para instâncias individuais de marcador dentro do conjunto de dados agregados.  

filtros e quadros de visualização de comparação do profile analyzer

Filtros

  1. Por nome

Para concentrar sua análise a marcadores com um nome específico, você pode digitar uma substring ou um conjunto de substrings. Se o nome contiver espaços, coloque a substring entre aspas. 

Você pode excluir os marcadores que não tiver interesse. Por exemplo, você pode excluir marcadores com base no tempo ocioso em Jobs ou os marcadores que fazem parte do próprio Profiler. 

Você pode preencher os filtros clicando com o botão direito do mouse em um marcador de interesse na tabela. 

  1. Threads

Você pode optar por ver os dados para threads de operadores específicas. Para ver todas agregadas, marque "All" na parte superior da janela pop-up de seleção da thread. 

  1. Depth

Recomendamos a análise em depth 3, pois a maioria dos subsistemas do Unity têm marcadores de alto nível nesse nível. Assim, você obterá a contribuição de subsistemas importantes, como renderização, animação e física. (Depth 3 é adequada para versões recentes do Unity. Para versões mais antigas, poderá ser necessário utilizar outra depth.)

  1. Pai

Para filtrar por pai, clique com o botão direito do mouse no marcador na tabela e selecione Set as Parent Marker Filter.

  1. Tipo de análise

Por padrão, o Profile Analyzer mostra o tempo total dos marcadores, mas você pode alterar para o tempo individual. O tempo individual é útil se quiser se aprofundar nos detalhes e ver onde o tempo é gasto de fato. 

  1. Unidades

As unidades padrão são milissegundos; no entanto, para periodicidades menores, você pode alternar para microssegundos.

10 principais marcadores

Os 10 principais marcadores são os 10 principais para os filtros definidos. A melhor forma de usar essa ferramenta é selecionar Main Thread e tempo total, incluindo os filhos em depth 3, para que seja feita a análise dos subsistemas do Unity. Isso mostrará a proporção de contribuição para cada um desses sistemas importantes, como tempo de renderização em relação a física e animação. Para relatórios e análise adicionais, passe o cursor sobre a barra de dados para ver as porcentagens e métricas exatas. 

tabela de dados de comparação do profile analyzer

Comparação de conjuntos de dados

Na parte superior da janela Profile Analyzer, você pode mudar para a guia Compare para selecionar dois conjuntos de dados para análise. Um conjunto de dados é exibido em azul e o outro em laranja. Ou, você pode optar por comparar duas sub-regiões de um único conjunto de dados, por exemplo, para comparar os quadros medianos com os outliers. 

A tabela de comparação de marcadores representa os dados visualmente em azul e laranja, para que você possa verificar rapidamente qual dos conjuntos de dados está mais lento em áreas específicas.

Se o marcador estiver ausente em uma das análises, você verá um traço na respectiva coluna. Isso pode acontecer se o marcador for renomeado, por exemplo, se estiver usando versões diferentes do Unity.
 

Exportação de dados

Lembre-se de que é possível exportar os dados do Profile Analyzer para realizar pós-processamento personalizado. Você pode exportar o conteúdo da tabela de marcadores, o gráfico temporal de quadros ou uma comparação entre gráficos temporais de quadros.

Se tiver dúvidas sobre o Profile Analyzer, o Profiler ou sobre como usar os recursos específicos dessas ferramentas em seu projeto, participe das discussões nos fóruns

Usamos cookies para garantir a melhor experiência no nosso site. Visite nossa página da política de cookies para obter mais informações.

Eu entendi