تحسين لغة دلفي
1) القيمة المرجعة لنوع السجل أو المصفوفة
لن يقوم مبرمجو C++ بذلك لأنه سيتم دفع القيمة المرجعة إلى المكدس، مما يؤدي إلى كفاءة الوقت والمساحة. لا تواجه دلفي هذه المشكلة، القيمة المرجعة تعادل معلمة Out، ويقوم المتصل بتمرير مؤشر وحدة الذاكرة. لذلك، يمكنك استخدام قيم إرجاع السجل أو المصفوفة لزيادة سهولة القراءة والراحة في كتابة التعبيرات.
2) التعبير العام
تقوم دلفي باستخراج التعبيرات الشائعة داخل سطر البيان فقط. إذا كان التعبير الشائع يحتوي على استدعاء دالة أو وصول إلى خاصية، فلا يتم استخراجه، أي يتم تقييمه مرتين، لأن الاستخراج قد يؤدي إلى تغيير الدلالات.
3) المعلمات الثابتة
عندما لا يتم تغيير معلمات الوظيفة، إذا تجاوز طول المعلمة 4 بايت أو كان عبارة عن واجهة أو سلسلة أو نوع صفيف ديناميكي، فإن استخدام معلمات const يسمح للمترجم بتمريرها في وضع العنوان دون تعديل التقنية المرجعية.
4) التقشف
ستقوم دلفي بتخصيص مساحة صغيرة قدر الإمكان عند تخصيص وحدات التخزين. إذا كان صغيرًا بدرجة كافية ويمكن وضعه في السجل، يتم استخدام التشغيل المباشر مع السجل بشكل عام. على سبيل المثال، عند تعيين سجلات أو بيانات بطول 4 بايت، سيستخدم المترجم تلقائيًا سجلات 32 بت وفقًا لـ DWord.
5) المشغل
سيتم تحسين القسمة على 2 أو 4 على التحول إلى اليمين، وسيتم تحسين الضرب على 2 أو 4 إلى التحول إلى اليسار، لذلك ليست هناك حاجة لاستخدام عمليات التحويل على وجه التحديد، ويمكن كتابة تعليمات برمجية أكثر قابلية للقراءة. لكن الضرب والقسمة على 8 ومضاعفات 2 الأخرى لن يكون لها هذا التحسين.
i := i + 1; and Inc(i); بشكل عام ينتج نفس الكود.
6) النقطة العائمة
لا تقوم دلفي بتحسين حسابات النقطة العائمة، وحتى إضافة عمليات صفرية لن يتم تحسينها، وسيتم إضافة العديد من تعليمات FWAIT. لذلك، عند كتابة عمليات الفاصلة العائمة الرئيسية، يجب عليك تحسين التعبيرات بنفسك واستخراج التعبيرات العامة بنفسك. استخدم أقل قدر ممكن من المتغيرات الوسيطة، لأن متغيرات الفاصلة العائمة لن يتم تحسينها وستتم كتابتها مرة أخرى إلى الذاكرة حتى إذا لم يتم استخدامها لاحقًا. استخدم التجميع إذا لزم الأمر، أو فكر في استخدام C. ومع ذلك، بشكل عام، لا يوجد فرق كبير في الأداء بين برامج الفاصلة العائمة المكافئة لـ Delphi وC.
7) مع البيان
مع يمكن إنشاء متغيرات وسيطة ضمنية لتجنب الحسابات المتكررة
8) الجمع
i في [0..31] أسرع من (i >= 0) و (i <= 31)
9) عرض البت
عند عدم استخدام الضغط، استخدم عددًا صحيحًا وأصليًا، لأن SmallInt وShortInt وByte وما إلى ذلك سيشغلون أيضًا 4 أو 8 بايت عند محاذاة البايت، ولا يزال حسابه 32 بت ويجب توسيعه إلى 32 بت أولاً.