TruffleRuby正規表現:C言語とSIMDより200倍高速
2025-03-18
このブログ記事では、RubyにおけるJSON文字列エスケープのパフォーマンス最適化について考察しています。ベンチマークでは、3つのアプローチを比較しています。純粋なRubyバージョン、SIMD命令を使ったC拡張、そしてTruffleRuby上の純粋なRubyバージョンです。驚くべきことに、TruffleRubyの純粋なRubyバージョンは、高度なJITコンパイラとTRegexエンジンを活用することで、C拡張とSIMDよりも20倍高速であり、場合によっては基準となるCコードよりも200倍以上高速です。これは、TruffleRubyのTRegexエンジンが正規表現を決定性有限オートマトンにコンパイルし、バックトラッキングを回避し、SIMD命令を使用して最適化を行うためです。`Time.new(String)`と`StringScanner#scan_integer`についても同様の比較が行われており、TruffleRubyの正規表現実装はCRubyのC実装を大幅に上回っています。これは、高度なJITコンパイラと組み合わせた簡潔な純粋なRubyコードが、低レベル言語のパフォーマンスを上回ることがあることを示しています。
開発