تقسيم الحلقة
تقسيم الحلقات هو أسلوب لتحسين أداء المترجم . وهو يحاول تبسيط الحلقة أو إزالة التبعيات عن طريق تقسيمها إلى حلقات متعددة لها نفس الأجزاء ولكنها تتكرر على أجزاء متجاورة مختلفة من نطاق الفهرس.
تقشير الحلقة
تقشير الحلقة هو حالة خاصة من تقسيم الحلقة حيث يتم فصل أي تكرارات قليلة إشكالية (أو الأخيرة) من الحلقة وتنفيذها خارج جسم الحلقة.
لنفترض أن حلقة تكرارية كُتبت على النحو التالي:
int p = 10 ; for ( int i = 0 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ p ]; p = i ; }لاحظ أن هذا ينطبق p = 10فقط على التكرار الأول، أما بالنسبة لجميع التكرارات الأخرى، p = i - 1فيمكن للمترجم الاستفادة من ذلك عن طريق فك (أو "تقشير") التكرار الأول من الحلقة.
بعد إزالة التكرار الأول، سيبدو الكود كالتالي:
y [ 0 ] = x [ 0 ] + x [ 10 ]; for ( int i = 1 ; i < 10 ; ++ i ) { y [ i ] = x [ i ] + x [ i - 1 ]; }هذا الشكل المكافئ يلغي الحاجة إلى المتغير pداخل جسم الحلقة.
تم إدخال تقشير الحلقة في gcc في الإصدار 3.4. تمت إضافة تقسيم الحلقة الأكثر عمومية في GCC 7. [ 1 ]
نبذة تاريخية عن المصطلح
يبدو أن مصطلح "التقشير" استُخدم لأول مرة من قِبل كانينغز، وتومسون، وسكولنيك [ 2 ] في بحثهم المنشور عام 1976 حول النماذج الحاسوبية للوراثة (البشرية). استُخدم المصطلح هناك للدلالة على طريقة لدمج المعلومات الظاهرية على الوالدين. ومنذ ذلك الحين، استُخدم المصطلح مرة أخرى في أبحاثهم، بما في ذلك بحثهم الرائد حول دوال الاحتمالية على الأنساب المعقدة. [ 3 ]
في مجال تكنولوجيا المترجمات، ظهر المصطلح لأول مرة في أواخر ثمانينيات القرن العشرين في أوراق بحثية حول VLIW والترجمة فائقة القياس. [ 4 ] [ 5 ]
مراجع
- ↑ سلسلة إصدارات GCC 7 — التغييرات والميزات الجديدة والإصلاحات - مشروع جنو
- ↑ كانينغز، سي.؛ طومسون، إي. أ.؛ سكولنيك، إتش. إتش. (1976). "الاشتقاق التكراري للاحتمالات على الأنساب المعقدة". التقدم في الاحتمالات التطبيقية . 8 (4): 622-625 . doi : 10.2307/1425918 . JSTOR 1425918 .
- ↑ كانينغز، سي.؛ طومسون، إي. أ.؛ سكولنيك، إتش. إتش. (1978). "دوال الاحتمال على الأنساب المعقدة". التقدم في الاحتمالات التطبيقية . 10 (1): 26-61 . doi : 10.2307/1426718 . JSTOR 1426718 .
- ↑ كالهان، د.؛ كينيدي، كين (1988). "تجميع البرامج للمعالجات المتعددة ذات الذاكرة الموزعة". مجلة الحوسبة الفائقة . 2 (2): 151-169 . doi : 10.1007/BF00128175 . S2CID 10214341 .
- ↑ ماهلك، إس. أ.؛ لين، دي. سي.؛ تشين، دبليو. واي.؛ هانك، آر. إي.؛ برينغمان، آر. إيه. (1992). دعم فعال للمترجم للتنفيذ المشروط باستخدام الكتلة الفائقة . الندوة الدولية السنوية الخامسة والعشرون حول الهندسة المعمارية الدقيقة. ص 45-54 .
للمزيد من القراءة
- كينيدي، كين ؛ ألين، راندي (2002). "الفصل 5.7. تقسيم مجموعة الفهرس - الفصل 5.7.2. تقشير الحلقة". تحسين المترجمات للهياكل الحديثة: منهج قائم على التبعية (طبعة رقمية مطبوعة من الطبعة الأولى، 2011 ). أكاديميك برس / مورغان كوفمان للنشر / إلسيفير . الصفحات 211-212 . ISBN 978-1-55860-286-1. إل سي سي إن 2001092381 .
- تحسينات المُترجم
