Pergunta

Quais criadores de perfil você usou ao trabalhar com programas .net e quais você recomendaria especificamente?

Foi útil?

Solução

Eu tenho usado JetBrains dotTrace e FORMIGAS Redgate extensivamente.Eles são bastante semelhantes em características e preço.Ambos oferecem perfis de desempenho úteis e perfis de memória bastante básicos.

dotTrace se integra ao Resharper, o que é muito conveniente, pois você pode traçar o perfil do desempenho de um teste de unidade com um clique no IDE.No entanto, o dotTrace muitas vezes parece fornecer resultados espúrios (por exemplo,dizendo que um método levou vários anos para ser executado)

Prefiro a forma como o ANTS apresenta os resultados do perfil.Ele mostra o código-fonte e à esquerda de cada linha informa quanto tempo demorou para ser executado.dotTrace tem apenas uma visualização em árvore.

Perfilador EQATEC é bastante básico e requer que você compile versões instrumentadas especiais de seus assemblies que podem então ser executadas no criador de perfil EQATEC.No entanto, é gratuito.

No geral, eu prefiro ANTS para criação de perfil de desempenho, embora se você usar o Resharper, a integração do dotTrace seja um recurso matador e significa que supera o ANTS em usabilidade.

O Microsoft CLR Profiler gratuito (Estrutura .Net 2.0 / Estrutura .Net 4.0) é tudo que você precisa para criar perfis de memória .NET.

Atualização de 2011:

O Perfilador de memória Scitech tem uma interface de usuário bastante básica, mas muitas informações úteis, incluindo algumas informações sobre memória não gerenciada que faltam ao dotTrace e ao ANTS - você pode achar útil se estiver fazendo interoperabilidade COM, mas ainda não encontrei nenhum criador de perfil que facilite os problemas de memória COM. diagnosticar - você geralmente tem que sair windbg.exe.

O criador de perfil ANTS avançou aos trancos e barrancos nos últimos anos, e seu perfilador de memória tem alguns recursos realmente úteis que agora o levaram à frente do dotTrace como um pacote, na minha opinião.Tenho a sorte de ter licenças para ambos, mas se você for comprar um criador de perfil .Net para desempenho e memória, escolha ANTS.

Outras dicas

Outros cobriram o perfil de desempenho, mas com relação ao perfil de memória Atualmente estou avaliando o Scitech .NET Memory Profiler 3.1 e o ANTS Memory Profiler 5.1 (versões atuais em setembro de 2009).Eu experimentei o JetBrains há um ou dois anos e não era tão bom quanto o ANTS (para perfil de memória), então não me preocupei desta vez.Lendo os sites, parece que não tem o mesmo perfil de memória características como os outros dois.

Tanto o ANTS quanto o perfilador de memória Scitech possuem recursos que o outro não possui, então o melhor dependerá de suas preferências.De modo geral, o Scitech fornece informações mais detalhadas, enquanto o ANTS é realmente incrível na identificação do objeto vazando.No geral, prefiro o ANTS porque é muito rápido na identificação de possíveis vazamentos.

Aqui estão os principais prós e contras de cada um, com base na minha experiência:

Recursos comuns do ANTS e do Scitech .NET Memory Profiler

  • Recurso de análise em tempo real
  • Excelentes vídeos de instruções em seus sites
  • Fácil de usar
  • Desempenho razoável (obviamente mais lento do que sem o criador de perfil conectado, mas não tanto que você fique frustrado)
  • Mostrar instâncias de objetos vazando
  • Basicamente, ambos fazem o trabalho muito bem

FORMIGAS

  • Filtros de um clique para encontrar vazamentos comuns Incluindo:objetos mantidos vivos apenas por manipuladores de eventos, objetos que são descartados, mas ainda vivos e objetos que só são mantidos vivos por uma referência de um objeto descartado.Este é provavelmente o recurso matador do ANTS – encontrar vazamentos é incrivelmente rápido por causa disso.Na minha experiência, a maioria dos vazamentos é causada pelo fato de os manipuladores de eventos não serem desengatados e o ANTS apenas leva você diretamente para esses objetos.Incrível.
  • Gráfico de retenção de objetos.Embora a mesma informação esteja disponível no Scitech, é muito mais fácil de interpretar no ANTS.
  • Mostra o tamanho dos filhos além do tamanho do próprio objeto (mas apenas quando uma instância é selecionada, infelizmente, não na lista geral de classes).
  • Melhor integração com o Visual Studio (clique com o botão direito no gráfico para ir para o arquivo)

Perfilador de memória Scitech .NET

  • Mostra o rastreamento de pilha quando o objeto foi alocado.Isso é realmente útil para objetos alocados em vários lugares diferentes.Com o ANTS é difícil determinar exatamente onde o objeto vazado foi criado.
  • Mostra contagem de objetos descartáveis ​​que não foram descartados.Embora não seja indicativo de um vazamento, ele identifica oportunidades para corrigir esse problema e melhorar o desempenho do seu aplicativo como resultado de uma coleta de lixo mais rápida.
  • Opções de filtragem mais detalhadas (várias colunas podem ser filtradas de forma independente).
  • Apresenta informações sobre o total de objetos criados (incluindo aqueles coletados como lixo).ANTS mostra apenas estatísticas de objetos 'ao vivo'.Isso torna mais fácil analisar e ajustar o desempenho geral do aplicativo (por exemplo,identificar onde muitos objetos estão sendo criados desnecessariamente e que não estão necessariamente vazando).

Em resumo, acho que o ANTS ajuda você a encontrar o que está vazando mais rapidamente, enquanto a Scitech fornece um pouco mais de detalhes sobre o desempenho geral da memória do seu aplicativo e objetos individuais, uma vez que você sabe o que observar (por exemplo,rastreamento de pilha na criação).Se o rastreamento de pilha e o rastreamento de objetos descartáveis ​​​​não descartados fossem adicionados ao ANTS, não veria necessidade de usar mais nada.

Recentemente descobri o EQATEC Profiler http://www.eqatec.com/tools/profiler.Funciona com a maioria das versões .NET e em várias plataformas.É fácil de usar e algumas partes são gratuitas, mesmo para uso comercial.

[Transparência completa]

Embora ainda não seja tão completo quanto alguns dos outros criadores de perfil de memória .NET listados aqui, há uma nova entrada no mercado chamada ApenasTrace.É feito pela Telerik e seu objetivo principal é tornar o rastreamento/criação de perfil mais fácil e rápido para todos os tipos de aplicativos (web/Silverlight/desktop).

Se você já achou a criação de perfil e a otimização intimidantes ou lentas com outras ferramentas, então ApenasTrace Pode valer a pena dar uma olhada.

Não se esqueça nProf - um criador de perfil freeware perfeitamente bom.

eu encontrei Perfilador dotTrace por JetBrains é uma excelente ferramenta de criação de perfil para .NET e seu modo ASP.NET é de qualidade.

Perfilador ANTS.Não usei muitos, mas realmente não tenho nenhuma reclamação sobre o ANTS.A visualização é realmente útil.

Se você está procurando algo rápido, fácil e gratuito, http://code.google.com/p/slimtune/ parece fazer o trabalho bem.

Eu tenho trabalhado com JetBrains dotTrace para WinForms e aplicativos de console (ainda não testados em ASP.net) e funciona muito bem:

Recentemente, eles também adicionaram uma “Licença Pessoal” que é significativamente mais barata que a corporativa.Ainda assim, se alguém souber de alguns mais baratos ou mesmo gratuitos, eu também gostaria de ouvir :-)

Não se esqueça do incrível scitech criador de perfil de memória .net

É ótimo para rastrear por que seu aplicativo .net está ficando sem memória.

Eu acrescentaria que a capacidade do dotTrace de memória diff e sessões de rastreamento de desempenho é absolutamente inestimável (ANTS também pode ter um recurso de comparação de memória, mas não vi uma diferença de desempenho).

Ser capaz de executar uma sessão de criação de perfil antes e depois de uma correção de bug ou aprimoramento e, em seguida, comparar os resultados é extremamente valioso, especialmente com um aplicativo .NET legado gigantesco (como no meu caso), onde o desempenho nunca foi uma prioridade e onde encontrar gargalos poderia ser MUITO tedioso.Fazer uma comparação antes e depois permite que você veja o mudança na contagem de chamadas para cada método e a mudança na duração de cada método.

Isso é útil não apenas durante alterações de código, mas também se você tiver um aplicativo que usa um banco de dados diferente, digamos, para cada cliente/cliente.Se um cliente reclamar de lentidão, você poderá executar uma sessão de criação de perfil usando o banco de dados dele e comparar os resultados com um banco de dados "rápido" para determinar quais operações estão contribuindo para a lentidão.É claro que existem muitas ferramentas de desempenho do lado do banco de dados, mas às vezes realmente ajuda ver as métricas de desempenho do lado do aplicativo (já que estão mais próximas do que o usuário realmente está vendo).

Conclusão:dotTrace funciona muito bem e a diferença é inestimável.

AQTime é razoável, mas tem uma curva de aprendizado e não é tão fácil de usar quanto o integrado no Team Suite

No passado, usei o criador de perfil que acompanha Sistema de equipe do Visual Studio.

A versão atual do SharpDevelop (3.1.1) tem um bom perfilador integrado.É bastante rápido e integra-se muito bem ao IDE SharpDevelop e ao seu executor NUnit.Os resultados são exibidos em um estilo flexível de Árvore/Lista (use LINQ para criar sua própria seleção).Clicar duas vezes no método exibido vai diretamente para o código-fonte.

Já trabalhei com o criador de perfil do RedGate no passado.Fez o trabalho para mim.

Ainda não tentei, mas talvez pontoTrace?O aplicativo ReSharper deles é certamente bom.Talvez dotTrace também seja :)

Duvido que o criador de perfil que vem com o Visual Studio Team System seja o melhor criador de perfil, mas descobri que ele é bom o suficiente em muitas ocasiões.O que você precisa especificamente além do que o VS oferece?

EDITAR:Infelizmente ele só está disponível no VS Team System, mas se você tiver acesso vale a pena conferir.

A última versão do ANTS Memory Profiler (acho que são 5) é simplesmente demais!!!Eu estava assombrando um vazamento usando WinDbg e SOS, já que provou ser a melhor maneira antes, então tentei ANTS e consegui em minutos.Realmente um software maravilhoso.

Eu gostaria de adicionar seu kit java e .net profiler, adoro Java, mas ainda não experimentei a versão .NET.

Infelizmente, a maioria dos criadores de perfil que experimentei falharam quando usados ​​com chamadas finais, principalmente ANTS.Acabo escrevendo o meu próprio.Existe uma implementação simples no CodeProject que você pode usar como base.

Devo trazer ao seu conhecimento uma ferramenta incrível que usei há algum tempo. Estúdio Interceptador AVICOde.Na minha empresa anterior, usamos esta ferramenta maravilhosa para criar o perfil do aplicativo da web (Este deveria ser o maior aplicativo web do mundo e o maior projeto civil de TI já realizado).A equipe de desempenho fez maravilhas com a ajuda desta ferramenta magnífica.É difícil configurá-lo, mas é uma atividade única e eu diria que vale a pena.Confira esta página para detalhes.

Obrigado, James

Para mim o SpeedTrace é a melhor ferramenta do mercado porque não ajuda apenas a encontrar gargalos em suas aplicações.Ele também ajuda você em cenários de solução de problemas para descobrir por que seu aplicativo estava travando, sua configuração não foi instalada, seu aplicativo travou, o desempenho de seu aplicativo às vezes é ruim dependendo da entrada de dados, por exemplo.para identificar transações lentas de banco de dados.

Tenho testado o JustTrace da Telerik recentemente e, embora esteja bem longe de ser um produto acabado, os caras estão indo na direção certa.

Se o licenciamento for um problema, você pode tentar o WINDBG para criação de perfil de memória

O criador de perfil NuMega True Time continua vivo no DevPartner Studio da Micro Focus.Ele fornece detalhes em nível de linha e método para aplicativos .NET que exigem apenas PDBs, sem necessidade de fonte (mas ajuda). Ele pode discriminar entre rotinas algoritmicamente pesadas e aquelas com longas esperas de E/S usando nosso driver proprietário de temporização de modo kernel por thread.A versão 10.5 vem com novo suporte para 64 processos em 4 de fevereiro de 2011.Plugue sem vergonha:Trabalho na linha de produtos DevPartner.Acompanhe em http://www.DevPartner.com para notícias do lançamento 10.5.

Isenção de responsabilidade:Sou gerente de produto do DevPartner na Micro Focus.

Encontrei muitos problemas em um grande aplicativo C# usando esse.

Normalmente, o problema ocorre durante a inicialização ou desligamento, à medida que os plug-ins estão sendo carregados e as estruturas de big data estão sendo criadas, destruídas, serializadas ou desserializadas.Freqüentemente, eles são criados e inicializados mais de uma vez, e os manipuladores de alterações são adicionados diversas vezes, agravando ainda mais o problema.

Em casos como esse, o programa pode ser tão lento que apenas 2 amostras são suficientes para identificar os sites culpados de chamada de método/função/propriedade.

Selecionamos YourKit Profiler for .NET na minha empresa porque era o melhor valor (preço vs.recurso).Para uma pequena empresa que deseja ter licenciamento flexível (licenças flutuantes), foi uma escolha perfeita - ANTS era o medalhão do desenvolvedor na época.

Além disso, nos proporcionou a capacidade de anexar ao processo em execução, o que não era possível com o dotTrace.Porém, tenha cuidado, pois anexar não é a melhor opção, pois tudo no .NET ficará lento, mas essa era a única maneira de criar o perfil de aplicativos .NET iniciados por outros processos.Em termos de recursos, ANTS e dotTrace foram melhores - mas no final o YourKit foi bom o suficiente.

Se você estiver no ASP.NET MVC, você pode tentar o MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top