HackerNews

Clang ASTをスリムで高速にする

Making the Clang AST Leaner and Faster

https://cppalliance.org/mizvekov,/clang/2025/10/20/Making-Clang-AST-Leaner-Faster.html


この記事では、モダンなC++コードベースが大規模な抽象構文木(AST)に依存することが多く、ClangのAST表現における小さな非効率がコンパイル時間に影響を与えることが述べられています。著者は、ASTの構造を改善し、型の表現を小さく、シンプルに、そして迅速に生成できるようにした結果、実際のプロジェクトでのビルド時間が短縮されたと報告しています。具体的には、Clang 22に実装されるこれらの変更により、メモリフットプリントが削減され、型のユニーク化コストが下がります。特に、テストが7%速くなったことや、Chromiumビルドが5%改善されたデータも挙げられています。新しいアプローチでは、ElaboratedTypeを排除し、RecordTypeの内部に直接格納することでメモリの使用量の削減とASTのトラバーサルの効率化が実現されました。この結果、C++におけるテンプレートコードのコンパイルが効率的に進むと期待されています。