اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
التحسين التلقائي المستنِد إلى الملاحظات (الإصدار 12 أو الإصدارات الأحدث)
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تم طرح نظام إنشاء Android في الإصدار 12 من نظام التشغيل Android، وهو يتيح تحسين وحدات Android الأصلية التي تحتوي على قواعد إنشاء مخطّط باستخدام التحسين التلقائي المرتكز على الملاحظات والآراء (AutoFDO). AutoFDO هي أسلوب تحسين مستند إلى تحليل عيّنات. يسجِّل AutoFDO سلوك وقت التشغيل لملفّات النظام الثنائية، ما يتيح للمجمِّعات إجراء تحسينات أفضل للأداء مع تقليل حجم الملف الثنائي أيضًا. يتيح نظام التشغيل Android جمع الملفات الشخصية من أجهزة X86 وX86_64
وARM وARM64، على الرغم من أنّه يمكن استخدام الملفات الشخصية على جميع الأنظمة الأساسية.
تحسين الأداء التلقائي بالاستناد إلى الأدوات (AutoFDO) هو البديل لميزة "التحسين بالاستناد إلى الملف الشخصي" (PGO) المستندة إلى الأدوات.
مقارنةً بالملفات الشخصية الأخرى المستندة إلى الأدوات، توفّر ميزة AutoFDO الفوائد التالية:
جمع البيانات بدون إزعاج المستخدمين: يمكن جمع الملفات الشخصية لميزة "إدارة البيانات الوصفية التلقائية" من
أجهزة المطوّرين أو المستخدمين بدون أي تعديل على قواعد الإنشاء.
تمثيل الاستخدام في الحياة الواقعية: يمثّل AutoFDO سلوك الاستخدام في الحياة الواقعية
بافتراض أنّه يتم جمع الملفات الشخصية من أجهزة المستخدمين، في حين يمثّل قياس الأداء PGO
حمل العمل الاصطناعي للجمع فقط. ليس من السهل عمومًا إنشاء حجم عمل جمع مطابق تمامًا للاستخدام في العالم الواقعي.
يتم شحن AOSP مع الملفات الشخصية لميزة AutoFDO لمعظم المشاريع المهمة من حيث الأداء. تم جمع هذه البكمات من الهواتف والأجهزة اللوحية، وهي تمثّل أنماط الاستخدام العامة. يمكن العثور على الملفات الشخصية ضمن
toolchain/pgo-profiles/sampling
. يتم تفعيل بروتوكول AFDO تلقائيًا على AOSP.
تفعيل ميزة AutoFDO لقاعدة إنشاء مخطّط عمل
لتفعيل ميزة "التوفّر التلقائي للبيانات" لقواعد إنشاء المخطّطات، يمكنك إلحاق afdo: true
بالمكتبة المشترَكة
أو قاعدة الملف الثنائي.
جمع الملفات الشخصية
لا يتيح الملف الشخصي المُجمَّع مسبقًا والمُقدَّم مع AOSP استخدام السيناريوهات التالية تحديدًا:
- تضمين مشاريع AutoFDO إضافية
- توفُّر رمز معدَّل محليًا
- أنماط الاستخدام الفريدة المرتبطة بنظامك
إذا كنت تواجه أحد هذه السيناريوهات، عليك جمع الملفات الشخصية مباشرةً من
أجهزة المستخدمين أو الأجهزة المخصّصة للتطوير.
للحصول على تعليمات تفصيلية حول كيفية إعداد أجهزة ARM لجمع ملفات AutoFDO الشخصية، يُرجى الرجوع إلى مقالة جمع بيانات ETM لميزة AutoFDO.
للحصول على تعليمات مفصّلة حول كيفية إعداد أجهزة X86 لجمع الملفات الشخصية لميزة AutoFDO، يُرجى الاطّلاع على مقالة جمع بيانات LBR لميزة
AutoFDO.
للحصول على معلومات عن كيفية تفعيل جمع الملفات الشخصية تلقائيًا في الخلفية،
ومعالجتها، وتحميلها، يُرجى الاطّلاع على
Profcollect.
تحليل الملفات الشخصية لميزة AutoFDO
يستخدم Android الملفات الشخصية العادية لميزة LLVM AutoFDO. يمكن قراءة الملفات الشخصية لنظام AFDO
باستخدام أداة llvm-profdata
من LLVM. ينشئ النص البرمجي afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
)
تلقائيًا الدوالّ التي يتم تنفيذها بشكلٍ متكرّر وفقًا لملف الشخصي
AutoFDO.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Automatic Feedback-Directed Optimization (12 or higher)\n\nIntroduced in Android 12, the Android build system supports optimizing native\nAndroid modules that have blueprint build rules using *Automatic\nFeedback-Directed Optimization (AutoFDO)*. AutoFDO is a sampling-based\noptimization technique. AutoFDO captures the runtime behavior of system\nbinaries, enabling compilers to make better performance optimizations while also\nreducing binary size. Android supports collecting profiles from X86, X86_64,\nARM, and ARM64 devices, although the profiles can be used across architectures.\n\nAutoFDO is the successor for instrumentation-based Profile-Guided Optimization\n(PGO).\n\nCompared to other instrumentation based profiles, AutoFDO has these additional\nbenefits:\n\n- Unobtrusive data collection: AutoFDO profiles can be collected from\n development or user devices without any modification to build rules.\n\n- Real-world usage representation: AutoFDO represents real-world usage behavior\n assuming profiles are collected from user devices, while instrumentation PGO\n is representative only of the synthetic collection workload. It isn't\n generally straightforward to create a collection workload that perfectly\n matches real world usage.\n\nAOSP ships with AutoFDO profiles for most performance-critical projects. The\nprofiles were collected from phone and tablet devices, and are representative of\ntheir general usage patterns. The profiles are located under\n`toolchain/pgo-profiles/sampling`. AFDO is enabled by default on AOSP.\n\nEnable AutoFDO for a blueprint build rule\n-----------------------------------------\n\nTo enable AutoFDO for blueprint build rules, append `afdo: true` to the shared\nlibrary or binary rule.\n\nCollect profiles\n----------------\n\nThe prebundled profile provided with AOSP doesn't support these specific\nscenarios:\n\n- The inclusion of additional AutoFDO projects\n- The presence of locally modified code\n- Unique usage patterns associated with your system\n\nIf you have one of these scenarios, you must gather profiles directly from\ndevelopment or user devices.\n\nFor detailed instruction on how to prepare ARM devices for\ncollecting AutoFDO profiles, refer to\n[Collect ETM data for\nAutoFDO](https://android.googlesource.com/platform/system/extras/+/refs/heads/android16-release/simpleperf/doc/collect_etm_data_for_autofdo.md).\n\nFor detailed instruction on how to prepare X86 devices for\ncollecting AutoFDO profiles, refer to [Collect LBR data for\nAutoFDO](https://android.googlesource.com/platform/system/extras/+/refs/heads/android16-release/simpleperf/doc/collect_lbr_data_for_autofdo.md).\n\nFor information on how to enable automatic background profile collection,\nprocessing, and uploading, see\n[Profcollect](https://android.googlesource.com/platform/system/extras/+/refs/heads/android16-release/profcollectd/README.md).\n\nAnalyze AutoFDO profiles\n------------------------\n\nAndroid uses standard LLVM AutoFDO profiles. The AFDO profiles can be read\nusing the LLVM's `llvm-profdata` tool. The `afdo_summary.sh` script\n([`toolchain/pgo-profiles/scripts/afdo_summary.sh`](https://cs.android.com/android/platform/superproject/+/android-latest-release:toolchain/pgo-profiles/scripts/afdo_summary.sh))\nautomatically generates the most frequently executed functions according to the\nAutoFDO profile."]]