مع نمو المشروع ، تبطئ سرعة الترجمة الخاصة بالمشروع. يصبح هذا ملحوظًا بشكل خاص عند اختبار البرنامج ، مع إجراء تغييرات صغيرة على البرنامج بشكل متوازٍ.
أولاً ، دعنا نتعرف على المدة التي يستغرقها المشروع في تحسيناتنا. للقيام بذلك ، أدخل في المحطة
defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES
للقيام بذلك ، انتقل إلى القسم Product hold مع الاستمرار وانقر فوق Clean Build Folder ، ثم أعد تجميع المشروع. مشروعي يجمع
81 ثانية . دعونا نرى ما ستكون النتيجة بعد التحسين.

بادئ ذي بدء ، يجب علينا معرفة أي الأماكن تبطئ تجميع. بشكل افتراضي ، لا يُظهر Xcode تحذيرًا حول مكان المشكلة ، ولكن يمكننا حلها.
أصعب الأماكن هي ميزات رائعة ونوع التحقق. لذلك ، نحتاج إلى إدخال هذين السطرين في القسم Build Settings -> Other Swift Flags -> Debug
-Xfrontend -warn-long-function-bodies=100 -Xfrontend -warn-long-expression-type-checking=100
(هنا لدينا وقت تجميع 100ms ، يمكننا وضع أي رقم)
مثال على مسودة العمل الخاصة بي

لدي قسم يستغرق 13778 مللي ثانية ، على الأرجح لن يكون لديك هذا ، ولكن بسبب تفاصيل المشروع ، لدي مثل هذه الأقسام. منذ أن تم بناء شجرة ثنائية لـ OCR.
نظرًا للتداخل العميق في بعضها البعض وتعريف النوع فقط في البداية ، وقبل علامة المساواة ، يحتاج المترجم إلى الكثير من الوقت لفهم النوع الموجود أمامه. (الشجرة تأخذ 30 خطوط ، وهنا جزء منها)
إلى
بعد
حددنا نوع كل تداخل وذهب التحذير.
نقطة ضعف أخرى هي عدة دوائر قصيرة على التوالي.
إلى
بعدالنوع المحدد بوضوح

بعد إصلاح جميع التحذيرات ، سوف نتحقق من وقت بناء المشروع مرة أخرى.
الآن يجمع المشروع
26 ثانية أسرع مرتين ونصف.

لا يزال هناك عمل يتعين القيام به ، ولكن تم حل المشاكل الأكثر وضوحا.