Android NDK - هل يدعم رمز الذراع المستقيم أو مجرد إبهام
-
24-09-2019 - |
سؤال
لقد طُلب مني تقييم منصة Android لمنتجنا وأنا أبحث في خيارات مختلفة ، أنا فقط أخدش السطح الآن والشيء الوحيد الذي يزعجني هو أنه لا يمكنني رؤية كيفية ترجمة رمز على مستقيم رمز الذراع (بدون إبهام) ، أعرف أن الإبهام يعمل أبطأ وسنحتاج إلى الأداء في الأقسام الرئيسية من الكود لدينا.
أنا فكر في يجب أن يكون فقط تعيين -march
العلم في LOCAL_CFLAGS
التابع Android.mk
ملف ، لكن لا يمكنني الحصول على ذلك للعمل ...
هل أستطيع مساعدتك؟
المحلول
تحديد العلم التالي لوحدة في Android.mk
سوف تجمع رمز الذراع المستقيم.
LOCAL_ARM_MODE := arm
قد يساعد التمكين التحسين أيضًا:
LOCAL_CFLAGS := -O3
نصائح أخرى
يمكنك بناء الذراع أو الإبهام أو مزيج من الاثنين.
في Makefile ، في LOCAL_SRC_FILES
, ، حيث ستدرج MyFile.c
, ، حدد MyFile.c.arm
(لا تقم بإعادة تسمية الملف على القرص ، فقط قم بذلك في قائمة ملفات المصدر). يتم استخدام هذه الاتفاقية في جميع أنحاء Android للرمز الذي هو أمر محترم (أو يحتاج فقط إلى الذراع لسبب ما).
تطبق الملاحظات المعتادة ، بالطبع: يميل رمز الإبهام إلى طلب المزيد من الإرشادات لإنجاز شيء ما ، ولكن كل تعليمات هي نصف الحجم ، وبالتالي فإن الكود عادة ما يكون أبطأ قليلاً ولكنه أيضًا أصغر قليلاً. في بعض الحالات ، يسمح الحجم الأصغر بتناسب أفضل مع ذاكرة التخزين المؤقت (الصغيرة) في وحدات المعالجة المركزية للذراع ، ويمكن أن تكون أسرع بالفعل.