الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل المترجم بقوم بإختصار المعادلات أم أنا الذي أقوم به ؟؟

بدأه omar_cplusplus في 2 يوليو 2008 · 1 رد · 631 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

بعض الناس عندما يقوم بكتابة معادلات ... مثلاً يريد التحويل زاوية من Degree إلى Radian ... يضع في المعادلة هذا الأمر مثلاً

theta = 90/180*Math.PI * Math.cos( Math.atan( x/z ) );

و لكنه كان من الأفضل أن يقول

theta = 1.5707963267948966*Math.cos(Math.atan(x/z));

لأن البرنامج سيقوم بحساب قيمة 90 مقسومة على 180 ثم يقوم بالكشف عن قيمة Math.PI ثم يقوم بضربها في ناتج الضرب السابق ثم يخرج القيمة

لكن طالما أن النتيجة معروفة من البداية فلماذا لا أكتبها .. لأنه احياناً في الألعاب الثقيلة من الأفضل أن أختصر المعادلة حتى لا أبطئ المعالج أكثر ..

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

و هل إذا كتبت

theta = Math.PI;

أبطء من أن أكتب

theta = 3.141592653589793;

لأنه سوف يذهب لينظر في قيمة المتغير ثم يضعها في الtheta أما في النموذج الثاني سيضع الرقم مباشرة دون البحث عن المتغير ..

فهل هذا صحيح ؟؟؟

و جزاكم الله خيراً

#2

مترجم الجافا على حسب ما أذكر

يحتوي على ميزة

يقوم باستبدال كل الثوابت بالقيمة الخاصة بها وقت الترجمة

لا أعلم إن كان يجري عمليات ضرب الأعداد الثابتة

لكن هذا غير مستبعد

بالنسبة للثوابت في جافا يوجد نوعين

النوع الأول

يجب إعطاؤه قيمة في وقت إشهاره

وهو الذي يكون على الصورة التالية

public static final abc

على فكرة الباي من هذا النوع

وهذا ما يسمى بثابت على مستوى الفئة class

والنوع الثاني

يمكن إعطاؤه قيمة عن طريق صانع الكائنات

وهو الذي يكون على الصورة التالية

public final abc

وهذا ما يسمى بثابت على مستوى الكائن object

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…