ساخت‌های شبانه Rust توانایی موازی کردن کامپایل را افزایش داده‌اند

قسمت جلویی کامپایلر Rust که وظایفی مانند تجزیه، بررسی نوع و تجزیه و تحلیل قرض را انجام می دهد، از اجرای موازی پشتیبانی می کند که می تواند زمان کامپایل را به میزان قابل توجهی کاهش دهد. موازی سازی در حال حاضر در ساخت های شبانه Rust موجود است و با استفاده از گزینه "-Z threads=8" فعال می شود. فرصت مورد نظر قرار است در سال 2024 در شعبه پایدار گنجانده شود.

کار بر روی کاهش زمان تدوین در Rust چندین سال است که ادامه دارد. در 10 ماه اول سال 2023، زمان کامپایل به طور متوسط ​​13 درصد کاهش یافت، اوج مصرف حافظه 15 درصد کاهش یافت و حجم فایل های تولید شده 7 درصد کاهش یافت. در این مرحله، شتاب از طریق بهینه سازی خود کامپایلر حاصل شد. پس از این، توسعه دهندگان با موازی کردن عملیات در زمان کامپایل، روی افزایش سرعت کار کردند.

تا کنون، موازی سازی در Rust بیشتر در سطح فرآیند انجام می شده است؛ به عنوان مثال، مدیر بسته Cargo می تواند چندین فرآیند rustc را برای کامپایل چندین بسته به طور همزمان راه اندازی کند. پشتیبانی موازی سازی نیز در کنار باطن وجود دارد، که عملیات مربوط به تولید کد را انجام می دهد - باطن Rust می تواند کد را در قسمت هایی تولید کند، که LLVM می تواند سپس به صورت موازی آنها را پردازش کند. این فرانت‌اند تاکنون فقط می‌توانست کد منبع را در حالت تک رشته‌ای پردازش کند.

برای پشتیبانی از موازی سازی، قسمت جلویی به استفاده از کتابخانه Rayon تغییر یافته و به طور قابل توجهی دوباره طراحی شده است، به عنوان مثال، بسیاری از قطعات آن اکنون با استفاده از mutexes و قفل خواندن/نوشتن همگام شده اند و کد از انواع اتمی استفاده می کند. در آزمایش عملکرد، پیاده‌سازی قابل موازی‌سازی جدید می‌تواند تا 2 درصد کندتر در حالت تک رشته‌ای (-Z threads=1) کامپایل شود، اما وقتی بیش از یک رشته وجود داشت، سرعت به‌طور قابل‌توجهی افزایش می‌یابد. به عنوان مثال، هنگام نصب 8 رشته (-Z threads = 8)، در برخی شرایط زمان کامپایل می تواند تا 50٪ کاهش یابد.

در این مورد، نتیجه به شدت به تنظیمات محیط و کد کامپایل شده بستگی دارد - برای برنامه های بسیار کوچکی که قبلاً به سرعت کامپایل می شوند، کامپایل در حالت چند رشته ای می تواند کندتر باشد. علاوه بر این، مصرف حافظه در حالت چند رشته ای می تواند به میزان قابل توجهی افزایش یابد؛ به عنوان مثال، در تست ها، افزایش مصرف حافظه تا 35 درصد مشاهده شد.

منبع: opennet.ru

اضافه کردن نظر