سؤال

لديّ مشروع له كمية هائلة من التعليمات البرمجية التي تم إنشاؤها تلقائيًا ، والتي نقوم ببنائها في مكتبة ثابتة قبل الارتباط في النهائي القابل للتنفيذ. نحن نستخدم GCC/GNAT 5.04A هناك العديد من الملفات ، وعلينا أن نحطم المهمة إلى دفعات واستدعاء عدة مرات لبناء المكتبة (من أجل تجنب الحد من طول خط الأوامر) ، على سبيل المثال:

 [echo] Archiving codegen                   
 [echo] Deleting old codegen archive                     
   [ar] Using ar found in /usr/bin          
   [ar] Batch 1 of 7 completed in 37.871 s  
   [ar] Batch 2 of 7 completed in 55.796 s  
   [ar] Batch 3 of 7 completed in 89.709 s  
   [ar] Batch 4 of 7 completed in 256.894 s 
   [ar] Batch 5 of 7 completed in 196.704 s 
   [ar] Batch 6 of 7 completed in 248.334 s 
   [ar] Batch 7 of 7 completed in 243.759 s 
   [ar] Archiving took: 1129.067 s          
   [ar] Using ranlib found in /usr/bin      
   [ar] Indexing took: 247.223 s            
 [echo] Done with codegen                   

نحن نبحث عن تحسينات السرعة المحتملة. يبدو أنه مع نمو الأرشيف ، تستغرق كل دفعة أطول وأطول ، ويفترض أنه يحتوي على المزيد للبحث (للحصول على التحديثات) قبل إضافة كائنات. يبدو أن هذا هو السبب في أن حذف الأرشيف يجعله أسرع من مجرد تحديث الأرشيف القديم في مكانه. في بحثنا عن المزيد من السرعة ، نستخدم الأعلام "QCS" إلى أمر AR. وفقًا لصفحة MAN ، "Q" (التي يجب أن تكون سريعة في التطبيق) هي في الحقيقة مرادف لـ "r" (وهو "استخدام بديل") ، "C" ينشئ الأرشيف (لا شيء خاص هناك) و "S" Skips إنشاء فهرس (والذي نغطيه باستخدام "RANLIB" مرة أخرى في النهاية.

هل هناك أي طريقة مريحة ، باستخدام الأدوات المدمجة ، لجعل هذه العملية أسرع؟ إذا نجح وضع "الإلحاق السريع" ، فمن المحتمل أن يكون ما نريده ، ولكن للأسف.

هل كانت مفيدة؟

المحلول

لقد وجدنا أن جزءًا كبيرًا من مشكلة التوقيت كان موقع الملفات التي يتم أرشفتها. الأرقام المذكورة أعلاه مخصصة لملفات الكائنات والرشفة الموجودة على جهاز NAS. إن القيام بنفس العملية على القرص الصلب المحلي (التخزين المؤقت) يقلل من الوقت إلى 20 - 40 ثانية تقريبًا. يستغرق نسخ جميع الملفات ، والقيام بالأرشيف المحلي ، ونسخ النتيجة مرة أخرى وقتًا أطول من الأرشفة مباشرة على NAS ، لكننا نتطلع إلى نقل عملية الإنشاء بالكامل إلى التخزين المؤقت المحلي ، والتي يجب أن تحسن الأداء بشكل كبير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top