C++ Academy · Aula

Criação de perfis com perf, vtune e Sanitizers

Analise o desempenho dos programas com perf e Intel VTune e detete erros com AddressSanitizer

Aula 3 de 415 etapas

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 report

perf 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 ./main

Grá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.svg

macOS: 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 bug

Em 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:

  1. Meça para identificar o gargalo
  2. Formule uma hipótese
  3. Mude uma coisa
  4. 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.

Grátis para começar

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

  1. Organizações de dados favoráveis à cache
  2. Previsão de ramificações e ciclos intensivos
  3. Criação de perfis com perf, vtune e Sanitizers
  4. Microavaliação de desempenho com Google Benchmark
← Voltar para C++ Academy