HyperPB: Um analisador Protobuf Go ultrarrápido que supera o UPB

2025-07-24
HyperPB: Um analisador Protobuf Go ultrarrápido que supera o UPB

Este artigo apresenta o HyperPB, um analisador Protobuf incrivelmente rápido escrito em Go. Baseado nas vantagens do UPB (uma das runtimes Protobuf mais rápidas), o HyperPB aproveita o ABI de registradores do Go e a ausência de comportamento indefinido para otimizações significativas. Utilizando compilação JIT e PGO online, ele supera o código gerado pelo próprio Protobuf Go e o vtprotobuf em testes de benchmark. Seu núcleo é um interpretador baseado em tabelas, aprimorado com otimizações inteligentes como técnicas de zero-cópia, divisão de dados quentes/frios e reutilização de arena.

Leia mais
Desenvolvimento

GC do Go: Uma Imersão Profunda e um Alocador de Arena Personalizado

2025-04-21
GC do Go: Uma Imersão Profunda e um Alocador de Arena Personalizado

Este artigo mergulha nas intrincadezas do garbage collection do Go e usa esse conhecimento para construir um alocador de arena de alto desempenho. Ao explorar inteligentemente o comportamento do GC do Go, o autor consegue uma alocação de memória mais rápida do que o alocador embutido do Go, especialmente para alocações em larga escala. O artigo detalha os princípios de design, a implementação e os resultados de benchmark do alocador de arena personalizado, analisando também seu desempenho em ambientes de alta concorrência.

Leia mais
Desenvolvimento Alocação de Memória

Triplas de Destino: Um Guia para o Caos do Compilador

2025-04-15
Triplas de Destino: Um Guia para o Caos do Compilador

Este artigo mergulha nas complexidades das triplas de destino do compilador, como x86_64-unknown-linux-gnu. Ele explica os componentes de uma tripla (arquitetura, fornecedor, SO, ABI) e revela as diferenças entre o tratamento do GCC e do LLVM. O artigo detalha as convenções de nomenclatura para várias arquiteturas (x86, ARM, etc.), representação de fornecedor e SO, e enfatiza a importância da consistência para evitar confusão. Por fim, o autor aconselha contra a invenção de novas convenções de triplas de destino ao criar novas cadeias de ferramentas para facilitar a colaboração entre cadeias de ferramentas.

Leia mais
Desenvolvimento triplas de destino