از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
بهینه سازی خودکار بازخورد جهت دار (12 یا بالاتر)
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
سیستم ساخت آندروید که در اندروید 12 معرفی شد، از بهینه سازی ماژول های بومی اندروید که دارای قوانین ساخت طرح با استفاده از بهینه سازی خودکار بازخورد مستقیم (AutoFDO) هستند، پشتیبانی می کند. AutoFDO یک تکنیک بهینه سازی مبتنی بر نمونه برداری است. AutoFDO رفتار زمان اجرا باینری های سیستم را ضبط می کند و کامپایلرها را قادر می سازد تا عملکرد بهتری را بهینه کنند و در عین حال اندازه باینری را کاهش دهند. Android از جمعآوری نمایهها از دستگاههای X86، X86_64، ARM و ARM64 پشتیبانی میکند، اگرچه نمایهها را میتوان در معماریها استفاده کرد.
AutoFDO جانشین بهینه سازی هدایت شده پروفایل مبتنی بر ابزار دقیق (PGO) است.
در مقایسه با سایر پروفایل های مبتنی بر ابزار دقیق، AutoFDO دارای مزایای اضافی است:
جمع آوری داده های محجوب: نمایه های AutoFDO را می توان از دستگاه های توسعه یا کاربر بدون هیچ گونه تغییری در ساخت قوانین جمع آوری کرد.
نمایش استفاده در دنیای واقعی: AutoFDO رفتار استفاده در دنیای واقعی را با فرض جمعآوری پروفایلها از دستگاههای کاربر نشان میدهد، در حالی که ابزار دقیق PGO تنها نماینده حجم کاری مجموعه مصنوعی است. ایجاد یک مجموعه کاری که کاملاً با استفاده از دنیای واقعی مطابقت داشته باشد، به طور کلی ساده نیست.
AOSP با نمایه های AutoFDO برای اکثر پروژه های حیاتی عملکرد ارائه می شود. نمایهها از دستگاههای تلفن و تبلت جمعآوری شدهاند و نمایانگر الگوهای استفاده عمومی آنها هستند. پروفایل ها در زیر toolchain/pgo-profiles/sampling
قرار دارند. AFDO به طور پیش فرض در AOSP فعال است.
AutoFDO را برای قانون ساخت طرح اولیه فعال کنید
برای فعال کردن AutoFDO برای قوانین ساخت طرح، afdo: true
به کتابخانه مشترک یا قانون باینری اضافه کنید.
پروفایل ها را جمع آوری کنید
نمایه از پیش همراه ارائه شده با AOSP از این سناریوهای خاص پشتیبانی نمی کند:
- گنجاندن پروژه های اضافی AutoFDO
- وجود کدهای اصلاح شده محلی
- الگوهای استفاده منحصر به فرد مرتبط با سیستم شما
اگر یکی از این سناریوها را دارید، باید پروفایل ها را مستقیماً از دستگاه های توسعه یا کاربر جمع آوری کنید.
برای آموزش دقیق در مورد نحوه آماده سازی دستگاه های ARM برای جمع آوری نمایه های AutoFDO، به جمع آوری داده های ETM برای AutoFDO مراجعه کنید.
برای آموزش دقیق در مورد نحوه آماده سازی دستگاه های X86 برای جمع آوری پروفایل های AutoFDO، به جمع آوری داده های LBR برای AutoFDO مراجعه کنید.
برای اطلاعات در مورد نحوه فعال کردن جمعآوری، پردازش و آپلود خودکار نمایه پسزمینه، به Profcollect مراجعه کنید.
پروفایل های AutoFDO را تجزیه و تحلیل کنید
اندروید از پروفایل های استاندارد LLVM AutoFDO استفاده می کند. نمایه های AFDO را می توان با استفاده از ابزار llvm-profdata
LLVM خواند. اسکریپت afdo_summary.sh
( toolchain/pgo-profiles/scripts/afdo_summary.sh
) به طور خودکار بیشترین توابع اجرا شده را طبق نمایه AutoFDO ایجاد می کند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-29 بهوقت ساعت هماهنگ جهانی."],[],[],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."]]