Qual é o melhor perfilador de C ++ gratuito para Windows? [fechadas]

224

Estou procurando um criador de perfil para encontrar o gargalo no meu código C ++. Gostaria de encontrar uma ferramenta de perfil gratuita, não intrusiva e boa. Sou desenvolvedor de jogos e uso o PIX para Xbox 360 e achei muito bom, mas não é gratuito. Conheço o Intel VTune , mas também não é gratuito.

ugasoft
fonte
O VTune parece estar livre agora: software.intel.com/en-us/vtune . Eu baixei a edição da comunidade e faz um ótimo trabalho na criação de perfil C ++ como o código C # bem como gerenciado
Dr. ABT
1
Como isso está fora de tópico? As ferramentas de desenvolvimento estão no tópico, tanto quanto eu sei. É baseado em opiniões.
Nic Szerman

Respostas:

135

O CodeXL agora substituiu o AMD Code Analyst da End Of Line e ambos são gratuitos, mas não tão avançados quanto o VTune. Há também Sleepy , que é muito simples, mas faz o trabalho em muitos casos.

yrp
fonte
4
Aqui está o link para o CodeAnalyst: developer.amd.com/CPU/CODEANALYST/Pages/default.aspx
epotter
1
Eu tentei trabalhar com isso agora e não gostei nada disso. Eu não conseguia nem entender como obter o tempo total da função% (incluindo os callees) que o TrueTime poderia fazer bem há 10 anos.
Pavel Radzivilovsky, 13/03/11
Eu escrevi uma adaptação de sonolento que não depende do wxWidgets, mas roda na linha de comando. Você o executa por um período de tempo em um processo em execução e, quando o para, obtém as estatísticas do que o processo estava gastando seu tempo. Não é intrusivo, pois você não precisa modificar seu código de nenhuma maneira para usá-lo, mas suspende seus threads enquanto lê as pilhas de chamadas. Você também precisa dos arquivos pdb disponíveis para obter uma saída significativa, mas acho que isso se aplica a qualquer criador de perfil.
22612 CashCow
Eu recomendaria tentar o xperf, achei superior ao analista de código da AMD.
MW_dev
1
O CodeAnalyst não receberá mais atualizações, exceto as correções críticas. Eles mudaram para o CodeXL. Aqui está o link para que você possa atualizar sua resposta. E obrigada por me informar agora sobre o CodeAnalyst / XL, a propósito.
Adri CS
61

Very Sleepy é um perfilador de CPU C / C ++ para sistemas Windows (gratuito).
O CppCheck é um criador de perfil de CPU C / C ++ estático para sistemas Windows (gratuito).

lsalamon
fonte
20
googletest é uma estrutura de teste de unidade. Como você usaria isso para realizar perfis?
greatwolf 10/05
Se você estiver usando um binário Windows da pilha gcc, essa é uma ótima opção - o AMD CodeAnalyst não reconhece símbolos gcc no Windows, mas com muito sono!
1212 Mike
17

Existe um perfilador de instrumentação (com precisão de função) para o MS VC 7.1 e superior chamado MicroProfiler. Você pode obtê-lo aqui (x64) ou aqui (x86) . Ele não requer modificações ou acréscimos ao seu código e é capaz de exibir estatísticas de funções com chamadores e callees em tempo real, sem a necessidade de fechar o aplicativo / interromper o processo de criação de perfil.

Ele se integra ao VisualStudio, para que você possa ativar / desativar facilmente a criação de perfil para um projeto. Também é possível instalá-lo na máquina limpa, basta que as informações do símbolo sejam localizadas junto com o executável sendo perfilado.

Essa ferramenta é útil quando a aproximação estatística de criadores de perfil de amostragem como Very Sleepy não é suficiente.

Comparações aproximadas mostram que ele supera o AQTime (quando é invocado na instrumentação, execução no nível da função). O programa a seguir (otimização total, inlining desativado) é executado três vezes mais rápido com o micro-profiler exibindo resultados em tempo real, do que com o AQTime simplesmente coletando estatísticas:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}
Arty
fonte
1
É fácil de usar e cria um perfil super rápido. Apenas um problema que não resolvi é um problema que, depois de terminar a depuração, a janela do criador de perfil não fecha automaticamente e é necessário eliminá-la através do gerenciador de tarefas (sem isso você não pode recompilar seu projeto).
Ludek Vodicka
1
Descobri que depois de fechar meu aplicativo com o botão CLOSE regular, a janela do criador de perfil também pode ser fechada regularmente. Mas quando saio do aplicativo com o atalho SHIFT + F5 (comando Stop debugging VS), o botão fechar da janela do criador de perfil está desativado.
Ludek Vodicka
Não funciona com o VS 2015.
rustyx 26/10/2015
1
Corrigido a partir de 1.1.590. Veja as atualizações na página Galeria do Visual Studio ( visualstudiogallery.msdn.microsoft.com/… )
Arty
1
Isto é muito, muito bom! Deve ser classificado muito mais alto! Super simples de instalar e executar, e oferece a você tudo o que você precisa saber. Minha segunda opção é o Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve
10

A Microsoft possui o Windows Performance Toolkit .

Requer Windows Vista, Windows Server 2008 ou Windows 7.

epotter
fonte
6
Como não é grátis? É uma parte do Windows SDK. Consegui fazer o download sem problemas. (Na verdade, temos uma assinatura MSDN, por isso algumas pessoas podem ter uma experiência diferente do que eu.)
epotter
1
Gratuito ou não, o link não funciona mais corretamente.
Tomáš Zato - Restabelece Monica
7

Uma nova adição é Shiny .

O que outras pessoas estão dizendo

Buggieboy
fonte
3
Não é possível encontrar binários para download, apenas códigos-fonte. Não é muito conveniente.
Monsenhor
5

Eu recomendo o Windows Performance Toolkit (WPT) ou XPERF

A ferramenta de linha de comando xperf da linha de comando registra logs de rastreamento de eventos para Windows (ETW) que podem ser analisados ​​usando a ferramenta GUI xperfview.

O uso da argumentação de linha de comando stacktrace provou ser uma ferramenta inestimável para minha empresa, pois apresenta perfis e soluciona problemas de gargalos. Uma das coisas mais interessantes é que o WPT pode ser instalado em qualquer ambiente, mesmo no venerável Windows XP .

No Windows 8, o Windows Performance Analyzer leva o xperf a um nível ainda mais alto.

Os números concretos e as estatísticas fornecidas nos logs da ETW são incomparáveis ​​em detalhes, exceto no visual studio profiler (2010/2012), que também é ótimo, mas não é um AFAIK gratuito.

Se você nunca usou o xperf ... não sabe o que está perdendo

Coda
fonte
1
Bem, eu sei que estou perdendo o URL de trabalho do site.
Tomáš Zato - Restabelece Monica
3

Eu uso o AQTime, é uma das melhores ferramentas de criação de perfil que já usei. Não é gratuito, mas você pode obter uma avaliação de 30 dias. Portanto, se você planeja otimizar e criar perfis, apenas um projeto e 30 dias são suficientes para você, recomendo o uso deste aplicativo. ( http://www.automatedqa.com/downloads/aqtime/index.asp )

dudico
fonte
Somente essa ferramenta me ajudou a criar perfil compilado no aplicativo da Web misto (gerenciado e nativo) no IIS.
Monsenhor
É lamentável que eles não apóiem ​​as pessoas que tentam avaliar seu produto.
Lucky Luke
Atualmente, eles estão oferecendo uma avaliação de 14 dias com funcionalidade limitada.
Max
2

Por favor, tente meu profiler, chamado cRunWatch. São apenas dois arquivos, portanto, é fácil integrar-se aos seus projetos e requer a adição de exatamente uma linha para instrumentar um pedaço de código.

http://ravenspoint.wordpress.com/2010/06/16/timing/

Requer a biblioteca Boost.

ravenspoint
fonte
1

Usei Luke Stackwalker e ele fez o trabalho para o meu projeto do Visual Studio.

Outros projetos interessantes são:

INS
fonte
0

Eu uso o "TrueTime - parte do pacote DevPartner da Compuware há anos. Existe uma [versão gratuita] (você pode experimentar o Compuware DevPartner Performance Analysis Community Edition.) Disponível.

Harold Ekstrom
fonte
0

Eu uso o VSPerfMon, que é o StandAlone Visual Studio Profiler. Eu escrevi uma ferramenta GUI para me ajudar a executá-la e analisar os resultados.

http://code.google.com/p/vsptree/


fonte
0

Você pode usar o EmbeddedProfiler, é gratuito para Linux e Windwos.

O criador de perfil é intrusivo (por funcionalidade), mas não requer nenhuma modificação no código. Basta adicionar um sinalizador de compilador específico (-finstrument-functios para gcc / MinGW ou / GH for MSVC) e vincular a biblioteca do perfil. Ele pode fornecer uma árvore de chamadas completa ou apenas uma lista de funções. Possui sua própria interface gráfica de análise.

Mi-La
fonte