النقاط التي يجب مراعاتها أثناء تصميم أو ترميز لتسليمات البصمة الأقل

StackOverflow https://stackoverflow.com/questions/2094895

  •  21-09-2019
  •  | 
  •  

سؤال

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

أنا لا أعطي تفاصيل البرمجة المترجم أو النظام الأساسي ، كما أريد معلومات عامة. ولكن ، أي معلومات محددة عن نظام التشغيل Linux مستند إلى نظام التشغيل Linux أيضًا.

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

المحلول

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

في الواقع هناك بعض القواعد التي قررناها:

  • لا تخصيص ديناميكي
  • وبالتالي ، لا STL
  • لا معالجة استثناء (أسباب واضحة)

نصائح أخرى

ليس هناك إجابة عامة, ، فقط تلك الخاصة باللغة/النظام الأساسي ... ولكن

بصمة الذاكرة الصغيرة ...

  1. لا تستخدم Java ، C#/Mono ، PHP ، Perl ، Python أو أي شيء مع مجموعة القمامة
  2. الحصول على أكبر على مقربة من المعدن حسب الإمكان, ، استخدم ج
  3. قم بعمل الكثير من التنميط لمعرفة أين يتم تخصيص الذاكرة ، إذا كنت تستخدم التخصيص الديناميكي
  4. ضمان لك منع التثبيت من خلال تخصيص قطع وأحجام معقولة من الكومة
  5. يتجنب وظائف العودية خاصة تلك التي تستخدم malloc (). من الأفضل تخصيص قطعة وتمرير مؤشر حولها.
  6. استخدم Free () ؛)
  7. تأكد من أن الأنواع الخاصة بك ليست أكبر من المطلوب
  8. قم بتشغيل تحسينات البرمجيات

سيكون هناك المزيد.

لبعض البصمة المنخفضة الحقيقية النظر في القيام بالتجميع مباشرة.

نعلم جميعًا أن Hello World في C أو C ++ هو 20 كيلو بايت+(بسبب جميع المكتبات الافتراضية التي يتم ربطها). في التجميع ، ذهب هذا النفقات العامة. كما هو موضح في التعليقات ، يمكن للمرء أن يقلل المكتبات القياسية قليلاً. ومع ذلك ، تظل الحقيقة هي أن كثافة الكود التي يمكنك الحصول عليها عندما تكون تجميع الترميز أعلى بكثير من برنامج التحويل البرمجي من لغة أعلى. لذلك بالنسبة للرمز حيث يهم كل بايت ، استخدم التجميع.

أيضًا عندما تكون البرمجة على الأجهزة ذات المعالجات الأقل قدرة ، قد تكون البرمجة بلغة التجميع هي الطريقة الوحيدة لجعل البرنامج سريعًا بما يكفي ليكون في الوقت الفعلي بما يكفي لآلات التحكم (على سبيل المثال)

عندما تواجه مثل هذه القيود ، يُنصح الذاكرة المسبقة لضمان أن يعمل النظام تحت الحمل. يمكن استخدام نمط تصميم مثل "تجميع الكائنات" لمشاركة الموارد داخل النظام.

ال ج تتيح اللغة التحكم في الموارد الضيقة (أي الذاكرة وحساب دورات). يجب النظر فيها بقوة.

يتجنب العودية نظرًا لأنه من السهل إساءة الاستخدام ويمكن أن يؤدي إلى ظروف الفائض.

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