Criação de perfis com perf, vtune e Sanitizers
Analise o desempenho dos programas com perf e Intel VTune e detete erros com AddressSanitizer
Criação de perfis com perf, vtune e Sanitizers é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.
Por que analisar o desempenho?
A intuição sobre desempenho geralmente está errada. Faça uma análise para encontrar os gargalos reais — depois otimize.
Linux: perf
perf é uma ferramenta de análise por amostragem com pouca sobrecarga, incluída no Linux. Execute-a em qualquer binário compilado com informações de depuração.
g++ -O2 -g main.cpp -o main
perf record ./main
perf reportperf stat
Exibe métricas resumidas — ciclos, instruções, falhas de cache e desvios previstos incorretamente — de uma execução.
perf stat -e cycles,instructions,cache-misses,branch-misses ./mainGráficos de chama
Converta os dados do perf em um gráfico de chama que mostre onde o tempo é gasto.
perf record -F 99 -g ./main
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svgmacOS: Instruments
O Instruments da Apple oferece análise de tempo, alocações, vazamentos e muito mais. É gratuito com o Xcode.
Windows: analisador VTune
O Intel VTune (gratuito para uso pessoal) oferece análise microarquitetural detalhada — paralisações do fluxo de processamento, falhas de cache e blocos críticos. É multiplataforma.
Os sanitizadores detectam erros
Os sanitizadores são verificadores em tempo de execução integrados ao clang e ao GCC. Recompile com a opção apropriada:
-fsanitize=address— AddressSanitizer para erros de memória-fsanitize=thread— ThreadSanitizer para condições de corrida nos dados-fsanitize=undefined— Sanitizador de UB para estouro com sinal etc.-fsanitize=memory— MSan para leituras não inicializadas
Exemplo de AddressSanitizer
Detecta estouros de buffer, uso após liberação e liberação dupla com rastreamentos da pilha.
g++ -fsanitize=address -g main.cpp
./a.out
# Output points exactly at the bugEm tempo de compilação versus em tempo de execução
A análise estática (clang-tidy, cppcheck) encontra erros sem executar o programa. Os sanitizadores encontram erros em tempo de execução. Use ambos — eles detectam problemas diferentes.
Análise das alocações
As alocações na memória dinâmica são lentas. Use perf, o massif do Valgrind ou o Heaptrack para encontrar os pontos de alocação mais ativos e reduzi-los.
Interpretando os dados de análise
Concentre-se nas principais funções dos dados de análise. Depois, consulte a árvore de chamadas para entender o contexto. Alguns pontos percentuais aqui e ali geralmente não valem a pena otimizar.
Análise contínua de desempenho
Em produção, ferramentas de análise por amostragem como Pyroscope ou Pixie coletam dados continuamente com pouca sobrecarga. Detecte regressões antes que prejudiquem os usuários.
Fluxo de trabalho
O ciclo de otimização:
- Meça para identificar o gargalo
- Formule uma hipótese
- Mude uma coisa
- Meça novamente
Sem medir, você estará apenas supondo.
Verificação rápida
Qual opção do compilador habilita o AddressSanitizer?
Recapitulação
Faça uma análise com perf (Linux), Instruments (macOS) ou VTune (multiplataforma) para encontrar gargalos. Use sanitizadores para detectar cedo erros de memória e de concorrência. Meça, formule uma hipótese, mude algo e meça novamente.
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 51
- Aulas
- 203
Perguntas Frequentes
A aula “Criação de perfis com perf, vtune e Sanitizers” é grátis?
Sim — o texto completo de “Criação de perfis com perf, vtune e Sanitizers” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.
O que vou aprender em “Criação de perfis com perf, vtune e Sanitizers”?
Analise o desempenho dos programas com perf e Intel VTune e detete erros com AddressSanitizer Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C++ Academy?
Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Criação de perfis com perf, vtune e Sanitizers”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C++ Academy?
Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Organizações de dados favoráveis à cache
- Previsão de ramificações e ciclos intensivos
- Criação de perfis com perf, vtune e Sanitizers
- Microavaliação de desempenho com Google Benchmark