استغلال القيود لتحقيق مكاسب كبيرة في الأداء: تحسين عد الأعداد الزوجية في لغة C++

2025-03-09

تتناول هذه المقالة تحسين أداء عد الأعداد الزوجية في مصفوفة uint8_t بلغة C++. من خلال مقارنة طريقتين - استخدام `std::count_if` ودالة عد مخصصة - يوضح الكاتب أن الدالة المخصصة، التي تستغل قيد أن عدد القيم الزوجية يتراوح بين 0 و 255، تحسن الأداء بشكل كبير، حيث تصل إلى سرعة أكبر بـ 9.5 مرة في الاختبارات. تحلل المقالة رمز التجميع الناتج عن كلا الطريقتين، وتشرح سبب اختلاف الأداء، وتذكر مشكلة في عملية التجهيز المتجهي في إصدارات محددة من GCC.

اقرأ المزيد

انحدار في تحسين أداء كلانغ: تسبب الدوال المضمنة في انخفاض الأداء في اختبار مقاييس الأداء بلغة ++C

2025-02-19

كشف اختبار مقاييس الأداء بلغة ++C عن انحدار في الأداء في تحسين الدوال المضمنة في كلانغ. عندما تم تضمين الدالة `increment`، أدت أخطاء التنبؤ بالفروع إلى تباطؤ الأداء بمقدار 5 مرات تقريبًا مقارنة بالإصدار غير المضمن. أكد `perf stat` أن تنبؤات الفروع الخاطئة هي السبب. ومن المثير للاهتمام، أن عملية الترجمة باستخدام مجموعة أدوات Zig حسنت الأداء بشكل كبير، مما يشير إلى وجود انحدار محتمل في كلانغ 19. وقد تم الإبلاغ عن المشكلة في مستودع Clang/LLVM، حيث تشير التحقيقات الأولية إلى وجود توازن بين عمليات تحسين SROA و SimplifyCFG.

اقرأ المزيد
التطوير