سؤال

دعنا نقول أن لدينا عدد صحيح سلبي يقول int a ؛

هل هناك تنفيذ أسرع ل -أ؟

هل يجب علي القيام ببعض العمليات الثنائية على هذا؟

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

المحلول

لتوضيح بيان باكس، و

ويست مكلفة المجمعين C ++ لاستخدام متمم ثنائي، إلا في حالة 1. عند تحويل نوع قعت إلى نوع غير موقعة، إذا كان الرقم سالبا، يجب أن يكون نتيجة للتحويل 2 في تكملة تمثيل صحيح.

وباختصار، ليس هناك طريقة أسرع من -a. حتى لو كانت هناك، فإنه لن يكون المحمولة. نأخذ في الاعتبار كذلك أن من السابق لأوانه الأمثل هو الشر. الملف التعليمات البرمجية أولا ومن ثم العمل على الاختناقات.

وانظر <م> وC ++ لغة برمجة، 3 إد. ، قسم C.6.2.1.

نصائح أخرى

من المؤكد تقريبًا أنه لا يوجد شيء أسرع من تعليمات NEG الخاصة برمز الجهاز والتي من المرجح أن يقوم المترجم الخاص بك بتحويلها إليها.

إذا كان هناك، أنا متأكد من أن المترجم سيستخدمه.

بالنسبة للرقم المكمل الثنائي، لا يمكنك إضافة 1 ولكن من المؤكد أن ذلك سيكون أبطأ.لكنني لست متأكدًا تمامًا من أن معايير C/C++ تفرض استخدام المكمل الثنائي (ربما لم أتحقق من ذلك).

أعتقد أن هذا السؤال يخص أولئك الذين يحاولون إعادة الكتابة strcpy() وآخرون للحصول على مزيد من السرعة.هؤلاء الناس يفترضون بسذاجة أن مكتبة C strcpy() لم يتم تحسينه بشكل كبير بالفعل باستخدام تعليمات رمز الجهاز الخاصة (بدلاً من حلقة مبسطة قد تكون المحاولة الأولى لمعظم الأشخاص).

هل قمت بإجراء اختبارات الأداء التي يبدو أنها تشير إلى أن رفضك يستغرق وقتًا طويلاً جدًا؟

<فكاهة-دقيقة-أو-ما-زوجتي-مكالمات-غير مضحكة>

    A NEG على 486 (حالة من الفن في المرة الأخيرة كان علي أن تقلق حول دورات الساعة) يأخذ 3 دورات على مدار الساعة (إصدار الذاكرة ، التسجيل يأخذ فقط 1) - أفترض أن الرقائق اللاحقة ستكون مماثل.على وحدة المعالجة المركزية 3 جيجا هرتز ، وهذا يعني أنه يمكنك القيام ب 1 مليار من هذه كل ثانية.أليس هذا بالسرعة الكافية؟

</subtle- Humor-or-what-my-wife-calls-unfunny>

هل سمعت عبارة "التحسين سابق لأوانه"؟ إذا كنت قد الأمثل <م> جميع من التعليمات البرمجية الخاصة بك، وهذا هو الشيء الوحيد الذي بقي، ودفع غرامة. إن لم يكن، كنت تهدر وقتك.

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

.

وفقط غريبة، ما أدى لك أن تسأل هذا السؤال؟ بالتأكيد لم يكن لأنك الكشف عن عنق الزجاجة.

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

جميع إجابات جيدة.

إذا (-a) يحدث فرقا، وكنت قد فعلت بعض ضبط الأداء جاد فعلا.

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

إذا كنت استمرار حقا يمكنك الحصول عليه وصولا الى حيث لديك لوضعها في الشمس الحارقة للحصول على الجزيئات القليلة الماضية من الوقت للخروج منه.

وهذا هو المستوى الذي (-a) قد تحدث فرقا.

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

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