Aula 05: Expressões Regulares e Scanners

Data de Publicação

25/03/2026

Data de Modificação

08/03/2026

Objetivos

  • Compreender a compilação dinâmica (JIT).
  • Otimização guiada por perfil (PGO).

Conteúdo

Linguagens como Java, JavaScript e C# compilam para bytecode (portável) e usam um JIT (Just-In-Time) na VM para compilar trechos “quentes” para código nativo em tempo de execução, combinando portabilidade com desempenho.

flowchart LR
  Bytecode[Bytecode] --> Interp[Intérprete]
  Interp --> Perfil[Perfil]
  Perfil --> JIT[JIT compila]
  JIT --> Nativo[Código nativo]
  Nativo --> Exec[Execução]

Motivação

JITs e otimizações guiadas por perfil são essenciais em:

  • Navegadores modernos (V8, SpiderMonkey) que executam grandes aplicações JavaScript.
  • JVMs e VMs de linguagens gerenciadas que precisam equilibrar tempo de startup com performance sustentada.
  • Runtimes de linguagens usadas em sistemas de alta disponibilidade, onde reotimizar "em tempo real" vale o custo.

Como funciona uma JVM HotSpot

  1. Interpretação: Começa interpretando o bytecode (lento, mas start rápido).
  2. Profiling: A VM conta quantas vezes cada função é chamada (“quente”).
  3. Compilação JIT (C1): Se a função ficar “morna”, o compilador C1 gera código nativo rápido (poucas otimizações).
  4. Compilação Otimizada (C2): Se ficar “muito quente”, o compilador C2 (lento, poderoso) gera código nativo pesadamente otimizado.

Especulação e Deotimização

O JIT faz apostas perigosas. Ex: “Este ‘if’ nunca foi tomado nas últimas 10 mil vezes, vou assumir que nunca será e remover o código”. Se a aposta falhar (o if for tomado), o JIT faz deotimização: descarta o código nativo e retorna ao intérprete (ou a uma versão menos otimizada).

Resumo

  • JIT: compila em tempo de execução trechos frequentemente executados; perfil guia quais trechos compilar. Especulação (ex.: assumir tipo ou branch) permite otimizações agressivas; deotimização corrige quando a especulação falha.
  • Modelo dominante em VMs modernas (HotSpot, V8, .NET).

Referências

  • Aho et al. (2006); Cooper & Torczon (2011).

Materiais da aula

Última atualização: 08/03/2026

De volta ao topo