تم اقتراح تطبيق وظيفة memchr لنواة Linux، بحيث تعمل بشكل أسرع بما يصل إلى 4 مرات

تم اقتراح مجموعة من التصحيحات مع التنفيذ الأمثل لوظيفة memchr()، المستخدمة للبحث عن رمز في مصفوفة، لتضمينها في نواة Linux. على عكس الإصدار القديم، الذي كان يستخدم مقارنة البايت بالبايت، تم تصميم التنفيذ المقترح مع الأخذ في الاعتبار الاستخدام الكامل لسجلات وحدة المعالجة المركزية 64 و32 بت. بدلاً من البايتات، يتم إجراء المقارنة باستخدام الكلمات الآلية، مما يسمح بمقارنة 4 بايتات على الأقل في المرة الواحدة.

عند البحث في سلاسل كبيرة، تبين أن الخيار الجديد أسرع بحوالي 4 مرات من الخيار القديم (على سبيل المثال، لسلاسل مكونة من 1000 حرف). بالنسبة للسلاسل الصغيرة، فإن كفاءة التنفيذ الجديد ليست كبيرة جدًا، ولكنها لا تزال أعلى مقارنة بالإصدار الأصلي. في نواة لينكس، يصل حجم السلاسل النصية التي تمت معالجتها في memchr() إلى 512 بايت. زيادة الأداء لسلاسل 512 بايت، في الحالة التي يكون فيها الحرف الذي تم البحث عنه في نهاية السلسلة، هي 20%.

اختبار النواة 5.18 باستخدام خيار "memchr()" الجديد للبنيتين 32 بت و64 بت لم يكشف عن أي مشاكل. لم يتم تقييم مكاسب الأداء الإجمالية لأنظمة kernel الفرعية عند استخدام الإصدار الأمثل من "memchr()" بعد، ولم يتم تحليل جدوى استبدال التنفيذ (في كود kernel، تحدث استدعاءات وظيفة memchr() 129 مرة ، بما في ذلك رمز برامج التشغيل وأنظمة الملفات).

المصدر: opennet.ru

إضافة تعليق