لقد أدت تصميمات Rust Nightly إلى توسيع القدرة على موازنة التجميع

تدعم الواجهة الأمامية لمترجم Rust، الذي ينفذ مهام مثل التحليل والتحقق من النوع وتحليل الاقتراض، التنفيذ المتوازي، والذي يمكن أن يقلل بشكل كبير من وقت التجميع. الموازاة متاحة بالفعل في الإصدارات الليلية من Rust ويتم تمكينها باستخدام خيار "-Z threads=8". من المقرر أن يتم تضمين الفرصة قيد النظر في الفرع المستقر في عام 2024.

يستمر العمل على تقليل أوقات التجميع في Rust منذ عدة سنوات. في الأشهر العشرة الأولى من عام 10، تم تقليل أوقات التجميع بمتوسط ​​2023%، وتم تقليل ذروة استهلاك الذاكرة بنسبة 13%، كما تم تقليل حجم الملفات التي تم إنشاؤها بنسبة 15%. في هذه المرحلة، تم تحقيق التسريع من خلال تحسينات المترجم نفسه. بعد ذلك، انتقل المطورون إلى العمل على التسريع من خلال موازنة العمليات في وقت الترجمة.

حتى الآن، يتم إجراء الموازاة في Rust في الغالب على مستوى العملية؛ على سبيل المثال، يمكن لمدير حزمة Cargo إطلاق عمليات Rust متعددة لتجميع حزم متعددة في نفس الوقت. يتوفر دعم الموازاة أيضًا على جانب الواجهة الخلفية، والتي تنفذ العمليات المتعلقة بإنشاء التعليمات البرمجية - يمكن للواجهة الخلفية لـ Rust إنشاء تعليمات برمجية في أجزاء، والتي يمكن لـ LLVM بعد ذلك معالجتها بالتوازي. الواجهة الأمامية، حتى الآن، يمكنها فقط معالجة التعليمات البرمجية المصدر في وضع الترابط المفرد.

لدعم الموازاة، تم تحويل الواجهة الأمامية لاستخدام مكتبة Rayon وتم إعادة تصميمها بشكل كبير، على سبيل المثال، تتم الآن مزامنة العديد من أجزائها باستخدام كائنات المزامنة وأقفال القراءة/الكتابة، ويستخدم الكود الأنواع الذرية. في اختبار الأداء، يمكن أن يكون التنفيذ المتوازي الجديد أبطأ بنسبة تصل إلى 2% عند التشغيل في وضع الترابط الفردي (-Z Threads=1)، ولكن عندما يكون هناك أكثر من خيط واحد، تزيد السرعة بشكل ملحوظ. على سبيل المثال، عند تثبيت 8 سلاسل (-Z سلاسل = 8)، في بعض الحالات يمكن تقليل وقت الترجمة بنسبة 50%.

في هذه الحالة، تعتمد النتيجة بشدة على إعدادات البيئة والتعليمات البرمجية المترجمة - بالنسبة للبرامج الصغيرة جدًا التي يتم تجميعها بسرعة بالفعل، يمكن أن يكون التجميع في الوضع متعدد الخيوط أبطأ. بالإضافة إلى ذلك، يمكن أن يزيد استهلاك الذاكرة في الوضع متعدد الخيوط بشكل كبير، على سبيل المثال، في الاختبارات، لوحظت زيادة في استهلاك الذاكرة تصل إلى 35٪.

المصدر: opennet.ru

إضافة تعليق