پشتیبانی از Profile-Guided Optimization در نسخه 22.2.71 AGDE معرفی شد.
مکان یابی تنظیمات PGO
تنظیمات پروژه خود را از Solution Explorer باز کنید.
شکل 1: پنجره Visual Studio Solution Explorer.
مطمئن شوید که پلتفرم شما روی یک پیکربندی Android تنظیم شده است (به عنوان مثال، Android-arm64-v8a ).
در پانل سمت چپ، Configuration Properties > General را انتخاب کنید. به دنبال گروه دارایی به نام PGO باشید.
شکل 2: گفتگوی Project Properties.
ساخت های PGO-Instrumented در پروژه را فعال کنید
یک پیکربندی جدید به نام Instrumented را به پروژه خود اضافه کنید. این بر اساس پیکربندی است که در طول توسعه برای آزمایش استفاده می کنید، که باید ساخت بهینه سازی شده سنتی شما باشد (تا زمانی که تنظیمات بهینه سازی کامپایلر را حفظ کنید، همچنان می توانید ویژگی های اشکال زدایی اضافی را فعال کنید).
در گفتگوی صفحه Property روی Configuration Manager… کلیک کنید.
شکل 3: گفتگوی Configuration Manager.
در گفتگوی Configuration Manager، منوی کشویی Active solution configuration را انتخاب کنید و <New…> را انتخاب کنید.
شکل 4: ایجاد یک پیکربندی ساخت جدید.
... و یک پیکربندی جدید PGO-Instrumented ایجاد کنید.
شکل 5: گفتگوی پیکربندی راه حل جدید.
برای فعال کردن ساخت در حالت PGO-Instrumented، به طوری که بتوانید یک نمایه برای بازی خود ایجاد کنید، Instrumented را از لیست گزینههای تنظیمات حالت بهینهسازی Profile-Guided انتخاب کنید.
شکل 6: گفتگوی Project Properties، که تنظیمات PGO را برجسته می کند.
برای تنظیمات Profile Guided Optimization Profiles ، مسیر پوشه را وارد کنید تا فایل داده های پروفایل خروجی خام را در دستگاه Android خود بنویسید. معمولاً این مقدار باید چیزی شبیه /data/data/<package name>/cache/
باشد – که در آن <package name>
نام بسته کامل APK شما است – برای مثال com.google.sample.tunnel .
برای اطلاعات بیشتر در مورد نحوه عملکرد این کار، به مستندات Clang مراجعه کنید.
نوشتن اطلاعات نمایه با ابزار PGO در دستگاه شما
دادههای PGO معمولاً هنگام خروج فرآیند توسط سیستم ابزار دقیق PGO روی دستگاه نوشته میشود. در Android، برنامهها خارج نمیشوند - آنها همیشه خاتمه مییابند. این به این معنی است که عملکرد پیشفرض «نوشتن در دیسک» هرگز فعال نمیشود و برنامه شما باید دادههای PGO را به صورت دستی بنویسد.
برای نوشتن داده های نمایه، باید برنامه خود را صریحاً با __llvm_profile_write_file
تماس بگیرید. این نماد فقط در هنگام ساختن یک ساخت با ابزار PGO در دسترس است. برای آسانتر کردن این کار، توصیه میکنیم هنگام اعلان __llvm_profile_write_file
از الگوی زیر استفاده کنید.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
با فراخوانی این تابع، دادههای نمایه در پوشهای که قبلاً تعیین کردهاید، مینویسد.
اجرای اجرای پروفایل
برای تولید نمایه، APK خود را که با ابزار PGO ساخته شده روی دستگاه مورد نظر اجرا می کنید. پس از اینکه کد را برای رضایت خود اعمال کردید و با تابع __llvm_profile_write_file
تماس گرفتید، برنامه شما داده های نمایه را در فضای ذخیره سازی می نویسد.
در این مرحله، پروفایل ها را برای استفاده توسط کامپایلر از دستگاه کپی کنید.
آماده سازی داده های پروفایل برای استفاده توسط کامپایلر
هنگامی که به صورت مجزا استفاده می شود، ابزار خط فرمان llvm-profdata
که به عنوان بخشی از Clang/LLVM در Android NDK ارسال می شود، برای تهیه فایل های داده نمایه برای استفاده توسط کامپایلر در طول بهینه سازی هدایت شده توسط نمایه یک ساخت، استفاده می شود.
AGDE این مرحله را به طور خودکار برای شما با ادغام هر فایل داده نمایه ای که به پروژه خود اضافه کرده اید انجام می دهد و زمانی که تنظیم حالت بهینه سازی هدایت شده پروفایل در صفحات ویژگی پروژه روی Optimized تنظیم شده است، آنها را مصرف می کند.
ساخت پروژه خود با فعال کردن بهینه سازی هدایت شده توسط پروفایل
اکنون که نمایه(های) خود را گرفته اید و آن را به پروژه خود اضافه کرده اید، کامپایلر می تواند از آن داده ها برای تنظیم دقیق بهینه سازی ساخت شما استفاده کند.
یک پیکربندی پروژه جدید برای PGO-Optimized Build خود ایجاد کنید تا فقط در صورت نیاز در این حالت بسازید.
شکل 7: ایجاد یک پیکربندی جدید PGO- Optimized Build.
تنظیمات حالت بهینهسازی هدایت شده پروفایل را در صفحات ویژگی پروژه روی Optimized تنظیم کنید.
شکل 8: تنظیم حالت بهینه سازی PGO روی Optimized.
فایل ها را از دستگاه کپی کنید و در Solution Explorer به پروژه خود اضافه کنید . این فایلهای داده نمایه دفعه بعد که پیکربندی بهینهسازی شده PGO خود را ایجاد میکنید توسط کامپایلر انتخاب میشوند و برای تنظیم نحوه بهینهسازی کد شما توسط کامپایلر استفاده میشوند.
میتوانید فایلهای داده نمایه را از دستگاه با استفاده از ADB یا با استفاده از Android Device Explorer در پروژه خود کپی کنید.
استفاده از Profile-Guided Optimization خارج از AGDE
اگر از یک سیستم ساخت استفاده می کنید که توسط AGDE پشتیبانی نمی شود، ممکن است نیاز به ویرایش مستقیم بیلد خود داشته باشید. مستندات Clang سوئیچ های لازم را پوشش می دهد - -fprofile-generate
و -fprofile-use
.
اگر از یک موتور میانافزار برای بازی خود استفاده میکنید، به مستندات مربوط به موتور خود مراجعه کنید تا ببینید چگونه PGO را فعال کنید (در صورت پشتیبانی).