Respostas:
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.
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
ANTS
Scitech .NET Memory Profiler
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.
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.
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.
Não se esqueça do nProf - um bom perfil de freeware.
Eu achei o dotTrace Profiler by JetBrains uma excelente ferramenta de criação de perfil para .NET e seu modo ASP.NET é de qualidade.
ANTS Profiler . Eu não usei muitos, mas realmente não tenho queixas sobre o ANTS. A visualização é realmente útil.
AutomatedQA AQTime para temporização e SciTech MemProfiler para memória.
Se você está procurando algo rápido, fácil e gratuito, http://code.google.com/p/slimtune/ parece funcionar bem.
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 :-)
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.
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.
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
No passado, eu usei o criador de perfil que acompanha o Visual Studio Team System .
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.
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.
Analisador de desempenho Intel® VTune ™ para amostragem rápida
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
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.
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.
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.
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.
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.