سؤال

وأنا أحاول أن أجد معلومات عن سي العمومية وإلى أي مدى كان يستخدم وظائف SSE.

إذا هو الأمثل، هل يمكنني استخدامها خارج المربع؟

ويقول أنا باستخدام إحدى توزيعات لينكس أكبر، وأفترض أن سي العمومية التي تم جمعها لتكون عامة بقدر الإمكان وتكون محمولة قدر الإمكان، وبالتالي ليس الأمثل؟

وأنا بالتحديد مهتمة في وظائف memcpy وmemcmp وكيفية الحصول على هذه الوظائف في أسرع وقت ممكن.

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

المحلول

وسي العمومية 2.8 لا تستخدم SSE لmemcpy أو memcmp على الإطلاق (في إلى x86 أو x86_64) - يستخدم بعض التجمع مكتوبة بخط اليد والذي يتجنب أي شيء غير معتمد على كافة وحدات المعالجة المركزية من الأسرة. في سي العمومية 2.10، وهو نوع جديد من النقل، سيتم دعم STT_GNU_IFUNC ، الأمر الذي سيجعل تحسينات أفضل أساس على دعم وحدة المعالجة المركزية ممكن.

نصائح أخرى

إذا كنت ترجمة مع أعلى إعدادات الأمثل، memcpy ويمكن استبدال memcmp مع intrinsics من قبل المجمع ولا يدعون سي العمومية على الإطلاق. ثم مسيرة <م> mcpu و <م> خيارات مترجم ستختار أسرع التعليمات البرمجية.

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