سؤال

وتحت أي ظرف من الظروف أن أتوقع أن يتفوق memcpys المهام على الأجهزة INTEL / AMD الحديثة؟ أنا أستخدم 4.2.x دول مجلس التعاون الخليجي على منصة إنتل 32 بت (ولكن أنا مهتم في 64 بت أيضا).

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

المحلول

ويجب أن لا نتوقع منهم مهام يتفوق. والسبب هو، فإن المترجم استخدام memcpy على أي حال عندما يعتقد أنه سيكون أسرع (إذا كنت تستخدم تحسين الأعلام). إن لم يكن، وإذا كان هيكل صغير يعقل أن تناسبها في السجلات، يمكن أن تستخدم التلاعب تسجيل المباشر الذي لا يتطلب أي الوصول إلى الذاكرة على الإطلاق.

ودول مجلس التعاون الخليجي لديها أنماط كتلة الخطوة الخاصة داخليا أن معرفة متى لتغيير مباشرة سجلات / خلايا الذاكرة، أو عند استخدام وظيفة memcpy. ملاحظة عند تعيين البنية، المترجم يعرف في وقت الترجمة كيفية كبيرة هذه الخطوة ستكون، لذلك يمكن انبسط نسخ صغيرة (لا تحرك ن مرات في الصف بدلا من حلقات) على سبيل المثال. ملاحظة -mno-memcpy:

-mmemcpy
-mno-memcpy
    Force (do not force) the use of "memcpy()" for non-trivial block moves.  
    The default is -mno-memcpy, which allows GCC to inline most constant-sized copies.

والذي يعرف على نحو أفضل عندما لاستخدام memcpy من المترجم نفسه؟

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