HyperPB: Ein blitzschneller Go Protobuf-Parser, der UPB übertrifft

2025-07-24
HyperPB: Ein blitzschneller Go Protobuf-Parser, der UPB übertrifft

Dieser Artikel stellt HyperPB vor, einen unglaublich schnellen Protobuf-Parser, der in Go geschrieben wurde. Aufbauend auf den Stärken von UPB (einer der schnellsten Protobuf-Runtimes) nutzt HyperPB die Register-ABI von Go und das Fehlen undefinierten Verhaltens für signifikante Optimierungen. Mit JIT-Kompilierung und Online-PGO übertrifft er sowohl den von Protobuf Go generierten Code als auch vtprotobuf in Benchmark-Tests. Der Kern ist ein tabellengetriebener Interpreter, erweitert um clevere Optimierungen wie Zero-Copy-Techniken, Hot/Cold-Datenaufteilung und Arena-Wiederverwendung.

Mehr lesen
Entwicklung

Go's GC: Ein tiefer Einblick und ein benutzerdefinierter Arena-Allokator

2025-04-21
Go's GC: Ein tiefer Einblick und ein benutzerdefinierter Arena-Allokator

Dieser Artikel taucht tief in die Komplexitäten des Garbage Collectors von Go ein und nutzt dieses Wissen, um einen Hochleistungs-Arena-Allokator zu erstellen. Durch geschickte Ausnutzung des Verhaltens des Go-GC erreicht der Autor eine schnellere Speicherzuweisung als der integrierte Go-Allokator, insbesondere bei großen Zuweisungen. Der Artikel beschreibt detailliert die Entwurfsprinzipien, die Implementierung und die Benchmark-Ergebnisse des benutzerdefinierten Arena-Allokators und analysiert auch seine Leistung in Umgebungen mit hoher Parallelität.

Mehr lesen
Entwicklung

Target Triples: Ein Leitfaden durch das Compiler-Chaos

2025-04-15
Target Triples: Ein Leitfaden durch das Compiler-Chaos

Dieser Artikel befasst sich mit den Komplexitäten von Compiler-Target-Triples wie x86_64-unknown-linux-gnu. Er erklärt die Komponenten eines Triples (Architektur, Hersteller, Betriebssystem, ABI) und zeigt die Unterschiede zwischen der Behandlung durch GCC und LLVM auf. Der Artikel beschreibt detailliert die Namenskonventionen für verschiedene Architekturen (x86, ARM usw.), die Darstellung des Herstellers und des Betriebssystems und betont die Bedeutung von Konsistenz, um Verwirrung zu vermeiden. Letztlich rät der Autor davon ab, neue Target-Triple-Konventionen zu erfinden, wenn neue Toolchains erstellt werden, um die Zusammenarbeit zwischen Toolchains zu erleichtern.

Mehr lesen
Entwicklung Target Triples