8 de Abril de 2025
Renderização, rede e CPU
Como separar tipos diferentes de lentidão para atacar a camada certa.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Sistemas
O problema
Tem um erro que aparece o tempo todo em conversa sobre performance:
- chamar qualquer lentidão de “problema de performance”
Isso parece inofensivo.
Mas costuma empurrar o time para soluções genéricas:
- memoizar componente
- reduzir bundle
- paginar lista
- cortar payload
Às vezes ajuda.
Às vezes é só chute bem-intencionado.
O problema real é que a mesma sensação para o usuário pode nascer de causas bem diferentes.
Modelo mental
Pensa assim:
tela lenta é sintoma; rede, CPU e renderização são causas possíveis.
Em português simples:
redeé esperaCPUé trabalhorenderizaçãoé custo de transformar estado em interface
Essas três coisas podem se combinar.
Mas não são a mesma categoria de problema.
Se você não separa essas camadas, a chance de atacar o lugar errado sobe muito.
Quebrando o problema
Rede: o navegador está esperando
Quando a dor está na rede, a interface pode parecer travada simplesmente porque os dados ainda não chegaram.
Sinais comuns:
- request demorando demais
- payload grande demais
- cascata de chamadas
- API ou terceiro segurando resposta
Nesse cenário, discutir renderização cedo demais costuma ser desvio.
CPU: o cliente ou servidor está trabalhando demais
Aqui os dados podem até chegar rápido.
O problema é o processamento depois:
- ordenar array gigante
- fazer transformação pesada
- parsear ou serializar demais
- executar JavaScript demais na thread principal
Do ponto de vista do usuário, isso também parece lentidão.
Mas a correção costuma passar por:
- reduzir trabalho
- mover trabalho
- dividir trabalho
e não por “esperar menos da rede”.
Renderização: a UI está cara demais para atualizar
Às vezes a rede está ok.
A CPU até não está tão pressionada.
Mas a interface ainda sofre porque renderizar, reconciliar, recalcular layout ou pintar está custando demais.
Isso aparece em casos como:
- lista grande re-renderizando sem necessidade
- árvore de componentes reagindo demais
- DOM pesado demais
- layout e paint frequentes
Aqui a pergunta já não é “quanto tempo o request levou?”.
É:
- quanto custa atualizar a tela depois que o estado mudou?
O mesmo sintoma pode esconder causas diferentes
Esse é o ponto central.
Um campo de busca que “trava ao digitar” pode ser:
- request disparado demais e lento
- filtro local pesado demais
- re-render de tabela enorme
Mesmo sintoma.
Diagnósticos completamente diferentes.
Ferramenta certa depende da suspeita certa
Você não precisa transformar a investigação em ritual.
Mas precisa usar evidência compatível com a camada:
- Network para espera de rede
- profiler para CPU e thread principal
- React DevTools e flamegraph para custo de render
A pergunta madura não é:
- “qual otimização famosa eu aplico?”
É:
- “qual camada está dominando o atraso agora?”
Exemplo simples
Imagina uma tabela grande que trava quando o usuário digita na busca.
Três cenários diferentes podem produzir a mesma sensação:
- a API demora 2 segundos para responder
- a API responde rápido, mas o cliente filtra e ordena um array enorme
- os dados são pequenos, mas a tabela inteira re-renderiza a cada tecla
Para o usuário, tudo isso vira:
- “a busca está travando”
Para quem investiga direito, são três problemas diferentes.
E cada um pede uma resposta diferente:
- reduzir espera de rede
- reduzir custo de CPU
- reduzir custo de renderização
Erros comuns
- Chamar tudo de “performance” e parar aí.
- Tentar resolver rede com micro-otimização de componente.
- Tentar resolver CPU pesada reduzindo alguns KB de payload irrelevante.
- Tratar renderização ruim como se fosse só lentidão da API.
- Pular direto para solução antes de classificar o tipo de atraso.
Como um senior pensa
Quem tem mais experiência quase sempre faz a conversa ficar mais simples.
Em vez de listar quinze ideias de otimização, ele tenta classificar a dor:
estamos esperando dado, processando demais ou renderizando demais?
Essa pergunta parece pequena.
Mas ela elimina muito ruído.
Senioridade aqui não é decorar técnica de tuning.
É conseguir colocar o problema na gaveta certa antes de sugerir mudança.
O que o entrevistador quer ver
Em entrevista, esse tema mede muito critério.
O avaliador quer ver se você:
- separa sintoma de causa
- entende que rede, CPU e renderização são categorias diferentes
- sabe ligar cada categoria a um tipo de evidência
- evita resposta genérica de performance
Uma resposta forte costuma soar assim:
Antes de otimizar, eu quero separar se a lentidão está na espera de rede, no trabalho de CPU ou no custo de renderização. O sintoma para o usuário pode ser o mesmo, mas a solução muda totalmente dependendo da camada que está dominando o tempo.
Sintoma igual não é diagnóstico igual.
Performance melhora mais rápido quando você para de chamar tudo de performance.
Resumo rápido
O que vale manter na cabeça
- Tela lenta pode ser espera de rede, trabalho de CPU ou custo de renderização, e cada caso pede uma solução diferente.
- Sintoma igual não significa causa igual.
- Separar camada de rede, processamento e render evita micro-otimização no lugar errado.
- Em entrevista, resposta boa mostra como você distinguiria cada fonte de atraso antes de sugerir correção.
Checklist de pratica
Use isto ao responder
- Consigo explicar a diferença entre atraso de rede, custo de CPU e custo de renderização?
- Sei dizer que ferramenta ou evidência ajuda a diferenciar essas três fontes?
- Consigo dar um exemplo em que o sintoma visual era o mesmo, mas a causa técnica era outra?
- Sei justificar por que a solução certa depende da camada que está dominando o tempo?
Você concluiu este artigo
Próximo passo
Medir antes de otimizar Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.