Pular para o conteudo principal

Renderização, rede e CPU

Como separar tipos diferentes de lentidão para atacar a camada certa.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

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 é espera
  • CPU é trabalho
  • renderizaçã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:

  1. a API demora 2 segundos para responder
  2. a API responde rápido, mas o cliente filtra e ordena um array enorme
  3. 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

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Bundle size: o que cortar e o que não vale a pena cortar Artigo anterior Como Otimizar LCP sem Adivinhar o que é Lento

Continue explorando

Artigos relacionados