
pgrust、全SQLクエリを約5マイクロ秒でJITコンパイル
pgrustのJITは、コピー&パッチ・ステンシルを使用して約5マイクロ秒でmachine 符号を出力する。これは、LLVMやC言語のコード生成を行うデータベースがミリ秒単位のコンパイル時間で処理できる一部のクエリにとどまらず、すべてのSQLクエリをコンパイルできる速さだ。RustによるARM64正規表現のウォークスルーは、LLVMなしでホットなインタプリタをJITコンパイルするための実用的なテンプレートとなっている。パターン「b(an)*」において、9文字の入力に対するマッチングは手書きコードの3.8nsに対して3.8ns、2,049文字の入力に対しては手書きコードの393nsに対して470nsで実行される。すべての実行時間は独立したベンチマークではなく、著者自身のmacOSでの測定値である。
出典: malisper.me ↗
「pgrust JITコンパイラは約5μsでコードをコンパイルする。これにより、すべてのSQLクエリをJITコンパイルでき、それらの一部だけではない」
pgrustの作者
なぜ重要か
- → すべてのSQLクエリを約5マイクロ秒でコンパイルし、コンパイル時のトレードオフを解消できるほど高速だ。
- → Copy-and-patch JITがLLVMのボトルネックを回避し、ホットなコードパスでの迅速なイテレーションを可能にする。
- → 新しいデータベースがパフォーマンス面で従来のエンジンに匹敵するか、それを上回る実現可能な道を拓く。
データベースJIT、爆速化