سؤال

منذ فترة طويلة ، لدي ذاكرة عالقة معي تقول إن المقارنات ضد الصفر أسرع من أي قيمة أخرى (Ahem Z80).

في بعض رمز C ، أكتب أريد تخطي القيم التي تحتوي على جميع أجزاء البتات. حاليا نوع هذه القيم char ولكن قد يتغير. لديّ اثنين من البديل المختلفة لإجراء الاختبار:

if (!~b)
    /* skip */

و

if (b == 0xff)
    /* skip */

بصرف النظر عن الأخير الذي يجعل الافتراض أن B هو char 8bit في حين أن الأول لا ، هل سيكون الأول أسرع من أي وقت مضى بسبب المقارنة القديمة إلى خدعة التحسين الصفر ، أم أن وحدات المعالجة المركزية اليوم تتجاوز هذا النوع من الأشياء؟

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

المحلول

إذا كان الأمر أسرع ، فسيقوم المترجم بديله لك.

بشكل عام ، لا يمكنك كتابة C بشكل أفضل من المترجم الذي يمكنه تحسينه. وهي بنية محددة على أي حال.

بالمختصر، لا تقلق بشأن هذا ما لم يكن هذا الفرع بين النانو-ثانية أمرًا مهمًا للغاية

نصائح أخرى

من ما أتذكره في فصول الهندسة المعمارية ، أعتقد أنها يجب أن تكون سريعة بنفس القدر. كلاهما لديه 2 تعليمات.

المثال الأول 1. نفي ب في سجل مؤقت 2. قارن سجل درجة الحرارة على قدم المساواة 0

المثال الثاني 1. قم بطرح 0xFF من B إلى سجل مؤقت 2. قارن سجل Temp يساوي 0

هذه متطابقة بشكل أساسي ، وإلى جانب ذلك ، حتى لو كانت بنيةك الخاصة تتطلب أكثر أو أقل من هذا ، فهل تستحق حقًا جزءًا من النانو ثانية؟ تم قضاء عدة دقائق فقط في الإجابة على هذا السؤال.

أود أن أقول إنه ليس ذلك كثيرًا وحدات المعالجة المركزية تتجاوز هذا النوع من الحيل كما هو المترجمين.

وحدات المعالجة المركزية اليوم نكون, ومع ذلك ، إلى جانب الحيل البسيطة التي تسحب ساعة إضافية أو اثنتين من السرعة. حتى إذا قمت بذلك 100000 مرة في الثانية ، فإننا لا نزال نتحدث فقط عن زيادة في سرعة 0.00003 ثانية على كمبيوتر 3 جيجا هرتز واحد - لا يستحق ببساطة وقتك للقلق بشأن أشياء مثل هذا.

اذهب مع الشخص الذي سيكون أسهل بالنسبة للشخص الذي يحافظ على الكود الذي يفهمه. إذا كان لديك منتج ناجح ، فإن معظم المصاريف في البرامج في الصيانة. إذا قمت بكتابة رمز خفي ، فأنت تضيفه إلى تلك النفقات. إذا لم يكن لديك منتج ناجح ، فهذا لا يهم لأنه لن يضطر أحد إلى الحفاظ عليه. لقد كنت في المواقف التي اضطررت فيها إلى إنقاذ كل بايت يمكنني ، واضطررت إلى اللجوء إلى الحيل مثل تلك التي قدمتها ، لكنني فقط أفعل ذلك كملاذ أخير للغاية.

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