Skip to content

Performance pt BR

Edgar Mesquita edited this page Aug 13, 2026 · 1 revision

Performance e Otimização

🌐 Esta página em: English · Português

O foco do eQuantic.UI é entregar uma experiência de Single Page Application (SPA) com overhead mínimo, aproveitando o poder do C# para gerar código de frontend altamente otimizado.

🚀 Reconciliação e Virtual DOM

O sistema de Virtual DOM foi desenhado para ser eficiente e antecipar mudanças de estado.

Estratégia de diffing (algoritmo Keyed LIS)

O algoritmo de reconciliação usa uma estratégia eficiente de Keyed Diffing baseada no algoritmo da maior subsequência crescente (Longest Increasing Subsequence, LIS).

  • Propriedade Key: a propriedade key identifica elementos entre renders. Elementos com a mesma key são reaproveitados e atualizados no lugar.
  • Otimização por LIS: quando elementos são reordenados, o algoritmo calcula a maior subsequência crescente para minimizar movimentos no DOM. Só os elementos fora da LIS precisam se mover.
  • Otimização de prefixo/sufixo: prefixos e sufixos comuns são processados primeiro, sem diffing complexo, melhorando a performance das operações típicas de lista (append, prepend).
  • Eficiência de memória: elementos que não se movem preservam o estado do browser (foco de input, posição de scroll etc.).

🧠 Gestão de recursos (memória)

Vazamentos de memória são mitigados pelo uso inteligente de referências fracas e limpeza automática.

Rastreamento de event listeners

Os listeners são rastreados com WeakMap<HTMLElement, Map<string, EventHandler>>.

  • Referências fracas: o WeakMap permite que elementos do DOM sejam coletados pelo Garbage Collector quando removidos da árvore, mesmo que o framework ainda tenha referências internas aos handlers deles.
  • Limpeza automática: ao remover um componente, o reconciliador tenta desconectar os listeners explicitamente, mas o WeakMap funciona como rede de segurança contra vazamentos em ciclos de vida complexos.

📦 Bundling e carregamento

Estratégia híbrida com Bun

O SDK usa um binário Bun embarcado para processar a saída final.

  • Performance de build: o Bun processa arquivos TS/JS até 10× mais rápido que ferramentas baseadas em Node.js.
  • Tree-shaking: código morto é removido automaticamente durante o build.
  • Minificação: os scripts são entregues comprimidos.

Extração de CSS sem runtime

O compilador analisa as definições de StyleClass e as extrai para arquivos .css estáticos em tempo de build.

  • Sem overhead de CSS-in-JS: diferente de frameworks web modernos que calculam estilos em tempo de execução, o eQuantic.UI entrega CSS estático, reduzindo o trabalho de CPU no browser.
  • Cacheabilidade: os arquivos CSS podem ser cacheados independentemente dos bundles de lógica.
  • Otimização de LCP: o layout é aplicado assim que o CSS carrega, evitando Layout Shift (CLS).

Code splitting

  • Chunks por página: cada página gera o próprio bundle JS. O usuário baixa apenas o necessário para a rota atual.
  • Lazy loading: componentes e bibliotecas complexos podem ser carregados sob demanda.

Clone this wiki locally