النقاط التي يجب مراعاتها أثناء تصميم أو ترميز لتسليمات البصمة الأقل
-
21-09-2019 - |
سؤال
يرجى نشر النقاط التي يجب على المرء أن يضعها في الاعتبار أثناء تصميم أو الترميز لتسليم البصمة الأقل للأنظمة المدمجة.
أنا لا أعطي تفاصيل البرمجة المترجم أو النظام الأساسي ، كما أريد معلومات عامة. ولكن ، أي معلومات محددة عن نظام التشغيل Linux مستند إلى نظام التشغيل Linux أيضًا.
المحلول
يعتمد على مدى انخفاضك. أقوم حاليًا بترميز الطابعات المالية ، وليس هناك نظام تشغيل ، والقاعدة الرئيسية ليست تخصيص ذاكرة ديناميكية. الشيء المضحك هو أنني ما زلت أقنع الطاقم برمز C ++ حديث تمامًا ؛).
في الواقع هناك بعض القواعد التي قررناها:
- لا تخصيص ديناميكي
- وبالتالي ، لا STL
- لا معالجة استثناء (أسباب واضحة)
نصائح أخرى
ليس هناك إجابة عامة, ، فقط تلك الخاصة باللغة/النظام الأساسي ... ولكن
بصمة الذاكرة الصغيرة ...
- لا تستخدم Java ، C#/Mono ، PHP ، Perl ، Python أو أي شيء مع مجموعة القمامة
- الحصول على أكبر على مقربة من المعدن حسب الإمكان, ، استخدم ج
- قم بعمل الكثير من التنميط لمعرفة أين يتم تخصيص الذاكرة ، إذا كنت تستخدم التخصيص الديناميكي
- ضمان لك منع التثبيت من خلال تخصيص قطع وأحجام معقولة من الكومة
- يتجنب وظائف العودية خاصة تلك التي تستخدم malloc (). من الأفضل تخصيص قطعة وتمرير مؤشر حولها.
- استخدم Free () ؛)
- تأكد من أن الأنواع الخاصة بك ليست أكبر من المطلوب
- قم بتشغيل تحسينات البرمجيات
سيكون هناك المزيد.
لبعض البصمة المنخفضة الحقيقية النظر في القيام بالتجميع مباشرة.
نعلم جميعًا أن Hello World في C أو C ++ هو 20 كيلو بايت+(بسبب جميع المكتبات الافتراضية التي يتم ربطها). في التجميع ، ذهب هذا النفقات العامة. كما هو موضح في التعليقات ، يمكن للمرء أن يقلل المكتبات القياسية قليلاً. ومع ذلك ، تظل الحقيقة هي أن كثافة الكود التي يمكنك الحصول عليها عندما تكون تجميع الترميز أعلى بكثير من برنامج التحويل البرمجي من لغة أعلى. لذلك بالنسبة للرمز حيث يهم كل بايت ، استخدم التجميع.
أيضًا عندما تكون البرمجة على الأجهزة ذات المعالجات الأقل قدرة ، قد تكون البرمجة بلغة التجميع هي الطريقة الوحيدة لجعل البرنامج سريعًا بما يكفي ليكون في الوقت الفعلي بما يكفي لآلات التحكم (على سبيل المثال)
عندما تواجه مثل هذه القيود ، يُنصح الذاكرة المسبقة لضمان أن يعمل النظام تحت الحمل. يمكن استخدام نمط تصميم مثل "تجميع الكائنات" لمشاركة الموارد داخل النظام.
ال ج تتيح اللغة التحكم في الموارد الضيقة (أي الذاكرة وحساب دورات). يجب النظر فيها بقوة.
يتجنب العودية نظرًا لأنه من السهل إساءة الاستخدام ويمكن أن يؤدي إلى ظروف الفائض.