Quais são alguns bons perfis de .NET?


374

Quais profilers você usou ao trabalhar com programas .net e quais você recomendaria particularmente?

Respostas:


285

Eu usei JetBrains dotTrace e Redgate ANTS extensivamente. Eles são bastante semelhantes em características e preço. Ambos oferecem perfil de desempenho útil e perfil de memória bastante básico.

O dotTrace se integra ao Resharper, o que é realmente conveniente, pois você pode criar um perfil do desempenho de um teste de unidade com um clique no IDE. No entanto, o dotTrace geralmente parece dar resultados falsos (por exemplo, dizer que um método levou vários anos para ser executado)

Prefiro a maneira como o ANTS apresenta os resultados de criação de perfil. Ele mostra o código fonte e, à esquerda de cada linha, indica quanto tempo levou para ser executado. O dotTrace apenas possui uma visualização em árvore.

O criador de perfil EQATEC é bastante básico e exige que você compile versões instrumentadas especiais de seus conjuntos que podem ser executados no criador de perfil EQATEC. É, no entanto, gratuito.

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

O Microsoft CLR Profiler gratuito ( .Net framework 2.0 / .Net Framework 4.0 ) é tudo o que você precisa para o perfil de memória do .NET.

Atualização de 2011:

O perfilador de memória Scitech possui uma interface bastante básica, mas muitas informações úteis, incluindo algumas informações sobre memória não gerenciada que dotTrace e ANTS não possuem - você pode achar útil se estiver fazendo interoperabilidade COM, mas ainda não encontrei nenhum perfilador que faça COM problemas de memória fáceis de diagnosticar - você geralmente precisa sair windbg.exe.

O profiler ANTS surgiu aos trancos e barrancos nos últimos anos, e seu profiler de memória possui alguns recursos realmente úteis que agora o colocam à 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 .Net Profiler para desempenho e memória, faça-o com ANTS.


5
O criador de perfil no Visual Studio também é muito fácil de usar, o Visual Studio 2010 está na versão Beta e, portanto, também é gratuito. Houve vários aprimoramentos em 2010 para exibir contenção e simultaneidade. experimentá-lo ...
Rick

15
@Rick Infelizmente o Profiler de Visual Studio não está presente na Professional Edition ...
Drake

Discordo totalmente de que o criador de perfil CLR é tudo o que você precisa para criação de perfil de memória .NET, embora seja possivelmente verdade se você não atribuir valor ao seu tempo. Veja minha resposta abaixo para um resumo do melhor par de perfis de memória - eles vão ajudá-lo a encontrar vazamentos de memória e possíveis problemas muito mais rápido.
Ben Robbins

11
As versões atuais do perfilador EQUATEC não são mais gratuitas.
David Schmitt

11
Parece que EQATEC Profiler tornou-se livre para .NET (quadro completo) novamente
soren.enemaerke

88

Outros abordaram a criação de perfil de desempenho, mas, no que diz respeito à criação de perfis de memória , estou avaliando o Scitech .NET Memory Profiler 3.1 e o ANTS Memory Profiler 5.1 (versões atuais em setembro de 2009). Eu tentei o JetBrains um ano ou dois atrás e não era tão bom quanto o ANTS (para perfil de memória), então não me incomodei dessa vez. Ao ler os sites, parece que ele não possui os mesmos recursos de criação de perfil de memória que os outros dois.

O ANTS e o criador de perfil de memória Scitech têm recursos que o outro não possui; portanto, o melhor depende das suas preferências. De um modo geral, o Scitech fornece informações mais detalhadas, enquanto o ANTS é realmente incrível na identificação do objeto que vaza. 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 da minha experiência:

Recursos comuns do ANTS e 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 razoavelmente bom (obviamente mais lento do que sem o criador de perfil anexado, mas você não fica frustrado)
  • Mostrar instâncias de objetos com vazamento
  • Basicamente, ambos fazem o trabalho muito bem

ANTS

  • Filtros de um clique para encontrar vazamentos comuns, incluindo: objetos mantidos vivos apenas por manipuladores de eventos, objetos descartados, mas ainda vivos e objetos que estão sendo mantidos vivos apenas por uma referência de um objeto descartado. Este é provavelmente o principal recurso 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 o leva diretamente a esses objetos. Impressionante.
  • Gráfico de retenção de objetos. Embora as mesmas informações estejam disponíveis na Scitech, é muito mais fácil 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 ao Visual Studio (clique com o botão direito do mouse no gráfico para ir para o arquivo)

Scitech .NET Memory Profiler

  • Mostra o rastreamento da pilha quando o objeto foi alocado. Isso é realmente útil para objetos alocados em muitos lugares diferentes. Com o ANTS, é difícil determinar exatamente onde o objeto vazado foi criado.
  • Mostra a 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 aplicativo como resultado da coleta de lixo mais rápida.
  • Opções de filtragem mais detalhadas (várias colunas podem ser filtradas independentemente).
  • Apresenta informações sobre o total de objetos criados (incluindo aqueles coletados). ANTS mostra apenas estatísticas de objetos 'ao vivo'. Isso facilita a análise e o ajuste do desempenho geral do aplicativo (por exemplo, identifique onde muitos objetos são criados desnecessariamente e que não estão necessariamente vazando).

A título de resumo, acho que o ANTS ajuda 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 aplicativo e objetos individuais depois que você sabe o que procurar (por exemplo, rastreamento de pilha na criação). Se o rastreamento da pilha e o rastreamento de objetos descartáveis ​​não dispostos fossem adicionados ao ANTS, eu não veria a necessidade de usar mais nada.


A versão 4.0 do .NET Memory Profiler (agora em visualização) agora possui uma exibição gráfica. Esse foi o único recurso que gostei no profiler ANTS que o Scitech não possuía (no 3.1 / 3.5).
Cplotts

45

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


Falha na cauda chama bug também :( relatado.
leppie

Este é gratuito apenas para uso não comercial.
precisa saber é o seguinte

7
Era totalmente gratuito em agosto de 2008, quando TrolleFar escreveu sua resposta. Agora, como Jon diz, é gratuito apenas para uso não comercial.
Richard Flamsholt

8
Acontece que eles mudaram os termos da licença novamente. Partes dele são gratuitas para uso comercial novamente.
TrolleFar

A partir de FEB2011, a edição .NET normal para auto / comercial é gratuita. Essa ferramenta é boa porque funciona no modelo cliente / servidor e pode criar um perfil / ignorar limites repetidos (por exemplo, Native-> COM-> NET-> COM-> NET pode ser perfilado). A interface do usuário é bastante surgiu em torno embora :-)

31

[ Divulgação 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 JustTrace . É fabricado pela Telerik e seu principal objetivo é tornar o rastreamento / criação de perfis mais fácil e rápido para todos os tipos de aplicativos (web / Silverlight / desktop).

Se você já achou o perfil e a otimização intimidadores ou lentos com outras ferramentas, o JustTrace pode valer uma olhada.


12
Quando vou baixá-lo e testá-lo, a Telerik quer que eu "registre" e "crie uma conta". E todos esses botões de inscrição em boletins são marcados por padrão. Eu ficaria feliz em tentar o JustTrace, mas não se a Telerik dificultar isso.
Ryan Lundy

11
Obrigado por tentar, Kyralessa. Sabemos que o processo pode ser melhorado. Estamos trabalhando nisso agora. Esperamos remover esses obstáculos em breve. Por enquanto, basta desmarcar as caixas e em 2 minutos você pode ter uma conta e fazer o download gratuito do JustTrace. Desculpe pelo problema de curto prazo. -T
Todd

9
poste de volta e informe-me quando eu puder fazer o download sem criar uma conta, e tentarei.
Ryan Lundy

4
Atualização: Hoje consegui fazer o download usando o link na resposta sem precisar criar uma conta.
Ryan Lundy 01/01

25

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


3
Looks tipo de abandonado ... só que uma versão alfa a partir de 2006 :-(
Mauricio Scheffer

2
Funcionou muito bem para mim. Agora é um projeto do Google Code. Teve um lançamento em julho de 2009.
User1

19
A página nProf agora declara: NProf não é mais desenvolvido ativamente. Se você está procurando um .NET profiler open source, dê uma olhada SlimTune ( code.google.com/p/slimtune )
Richard Ev





9

Estou trabalhando com o JetBrains dotTrace para WinForms e Console Apps (ainda não testado no ASP.net) e funciona muito bem:

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


7

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

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


11
Ferramenta muito boa. Fácil de usar e permite navegar pelo gráfico de objetos. Eu gosto espacialmente do rastreamento de memória 'em tempo real'. Ele mostra como a contagem de objetos se desenvolve durante o tempo de execução do aplicativo.
lowglider

5

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

Ser capaz de executar uma sessão de criação de perfil antes e depois de uma correção ou aprimoramento de bug e comparar os resultados é incrivelmente valioso, especialmente com um gigantesco aplicativo .NET legado (como no meu caso), onde o desempenho nunca foi uma prioridade e onde encontrar gargalos pode ser MUITO entediante. Fazer um diff antes e depois permite ver a alteração na contagem de chamadas para cada método e a alteração na duração de cada método .

Isso é útil não apenas durante as alterações de código, mas também se você tiver um aplicativo que use um banco de dados diferente, por exemplo, para cada cliente. Se um cliente reclamar de lentidão, você poderá executar uma sessão de criação de perfil usando o banco de dados 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 eu realmente ajudo a ver as métricas de desempenho do lado do aplicativo (já que isso é mais próximo do que o usuário está vendo).

Bottom line: dotTrace funciona muito bem, e o diff é inestimável.


4

O AQTime é razoável, mas possui um pouco de curva de aprendizado e não é tão fácil de usar quanto o incorporado no Team Suite



3

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


2

Eu trabalhei com o profiler do RedGate no passado. Fiz o trabalho para mim.


2

Ainda não tentei, mas talvez dotTrace ? Sua aplicação ReSharper é certamente uma boa. Talvez o dotTrace também seja :)


11
Eu usei o dotTrace e posso recomendá-lo.
Jon Skeet

2

Duvido que o criador de perfil que acompanha o Visual Studio Team System seja o melhor, mas achei que ele é bom o suficiente em várias ocasiões. O que você precisa especificamente, além do que o VS oferece?

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


11
Eu estava falando sobre o VS2008, mas ele pode não estar disponível em todas as versões (estou usando o VSTS). Nos vídeos do PDC2008, parece que o criador de perfil melhorará bastante no VS2010.
Brian Rasmussen

11
Esse criador de perfil está disponível apenas nas versões Team Systems do Visual Studio.
31420 Chris Brandsma

O Visual Studio Team System (Developer Edition) possui um criador de perfil. Consulte < microsoft.com/visualstudio/en-us/products/teamsystem/… >.
Gix

O Visual Studio possui um criador de perfil desde o VS 2005. Ele está disponível apenas no Team System. Essa é, de fato, a razão de eu usar o sistema de equipe (no trabalho, tenho profissional). É um perfil muito bom, na minha opinião.
Configurator

É um bom perfilador, mas não está de acordo com o padrão da nova versão do ANTS.
Mqp 09/03/09

2

A versão mais recente do perfilador de memória ANTS (eu acho que é 5) simplesmente arrasa !!! Eu estava assombrando um vazamento usando o WinDbg e o SOS, já que provou ser o melhor caminho antes, então tentei o ANTS e o consegui em minutos. Realmente um software maravilhoso.


2

Gostaria de adicionar yourkit java e .net profiler, adoro Java, ainda não tentei a versão .NET.


1

Infelizmente a maioria dos criadores de perfil que tentei falhou quando usado com chamadas de cauda, ​​principalmente o ANTS. Acabei de escrever o meu. Existe uma implementação simples no CodeProject que você pode usar como base.



1

Devo trazer uma ferramenta incrível ao seu conhecimento, que usei há algum tempo. AVICode Interceptor Studio . Na minha empresa anterior, usamos essa ferramenta maravilhosa para criar um perfil do aplicativo da Web ( esse deveria ser o maior aplicativo da 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 essa é uma atividade única e eu diria que vale a pena. Confira esta página para obter detalhes.

Obrigado James


1

Para mim, o SpeedTrace é a melhor ferramenta do mercado, pois não apenas ajuda a encontrar gargalos em seus aplicativos. Também ajuda na solução de problemas para descobrir por que seu aplicativo estava travando, a instalação não foi instalada, o aplicativo desligou, o desempenho do aplicativo às vezes é ruim dependendo da entrada de dados, por exemplo, para identificar transações lentas de banco de dados.


1

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


1

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


1

O criador de perfil NuMega True Time vive no DevPartner Studio da Micro Focus. Ele fornece detalhes em nível de linha e método para aplicativos .NET que requerem apenas PDBs, nenhuma fonte necessária (mas ajuda.) Pode discriminar entre rotinas algorítmicas pesadas e aquelas com longas esperas de E / S usando nosso driver de temporização proprietário por segmento de modo de kernel. A versão 10.5 é fornecida com o novo suporte a 64 processos em 4 de fevereiro de 2011. Plugue sem vergonha: trabalho na linha de produtos DevPartner. Acompanhe em http://www.DevPartner.com as notícias do lançamento da versão 10.5.

Isenção de responsabilidade: eu sou o gerente de produto do DevPartner da Micro Focus.


bem-vindo ao SO. Você precisará divulgar qualquer relacionamento com o DevPartner ou será considerado um remetente de spam e tratado como tal. Eu vejo que você respondeu a uma série de perguntas de perfil ...
John Saunders

0

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

Geralmente, o problema ocorre durante a inicialização ou o 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. Geralmente, eles são criados e inicializados mais de uma vez, e os manipuladores de alterações são adicionados várias vezes, agravando ainda mais o problema.

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


0

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

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


A partir de janeiro de 2012, o YourKit aumentou os preços do profiler YourKit. Portanto, a vantagem de preço pode não ser mais válida.

0

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.