HyperPB : Un analyseur Protobuf Go ultra-rapide surpassant UPB

2025-07-24
HyperPB : Un analyseur Protobuf Go ultra-rapide surpassant UPB

Cet article présente HyperPB, un analyseur Protobuf incroyablement rapide écrit en Go. S’appuyant sur les points forts d’UPB (l’un des runtimes Protobuf les plus rapides), HyperPB tire parti de l’ABI des registres de Go et de l’absence de comportement indéfini pour des optimisations significatives. Utilisant la compilation JIT et le PGO en ligne, il surpasse le code généré par Protobuf Go lui-même et vtprotobuf lors des tests de référence. Son cœur est un interpréteur piloté par table, amélioré par des optimisations intelligentes telles que les techniques de copie zéro, la séparation des données chaudes/froides et la réutilisation de l’arena.

Lire plus
Développement

GC de Go : Plongeon profond et allocateur d'arène personnalisé

2025-04-21
GC de Go : Plongeon profond et allocateur d'arène personnalisé

Cet article explore les complexités du garbage collector de Go et utilise ces connaissances pour construire un allocateur d'arène hautes performances. En exploitant intelligemment le comportement du GC de Go, l'auteur obtient une allocation mémoire plus rapide que l'allocateur intégré de Go, notamment pour les allocations à grande échelle. L'article détaille les principes de conception, l'implémentation et les résultats de benchmark de l'allocateur d'arène personnalisé, et analyse également ses performances dans des environnements à forte concurrence.

Lire plus

Triples de cible : un guide dans le chaos du compilateur

2025-04-15
Triples de cible : un guide dans le chaos du compilateur

Cet article explore les complexités des triples de cible du compilateur, tels que x86_64-unknown-linux-gnu. Il explique les composants d’un triple (architecture, fournisseur, système d’exploitation, ABI) et révèle les différences entre la gestion de GCC et de LLVM. L’article détaille les conventions de nommage pour diverses architectures (x86, ARM, etc.), la représentation du fournisseur et du système d’exploitation, et souligne l’importance de la cohérence pour éviter toute confusion. En fin de compte, l’auteur déconseille d’inventer de nouvelles conventions de triples de cible lors de la création de nouvelles chaînes d’outils pour faciliter la collaboration entre les chaînes d’outils.

Lire plus
Développement triples de cible