O dotTrace é um profiler de desempenho para aplicativos .NET que funciona perfeitamente no Visual Studio / JetBrains Rider e oferece ótimas maneiras de detectar e analisar gargalos de desempenho. Continue lendo para obter mais detalhes.
O dotTrace ajuda a localizar gargalos de desempenho em uma variety of .NET applications, incluindo aplicativos de desktop, .NET Core, aplicativos ASP.NET hospedados em servidores Web IIS ou IIS Express, aplicativos Mono e Unity, serviços WCF, Serviços do Windows, aplicativos da Plataforma Universal do Windows e testes de unidade.
O dotTrace permite fazer profiling de aplicativos que rodam em qualquer versão compatível do .NET Framework, .NET Core, .NET, Mono 5.10 ou posterior e Unity 2018.3 ou posterior.
Diferentemente do perfil de desempenho "clássico", que apenas permite medir o tempo de execução das chamadas de método, a criação de perfil de linha do tempo revela como as chamadas são distribuídas no tempo.
Em virtude da associação de dados de chamada de método a uma linha do tempo, esse modo de criação de perfil vai além da simples detecção do método mais lento: ele permite diagnosticar problemas de desempenho nos quais a ordem dos eventos é importante, como congelamentos da interface do usuário, coleta excessiva de lixo, distribuição desigual da carga de trabalho, E/S de arquivos ineficiente e muito mais.
No entanto, os modos tradicionais de criação de perfil ainda estão disponíveis no dotTrace. O modo de criação de perfil de amostragem é a maneira mais fácil de avaliar o desempenho geral do aplicativo, enquanto os modos de criação de perfil de rastreamento e linha a linha são ideais quando você precisa de detalhes sobre como um algoritmo específico funciona por dentro.
Você pode fatiar e cortar dados de criação de perfil usando filtros, a árvore de chamadas ou diagramas. Ao aplicar filtros, você obtém um conjunto de intervalos de tempo selecionados por uma condição específica. A maneira como isso funciona é muito semelhante à execução de uma consulta em um banco de dados para obter exatamente os dados necessários.
Por exemplo, para descobrir se um congelamento da interface do usuário é causado pelo bloqueio da coleta de lixo, você pode pedir ao dotTrace para selecionar todos os intervalos de tempo no thread principal em que ocorreu o congelamento da interface do usuário e o GC de bloqueio foi realizado. Por mais complexo que isso possa parecer, essa combinação de filtros é de fato ativada com apenas dois cliques.
O dotTrace está integrado ao Visual Studio, permitindo que você faça profiling das aplicações nas quais está trabalhando sem precisar sair do IDE. Usando o plug-in dotTrace no Rider, você pode realizar profiling de desempenho vinculado à linha do tempo, profiling de métodos estáticos, testes de unidade, processos em execução, aplicações remotas e muito mais.
Sua integração com o Visual Studio e o JetBrains Rider torna a experiência de profiling praticamente perfeita, já que você não precisa mais alternar entre seu IDE e o profiler.
O dotTrace permite analisar facilmente o código assíncrono: todas as "partes" de uma chamada async
são mostradas em um único local, para que você não precise procurá-las em pilhas de chamadas diferentes.
O dotTrace permite que você crie um perfil instantâneo de qualquer método estático no seu código. Basta colocar o cursor no método, pressionar Alt+Enter e selecionar Debug | Profile na lista de ações.
Imagine o que esse recurso é capaz de fazer. Você pode criar um perfil de qualquer parte do seu código, logo depois de escrevê-lo! Não há necessidade de compilar sua solução, executá-la no profiler, realizar um cenário de uso que execute seu novo código etc.
Na maioria das vezes, você precisa criar perfil de aplicativos em execução localmente. Mas, e se você se deparar com um aplicativo atrasado em um servidor Web remoto?
O dotTrace pode se conectar a uma máquina remota para criar um perfil de um aplicativo Web autônomo ou de um serviço do Windows. Você nem mesmo precisa instalar o dotTrace: basta copiar alguns arquivos.
O dotTrace pode ser anexado a um aplicativo em execução para criação de perfil e desanexado assim que os dados de criação de perfil forem capturados.
Isso minimiza a sobrecarga imposta pela execução de um aplicativo no profiler. Mais importante, ele permite investigar problemas de desempenho em ambientes de produção em que você simplesmente não pode se dar ao luxo de reiniciar um aplicativo toda vez que precisar criar um perfil.
Se você possui um pacote do Visual Studio + ReSharper* ou do JetBrains Rider**, pode facilmente iniciar a criação de perfil de testes de unidade no editor de código ou em um executor de teste de unidade.
* Mesmo que você não tenha o ReSharper instalado, ainda poderá criar um perfil de um executor de teste de unidade nativo fornecido pelo NUnit, MSTest ou xUnit.
** Recursos de profiling estão disponíveis apenas para proprietários de licenças do dotUltimate ou do All Products Pack.
Ao analisar snapshots de criação de perfil da linha do tempo, é possível filtrar os intervalos de tempo nos quais o aplicativo Web processa solicitações HTTP recebidas. Obtenha os dados exatos, determine a causa raiz exata e concentre-se nos métodos que são executados lentamente. Torne seus aplicativos Web mais rápidos com a criação do perfil da linha do tempo.
Use a criação de perfil da linha do tempo para analisar como cada consulta específica afeta o desempenho do aplicativo. O filtro SQL Queries mostra todas as consultas e conexões SQL, juntamente com suas estatísticas de desempenho.
Para sua conveniência, o conteúdo da consulta pode ser aberto em uma janela separada para análise posterior. Você ainda pode filtrar todos os dados escolhendo uma ou várias consultas e pode investigar os métodos pelos quais eles foram executados.
Chega de consultas SQL ineficazes!
O SDK de criação de perfil permite controlar uma sessão de criação de perfil diretamente do seu código: comece a e pare de coletar dados de criação de perfil programaticamente, salve snapshots coletados e assim por diante.
Isso permite dois cenários valiosos de uso. Primeiro, você pode usar o SDK para restringir o escopo de criação de perfil e escolher quais partes do seu código devem ter um perfil criado. O segundo cenário de uso são os aplicativos com perfil próprio: você pode coletar estatísticas mostrando como seu aplicativo se comporta nas máquinas dos usuários finais.
O dotTrace vem com ferramentas de criação de perfil de linha de comando que podem ser usadas para automatizar a coleta de snapshots de criação de perfil, o que é essencial se você deseja tornar a criação de perfil parte das suas compilações de Integração Contínua.
Se você estiver usando o JetBrains TeamCity como servidor de CI, instale o plug-in dotTrace para TeamCity. Esse plug-in ajuda a impedir a regressão do desempenho do aplicativo criando perfis de testes de integração. Tudo o que você precisa fazer é definir um limite para o tempo de execução do teste e, se ele for excedido, o plug-in tirará automaticamente o snapshot de desempenho e reprovará o teste.
Às vezes, após horas otimizando uma função demorada, os desenvolvedores precisam começar a criar perfis a partir do zero para verificar se a otimização realmente funcionou.
Este não é um problema com o dotTrace. O profiler pode recalcular instantaneamente todas as temporizações de funções em um snapshot, com base em um ajuste de tempo definido por você — sem recriar o perfil do seu aplicativo. É como perguntar ao profiler: "e se eu otimizasse essa função em 40%?" Apenas especifique o novo horário para uma função ou para todas as funções em uma classe específica. Valores de tempo para os snapshots inteiros serão recalculados.
O dotTrace é capaz de comparar quaisquer dois snapshots de desempenho do mesmo aplicativo. Ele gera um snapshot de comparação que mostra a diferença no número de chamadas e tempos consumidos por cada função. Snapshots de comparação podem ser visualizados e analisados da mesma maneira que snapshots de desempenho regulares.
Avaliação gratuita por 30 dias disponível