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).
•
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.