Optimierung des Purple Garden Lexers: Ein Geschwindigkeitsschub von 0 auf 580 MB/s

2025-07-14

Dieser Blogbeitrag beschreibt, wie der Autor den Lexer der Programmiersprache Purple Garden optimiert hat und dabei eine beeindruckende Geschwindigkeit von 580 MB/s erreicht hat. Verwendete Techniken umfassen berechnete Gotos, zeigerbasierte Strings ohne Kopien und Allokationen, eine Allocator-Schnittstelle, Token-Interning und vorkalkulierte Hash-Werte für Schlüsselwörter, was die Leistung des Lexers deutlich verbessert. Weitere Optimierungen betrafen Architekturverbesserungen und die Verwendung von mmap für schnelleres Dateilesen. Diese Optimierungen führten zu einer dramatischen Geschwindigkeitssteigerung, die die Verarbeitungszeit von Dutzenden Millisekunden auf nur wenige Millisekunden reduziert – ein echter Leistungssprung.

Mehr lesen
Entwicklung leistungsoptimierung

Ein robuster und effizienter JSON-Parser in reinem C

2025-03-01

Dieser Artikel beschreibt einen JSON-Parser, der vollständig in C implementiert ist. Mit einem objektorientierten Ansatz, bei dem Funktionen an Strukturen angehängt werden, zeichnet er sich durch verbesserte Lesbarkeit und Wartbarkeit aus. Die Sicherheit wird priorisiert, wodurch häufige Speicherlecks und Segmentierungsfehler vermieden werden. Eine saubere und ergonomische API wird bereitgestellt, zusammen mit Kompilierungsanweisungen, Anwendungsbeispielen und Best Practices für die C-Entwicklung, einschließlich Compiler-Flags für robusten Code. Der Autor demonstriert die Verwendung von variadischen Makros für die Inline-JSON-Generierung und effiziente Speicherverwaltungstechniken.

Mehr lesen
Entwicklung JSON-Parsing

Bash in Lua mit Neovim und Treesitter hervorheben

2025-01-28

Der Autor hat ein Tool erstellt, um Pakete auf mehreren Maschinen zu synchronisieren, mit einer Lua-Konfigurationsdatei. Um die Lesbarkeit und Bearbeitung von in die Lua-Konfiguration eingebetteten Bash-Skripten zu verbessern, verwendete er Neovim und das Treesitter-Plugin. Treesitter identifiziert über seine Injektionsfunktion das Feld `script` in Lua-Tabellen und hebt dessen Inhalt basierend auf einer benutzerdefinierten Abfrage als Bash hervor. Dies verbessert die Lesbarkeit und Wartbarkeit des Codes erheblich. Der Beitrag beschreibt detailliert die Konfiguration von Neovim und Treesitter sowie die benutzerdefinierte Abfrage, um die Bash-Hervorhebung zu erreichen.

Mehr lesen
Entwicklung

Einbetten von Lua in Rust für konfigurierbare statische SQL-Analyse in sqleibniz

2024-12-19

sqleibniz, ein Tool zur statischen SQL-Analyse für den SQLite-Dialekt, wurde durch Lua-Scripting für mehr Konfigurierbarkeit und Erweiterbarkeit verbessert. Der Autor beschreibt die Integration mit der mlua-Bibliothek in Rust, einschließlich der Datenstrukturkonvertierung, der Aufrufe von Lua-Funktionen und der Fehlerbehandlung. Lua-Skripte ermöglichen es Benutzern, benutzerdefinierte Regeln und Hooks zu definieren, was eine flexible statische Analyse ermöglicht, z. B. benutzerdefinierte Diagnosen und Stilprüfungen. Dies verbessert die Erweiterbarkeit und Benutzererfahrung von sqleibniz erheblich.

Mehr lesen
Entwicklung Statische Analyse