Criador de perfil do Xamarin

Este guia explora os principais recursos do Xamarin Profiler. Ele analisa os criadores de perfil, a criação de perfil e quando eles devem ser usados e em um fluxo de trabalho padrão para criação de perfil de aplicativos Xamarin.

O sucesso de um aplicativo depende da experiência do usuário final. Como desenvolvedor, você pode ter implementado alguns recursos realmente incríveis em seu aplicativo, mas se o aplicativo estiver lento ou cheio de falhas, o usuário provavelmente se livrará dele.

Historicamente, o Mono tem apresentado um poderoso criador de perfil de linha de comando para coletar informações sobre programas em execução no runtime Mono chamado de criador de perfil de log Mono. O Xamarin Profiler é uma interface gráfica para o criador de perfil de log Mono e dá suporte à criação de perfil de aplicativos Android, iOS, tvOS e Mac no Mac e aplicativos Android, iOS e tvOS no Windows.

O Xamarin Profiler tem vários instrumentos disponíveis para criação de perfil – Alocações, Ciclos e Criador de Perfil de Tempo. Este guia explora o que esses instrumentos medem, como eles analisam seu aplicativo e esclarece o significado dos dados apresentados em cada tela.

Este guia examina cenários comuns de criação de perfil e apresenta o criador de perfil como uma ferramenta para ajudar a analisar e otimizar aplicativos iOS e Android.

Baixar e instalar

Observação

Você precisará ser um assinante Visual Studio Enterprise para desbloquear esse recurso em Visual Studio Enterprise no Windows ou Visual Studio para Mac em um Mac.

O Xamarin Profiler é um aplicativo autônomo e é integrado ao Visual Studio para Mac e ao Visual Studio para habilitar a criação de perfil de dentro do IDE.

Baixe o pacote de instalação para sua plataforma:

Depois de baixado, inicie o instalador para adicionar o Xamarin Profiler ao sistema.

Profilers e Criação de Perfil

A criação de perfil é uma etapa importante e muitas vezes negligenciada no desenvolvimento de aplicativos. A criação de perfil é uma forma de análise dinâmica do programa – ela analisa o programa enquanto ele está em execução e em uso. Um criador de perfil é uma ferramenta de mineração de dados que coleta informações sobre a complexidade do tempo, o uso de métodos específicos e a memória que está sendo alocada. Um criador de perfil permite que você faça uma busca detalhada e analise essas métricas para identificar áreas problemáticas no código.

Ao projetar e desenvolver um aplicativo, é importante não otimizar prematuramente; ou seja, gastando tempo desenvolvendo seu código em áreas que raramente serão acessadas. Esse é o poder da criação de perfil. Um criador de perfil fornece insights sobre as partes mais usadas da base de código e ajuda a localizar áreas em que você deve gastar tempo fazendo melhorias. Os desenvolvedores devem ter o cuidado de entender onde a maior parte do tempo é gasto em seu aplicativo e como a memória é usada pelo aplicativo.

A criação de perfil é útil em todos os tipos de desenvolvimento, mas é especialmente crucial no desenvolvimento móvel. O código não otimizado é muito mais perceptível em plataformas móveis do que em computadores desktop, e o sucesso do seu aplicativo depende de um código bonito e otimizado que é executado com eficiência.

Criador de perfil do Xamarin

O Xamarin Profiler fornece aos desenvolvedores uma maneira de criar um perfil de aplicativos de dentro do Visual Studio para Mac ou do Visual Studio. O criador de perfil coleta e exibe informações sobre o aplicativo, que podem ser usadas pelo desenvolvedor para analisar o comportamento de um aplicativo. Há várias maneiras diferentes de criar o perfil de um aplicativo com o Xamarin Profiler, ou seja, criação de perfil de memória e amostragem estatística. Eles são realizados por meio dos instrumentos Alocações e Criador de Perfil de Tempo, respectivamente.

Atualmente, o Xamarin Profiler pode ser usado para testar aplicativos Xamarin.iOS, Xamarin.Android e Xamarin.Mac no Mac (via Visual Studio para Mac). O criador de perfil é um processo separado do IDE e, portanto, além de iniciar de Visual Studio para Mac, ele pode ser usado como um aplicativo autônomo para examinar .exe e .mlpd arquivos que foram produzidos do criador de perfil de log mono.

Suporte ao Criador de Perfil

O suporte para o Xamarin Profiler está disponível nas seguintes plataformas:

  • Visual Studio para Mac (macOS, com Licença Enterprise)

    • Android
      • Dispositivo e Emulador
    • iOS
      • Dispositivo e simulador
    • tvOS (Não há suporte para o Instrumento de Tempo)
      • Dispositivo e simulador
    • Mac
  • Visual Studio (somente versão enterprise )

    • Android
      • Dispositivo e Emulador
    • iOS [Experimental]
      • Dispositivo e simulador
    • tvOS
      • Dispositivo e simulador

Observe que você só pode criar um perfil de configurações de depuração .

Noções básicas do Criador de Perfil

Esta seção apresenta as partes do Xamarin Profiler e percorre seus recursos.

Permitir criação de perfil em seu aplicativo

Antes de criar o perfil do aplicativo com êxito, você precisará permitir a Criação de Perfil nas Opções de Projeto do aplicativo.

  • iOS:

Criar > depuração > do iOS Habilitar Criação de Perfil

Caixa de diálogo Opções do iOS no Visual Studio para Mac

  • Android:

Compilar > a Depuração do > Android Habilitar Instrumentação do Desenvolvedor

Caixa de diálogo Opções do Android no Visual Studio para Mac

Iniciando o Criador de Perfil

O Xamarin Profiler pode ser iniciado a partir do seu IDE quando você estiver criando a criação de perfil do aplicativo iOS ou Android ou como um aplicativo autônomo.

Iniciando de Visual Studio para Mac

  1. Primeiro, certifique-se de ter seu aplicativo carregado em Visual Studio para Mac e selecione a configuração de depuração (padrão).
  2. Navegue até Executar > a Criação de Perfilinicial no Visual Studio para Mac ou Analise > o Xamarin Profiler no Visual Studio para abrir o Criador de Perfil, conforme demonstrado no diagrama abaixo:

Iniciando o Criador de Perfil de Visual Studio para Mac

Se os itens de menu não aparecerem, consulte o guia de solução de problemas.

Isso inicia o Profiler e inicia automaticamente a criação de perfil do aplicativo.

O Criador de Perfil pode ser usado para medir a memória e o desempenho. Ele consegue isso por meio dos instrumentos Alocações e Criador de Perfil de Tempo, que exploraremos detalhadamente na próxima seção.

Salvando e carregando sessões do Criador de Perfil

Para salvar uma sessão de criação de perfil a qualquer momento, escolha Salvar Arquivo > como... na barra de Menus do Criador de Perfil. Isso salva o arquivo no formato mlpd , um formato especial e altamente compactado para criação de perfil de dados.

Depois de instalado, o Xamarin Profiler pode ser encontrado na pasta Aplicativos, conforme ilustrado na captura de tela abaixo:

Abrir o Profiler autônomo no Mac

Você pode carregar arquivos .mlpd no Criador de Perfil abrindo o aplicativo autônomo, selecionando Escolher Destino e carregando o arquivo.

Para obter mais informações, consulte Gerando arquivos .mlpd.

Recursos do Criador de Perfil

O Xamarin Profiler é composto por cinco seções, conforme ilustrado abaixo:

  • Barra de ferramentas – localizada na parte superior do criador de perfil, isso oferece opções para iniciar/parar a criação de perfil, selecionar um processo de destino, exibir o tempo de execução do aplicativo e selecionar as exibições divididas que compõem o aplicativo criador de perfil.
  • Lista de Instrumentos – lista todos os instrumentos carregados para a sessão de criação de perfil.
  • Gráfico – esses gráficos se relacionam horizontalmente com os instrumentos relevantes na lista de instrumentos. Um controle deslizante (mostrado abaixo do Time Profiler) pode ser usado para alterar a escala.
  • Área Detalhes do Instrumento – contém dados que estão sendo exibidos pela exibição selecionada do Instrumento atual. Examinaremos essas exibições mais detalhadamente na seção abaixo.
  • Exibição inspetor – contém seções que podem ser selecionadas pelo controle segmentado. As seções dependem do instrumento selecionado e incluem: Configurações, Estatísticas, Informações de rastreamento de pilha e Caminho para raízes.

Alocações

O instrumento de alocações fornece informações detalhadas sobre objetos no aplicativo à medida que eles estão sendo criados e o lixo é coletado.

Na parte superior do criador de perfil está o gráfico de alocações, que exibe a quantidade de memória alocada em intervalos regulares durante a criação de perfil. Atualmente, o grafo de alocações é o número total de alocações e NÃO o tamanho do heap nesse momento. De certa forma, nunca vai cair, só vai aumentar. Isso inclui objetos alocados na pilha. Dependendo da versão de runtime usada, o gráfico pode parecer diferente, mesmo para o mesmo aplicativo.

Há diferentes exibições de dados no instrumento Alocações, que permitem que os desenvolvedores analisem como seu aplicativo está usando e liberando memória. Estes modos de exibição são descritos abaixo:

  • Alocações – exibe uma lista de todas as alocações e as agrupa por nome de classe. Isso fornece uma ótima visão geral das classes e métodos que estão sendo usados, a frequência com que são usados e o tamanho coletivo das classes usadas. Clicar duas vezes em uma classe mostrará a memória alocada:

A exibição Inspetor para Alocações fornece opções para filtrar e agrupar objetos, fornecendo estatísticas sobre a memória alocada e as principais alocações, bem como exibições para Rastreamento de Pilha e Caminho para Raiz.

  • Árvore de Chamadas – exibe toda a árvore de chamadas de todos os threads no aplicativo e inclui informações sobre a memória alocada em cada nó. Quando um elemento é selecionado na lista, todos os nós irmãos aparecerão cinza. Você pode expandir a árvore ou clicar duas vezes no elemento para fazer drill down nela. Ao exibir essa exibição de dados, a exibição do inspetor de configurações de exibição pode ser usada para alterar a maneira como ela é apresentada. Atualmente, há duas opções:
    1. Árvore de Chamadas Invertida – isso considera o rastreamento de pilha de cima para baixo. Essa é uma opção de exibição conveniente, pois indica os métodos mais profundos em que a CPU está gastando seu tempo.
    2. Separado por thread – essa opção organiza a árvore de chamadas por thread.
  • Instantâneos – este painel exibe informações sobre instantâneos de memória. Para gerá-los durante a criação de perfil de um aplicativo dinâmico, clique no botão Câmera na barra de ferramentas em cada ponto em que você gostaria de ver qual memória é retida e liberada. Em seguida, você pode clicar em cada instantâneo para explorar o que está acontecendo nos bastidores. Observe que os instantâneos só podem ser tirados ao criar uma criação de perfil dinâmica de um aplicativo.

Criador de Perfil de Tempo

O instrumento Time Profiler mede exatamente quanto tempo é gasto em cada método de um aplicativo. O aplicativo é pausado em intervalos regulares e um rastreamento de pilha é executado em cada thread ativo. Cada linha na área Detalhes do Instrumento mostra o caminho de execução que foi seguido.

O gráfico, conforme mostrado na captura de tela abaixo, exibe o número de amostras recebidas pelo aplicativo conforme ele é executado:

  • Árvore de Chamadas – mostra a quantidade de tempo gasto em cada método:

Cycles

Por meio do uso de código gerenciado em C# e F#, pode ser bastante comum e, infelizmente, muito fácil criar referências a objetos que nunca serão descartados. Esse instrumento permite que você identifique esses objetos e exiba os ciclos referenciados em seu aplicativo.

Aplicativos de criação de perfil

Atualmente, somente as configurações de Depuração padrão podem ser perfilada.

Se você criar o perfil de um aplicativo com qualquer outra configuração, receberá a seguinte caixa de diálogo de mensagem:

Selecione Atualizar para continuar.

Coletor de Lixo SGen e Criação de Perfil

O coletor de lixo SGen é usado para todas as plataformas Xamarin.

SGen é um GC geracional, que aloca objetos de um aplicativo em três heaps – Viveiro, Heap Principal e Espaço de Objeto Grande. Isso permite uma execução mais rápida da coleta de lixo. Atualmente, o SGen é o GC padrão para aplicativos Xamarin.Android e Xamarin.iOS Unificados.

O aplicativo Xamarin.iOS usando a API Clássica usou o Boehm GC – um coletor de lixo conservador e não geracional. Como é conservador, é menos provável liberar memória disponível, o que pode levar a resultados imprecisos ao usar o criador de perfil. Por esse motivo, o instrumento Alocações não pode ser usado com o coletor de lixo Boehm.

Embora você seja solicitado com uma caixa de diálogo de mensagem se seu aplicativo usar o Boehm GC, o Xamarin não recomenda alternar o aplicativo iOS existente que usa Boehm para SGen sem uma pesquisa cuidadosa e testes completos. O Xamarin também não recomenda alternar para SGen para criação de perfil e, em seguida, alternar de volta, pois esses resultados não fornecerão parâmetros de comparação precisos do uso de memória.

Para obter mais informações sobre o gerenciamento de memória, consulte o Guia de práticas recomendadas de memória e desempenho .

Resumo

Neste guia, analisamos o que é a criação de perfil e como ela é vantajosa para o desenvolvedor. Em seguida, apresentamos o Xamarin Profiler, fornecendo alguns históricos e informações sobre como ele funciona. Por fim, percorremos os recursos do Xamarin Profiler e exploramos os Instrumentos do Criador de Perfil de Tempo e Alocações.