Skip to content

Performance

Edgar Mesquita edited this page Jan 25, 2026 · 5 revisions

Performance e Otimização

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

🚀 Reconciliação Inteligente

O nosso sistema de Virtual DOM foi desenhado para ser "cirúrgico". Em vez de atualizar grandes blocos de HTML, identificamos exatamente o que mudou.

Keyed Diffing (Identidade por Chave)

Quando renderizamos listas ou conjuntos de elementos que podem mudar de ordem, utilizamos a propriedade key.

  • Problema: Sem chaves, o reconciliador tenta atualizar o conteúdo de cada nó por índice. Se a lista é reordenada, todos os elementos são atualizados ou recriados.
  • Solução: Com chaves, o reconciliador mapeia os nós antigos para os novos. Se um nó mudou de posição mas mantém a mesma chave, ele é apenas movido no DOM, preservando o estado interno do browser (foco, seleções, etc.).

🧠 Gestão de Recursos (Memory Management)

Vazamentos de memória são inimigos de frameworks UI modernos. No eQuantic.UI, focamos na limpeza automática de recursos.

Event Listener Tracking com WeakMap

Os listeners de eventos são rastreados usando um WeakMap.

  • O WeakMap mantém referências "fracas" aos elementos DOM.
  • Se um elemento é removido da árvore e não é mais referenciado por ninguém, ele pode ser coletado pelo Garbage Collector, mesmo que ainda exista um mapeamento para os seus event listeners no Reconciler.
  • Isso elimina a necessidade de um processo manual complexo de "unsubscribe" para todos os nós filhos durante a destruição de componentes.

📦 Bundling Otimizado

Embora o desenvolvedor escreva C#, o output final é JavaScript. Utilizamos ferramentas de build modernas (Vite/Bun) para garantir:

  • Tree-shaking: Apenas o código efetivamente utilizado do Runtime e das bibliotecas de componentes é enviado para o browser.
  • Minificação: Todo o código é comprimido para reduzir o tempo de transferência.
  • Code Splitting: O código é dividido em "chunks" por página/rota, permitindo carregamento sob demanda.

Clone this wiki locally