تعبيرات ريجكس في TruffleRuby: أسرع بـ 200 مرة من C وSIMD
تتناول هذه المدونة تحسين أداء ترميز سلسلة JSON في Ruby. تقارن المقاييس المعيارية ثلاثة نهج: نسخة نقية من Ruby، وامتداد C مع تعليمات SIMD، ونسخة نقية من Ruby على TruffleRuby. والمثير للدهشة أن النسخة النقية من Ruby في TruffleRuby، التي تستفيد من مُجمِّع JIT المتقدم الخاص بها ومحرك TRegex، أسرع بـ 20 مرة من امتداد C وSIMD، وأسرع بأكثر من 200 مرة من رمز C المرجعي في بعض الحالات. وينبع هذا من محرك TRegex الخاص بـ TruffleRuby، والذي يُجمِّع تعبيرات RegEx إلى آلات ذات حالات محدودة حتمية، مما يتجنب التراجع ويستخدم تعليمات SIMD للتحسين. تُظهر المقارنات المماثلة لـ `Time.new(String)` و `StringScanner#scan_integer` أن عمليات تنفيذ تعبيرات RegEx في TruffleRuby تتفوق بشكل كبير على عمليات تنفيذ C في CRuby. وهذا يُظهر أنه في بعض الحالات، يمكن أن يتجاوز رمز Ruby النقي المختصر، جنبًا إلى جنب مع مُجمِّع JIT متقدم، أداء لغات المستوى الأدنى.
اقرأ المزيد