Expressions régulières TruffleRuby : 200 fois plus rapides que C et SIMD

2025-03-18
Expressions régulières TruffleRuby : 200 fois plus rapides que C et SIMD

Cet article de blog explore l’optimisation des performances pour l’échappement de chaînes JSON en Ruby. Les benchmarks comparent trois approches : une version pure Ruby, une extension C avec des instructions SIMD et une version pure Ruby sur TruffleRuby. Étonnamment, la version pure Ruby de TruffleRuby, tirant parti de son compilateur JIT avancé et du moteur TRegex, est 20 fois plus rapide que l’extension C et SIMD, et plus de 200 fois plus rapide que le code C de référence dans certains cas. Cela provient du moteur TRegex de TruffleRuby, qui compile les expressions régulières en automates finis déterministes, évitant ainsi le retour arrière et utilisant des instructions SIMD pour l’optimisation. Des comparaisons similaires sont montrées pour `Time.new(String)` et `StringScanner#scan_integer`, où les implémentations d’expressions régulières de TruffleRuby surpassent de manière significative les implémentations C de CRuby. Cela démontre que, dans certains cas, un code Ruby pur concis, combiné à un compilateur JIT avancé, peut surpasser les performances des langages de bas niveau.

Développement Expressions régulières