- Arenen oder Regionen sind eine einfache und effektive Technik für Compiler und compilerähnliche Systeme.
- Die Abflachung abstrakter Syntaxbäume (ASTs) mit Arenen kann die Leistung verbessern und mehr Komfort bieten.
- Abflachung bedeutet, AST-Knoten in ein einziges Array zu packen und statt Zeigern Array-Indizes zu verwenden.
- Abgeflachte ASTs bieten Vorteile wie bessere Lokalität, kleinere Referenzen sowie günstigere Allokation und Freigabe.
- Abgeflachte ASTs können die Speicherverwaltung vereinfachen und eine bequeme Deduplizierung ermöglichen.
- Leistungsergebnisse zeigen, dass eine abgeflachte Interpreter-Version 2,4-mal schneller sein kann als eine normale Version.
- Durch die Nutzung der flachen AST-Darstellung lassen sich Rekursionen entfernen und lineare Durchläufe nutzen, um die Leistung weiter zu verbessern.
- Der Artikel behandelt die Leistungssteigerungen, die durch die Abflachung von Datenstrukturen in einem Interpreter für Programmiersprachen erzielt wurden.
- Zusätzlich zeigt der abgeflachte Interpreter im Vergleich zum rekursiven Interpreter eine Leistungsverbesserung von 8,2 %, mit 1,2 Sekunden gegenüber 1,3 Sekunden.
- Die Technik erfindet im Wesentlichen die Idee eines Bytecode-Interpreters neu, wobei die
Expr-Struktur als Bytecode-Befehl verwendet wird.
- Erwähnt werden weitere Artikel und Projekte zur Abflachung von Datenstrukturen im Zusammenhang mit LuaJIT, dem Sorbet-Type-Checker und der Oil-Shell.
- Ähnliche Konzepte rund um Abflachung und Lokalitätsoptimierung tauchen auch in Bereichen wie Videospielen, der Verarbeitung serialisierter Daten, datenorientiertem Design und Entity-Component-Systemen auf.
- Der Artikel empfiehlt außerdem den Beitrag von Inanna Malick, die dieselbe Technik auf eine in Rust implementierte Spielzeug-„Rechner“-Sprache anwendet.
- Es werden Einschränkungen bei der Verwendung dieser Technik in Rust diskutiert, darunter die Grenze, dass andere
Expr-Elemente nicht inline innerhalb der Expr-Struktur enthalten sein können.
- Die Leistungsvergleiche wurden auf einem MacBook Pro mit M1-Max-Prozessor und 32 GB Arbeitsspeicher durchgeführt, auf dem macOS 13.3.1 und Rust 1.69.0 liefen.
1 Kommentare
Hacker-News-Kommentar
pulldown-cmarkwird ein abgeflachter AST verwendet, um Inline-Markup effizient zu parsen.pulldown-cmarkist im Vergleich zu anderen CommonMark-Parsern herausragend.