الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة

جدول المحتويات:

الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة
الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة

فيديو: الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة

فيديو: الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة
فيديو: أهمية الفروق بين الأكواد علي برامج التصميم الانشائي 2024, سبتمبر
Anonim

الفرق الرئيسي - المعتمد على الآلة مقابل تحسين الكود المستقل للآلة

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

ما هو تحسين الكود المعتمد على الآلة؟

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

هنا ، p ، q هي أعداد صحيحة ، لكن r عدد عائم. باستخدام المحلل الدلالي ، يتم تحويل المتغير الصحيح c إلى عدد عشري. لذلك ، يقوم بالتحليل الدلالي. ينتقل إخراج المحلل الدلالي إلى منشئ الشفرة الوسيطة. تقوم بإرجاع رمز وسيط والذي ينتقل بعد ذلك إلى مُحسِّن التعليمات البرمجية. تحسين الكود هو عملية التخلص من عبارات البرنامج غير الأساسية دون تغيير معنى كود المصدر الفعلي. إنه ليس تحسينًا إلزاميًا ولكن يمكنه تحسين وقت تشغيل الكود الهدف.يتم إعطاء ناتج مُحسِّن الكود إلى مُنشئ الكود ، وفي النهاية يتم إنشاء الكود الهدف.

الفرق بين تحسين الكود المعتمد على الآلة والآلة
الفرق بين تحسين الكود المعتمد على الآلة والآلة
الفرق بين تحسين الكود المعتمد على الآلة والآلة
الفرق بين تحسين الكود المعتمد على الآلة والآلة

الشكل 01: مراحل المترجم

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

ما هو تحسين الكود المستقل للآلة؟

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

اقرأ الأسطر التالية من التعليمات البرمجية.

لـ (j=0 ؛ j<10 ؛ j ++) {

ب=س + 2 ؛

a [j]=5j ؛

}

وفقًا للكود أعلاه ، يتم حساب b=x + 2 مرارًا وتكرارًا في كل تكرار. بمجرد حساب ب ، فإنه لا يتغير. لذلك ، يمكن وضع هذا الخط خارج الحلقة على النحو التالي.

ب=س + 2 ؛

لـ (j=0 ؛ j< 10 ؛ j ++)

{a [j]=5j ؛

}

هذا يسمى حركة الكود.

اقرأ الأسطر التالية من التعليمات البرمجية.

ي=5 ؛

إذا (ي==10) {

أ=ب + 20 ؛

}

وفقًا للكود أعلاه ، لن يتم تنفيذ "if block" أبدًا لأن قيمة j لن تساوي أبدًا 10. وقد تمت تهيئته بالفعل إلى القيمة 5. لذلك ، يمكن إزالة الكتلة. هذه التقنية هي القضاء على التعليمات البرمجية الميتة.

طريقة أخرى هي تقليل القوة. تتطلب العمليات الحسابية مثل الضرب مزيدًا من الذاكرة والوقت ودورات وحدة المعالجة المركزية. يمكن استبدال هذه التعبيرات باهظة الثمن بتعبيرات رخيصة مثل ب=أ2 ؛ أو يمكن استبدالها بالجمع ، ب=أ + أ ؛

راجع الكود أدناه

لـ (j=1 ؛ j <=5 ؛ j ++) {

value=j5 ؛

}

بدلا من الضرب يمكن تغيير الكود على النحو التالي

int temp=5 ؛

لـ (j=1 ؛ j<=5 ؛ j ++) {

temp=temp + 5 ؛

قيمة=temp ؛

}

يمكن تقييم التعبيرات التي هي ثوابت في وقت التشغيل. يطلق عليه الطي المستمر. يمكن ذكر ذلك مثل b [j + 1]=c [j + 1] ؛

بدلاً من ذلك ، يمكن تغييرها على النحو التالي.

n=j +1 ؛

ب [n]=ج [n] ؛

يمكن أن يكون هناك حلقات على النحو التالي.

لـ (j=0 ؛ j<5 ؛ j ++) {

printf (“a / n”) ؛

}

لـ (j=0 ؛ j <5 ؛ j ++) {

printf (“b / n”) ؛

}

طباعة a و b ، كلاهما لهما نفس عدد التكرارات. يمكن دمج كلاهما في حلقة for واحدة على النحو التالي.

لـ (j=0 ؛ j <5 ؛ j ++) {

printf (“a / n”) ؛

printf (“b / n”) ؛

}

أسلوب مهم آخر هو حذف التعبير الفرعي المشترك. هو استبدال التعبيرات المتطابقة بمتغير واحد لإجراء الحساب. راجع الكود أدناه.

أ=بج + ك ؛

د=بج + م ؛

يمكن تحويل هذا الرمز على النحو التالي.

temp=bc ؛

a=temp + k ؛

د=temp + m ؛

ليس مطلوبًا حساب بج مرارًا وتكرارًا. يمكن تخزين القيمة المضاعفة في متغير وإعادة استخدامها.

ما هو التشابه بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة؟

كلاهما ينتمي إلى تحسين الكود

ما هو الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة؟

المعتمد على الآلة مقابل تحسين الكود المستقل للآلة

يتم تطبيق تحسين الكود المعتمد على الآلة على كود الكائن. يتم تطبيق تحسين الكود المستقل عن الآلة على الكود الوسيط.
المشاركة مع الأجهزة
التحسين المعتمد على الآلة يتضمن سجلات وحدة المعالجة المركزية ومراجع الذاكرة المطلقة. لا يتضمن تحسين الكود المستقل للآلة سجلات وحدة المعالجة المركزية أو مراجع الذاكرة المطلقة.

ملخص - المعتمد على الآلة مقابل تحسين الكود المستقل للآلة

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

قم بتنزيل نسخة PDF من تحسين الكود المستقل للآلة مقابل تحسين الكود المستقل للآلة

يمكنك تنزيل نسخة PDF من هذه المقالة واستخدامها للأغراض غير المتصلة بالإنترنت وفقًا لملاحظة الاقتباس. يرجى تنزيل نسخة PDF هنا الفرق بين تحسين الكود المعتمد على الآلة والمستقل عن الآلة

موصى به: