پیکربندی بهینه سازی هدایت شده پروفایل در ویژوال استودیو

پشتیبانی از Profile-Guided Optimization در نسخه 22.2.71 AGDE معرفی شد.

مکان یابی تنظیمات PGO

تنظیمات پروژه خود را از Solution Explorer باز کنید.

منوی ویژگی های کاوشگر راه حل ویژوال استودیو برای پروژه فعلی.

شکل 1: پنجره Visual Studio Solution Explorer.

مطمئن شوید که پلتفرم شما روی یک پیکربندی Android تنظیم شده است (به عنوان مثال، Android-arm64-v8a ).

در پانل سمت چپ، Configuration Properties > General را انتخاب کنید. به دنبال گروه دارایی به نام PGO باشید.

گفتگوی خصوصیات پروژه با مشخصات عمومی نشان داده شده و تنظیمات PGO برجسته شده است

شکل 2: گفتگوی Project Properties.

ساخت های PGO-Instrumented در پروژه را فعال کنید

یک پیکربندی جدید به نام Instrumented را به پروژه خود اضافه کنید. این بر اساس پیکربندی است که در طول توسعه برای آزمایش استفاده می کنید، که باید ساخت بهینه سازی شده سنتی شما باشد (تا زمانی که تنظیمات بهینه سازی کامپایلر را حفظ کنید، همچنان می توانید ویژگی های اشکال زدایی اضافی را فعال کنید).

در گفتگوی صفحه Property روی Configuration Manager… کلیک کنید.

بالای کادر گفتگوی Property Pages که منوهای کشویی Active Solution Configuration and Platform و دکمه Configuration Manager را نشان می دهد.

شکل 3: گفتگوی Configuration Manager.

در گفتگوی Configuration Manager، منوی کشویی Active solution configuration را انتخاب کنید و <New…> را انتخاب کنید.

کادر گفتگوی Configuration Manager با منوی کشویی Active Solution Configuration باز شده و گزینه New برجسته شده است.

شکل 4: ایجاد یک پیکربندی ساخت جدید.

... و یک پیکربندی جدید PGO-Instrumented ایجاد کنید.

گفتگوی پیکربندی راه حل جدید، ایجاد یک پیکربندی ساخت جدید با ابزار PGO بر اساس پیکربندی ساخت نسخه موجود

شکل 5: گفتگوی پیکربندی راه حل جدید.

برای فعال کردن ساخت در حالت PGO-Instrumented، به طوری که بتوانید یک نمایه برای بازی خود ایجاد کنید، Instrumented را از لیست گزینه‌های تنظیمات حالت بهینه‌سازی Profile-Guided انتخاب کنید.

گفتگوی Project Properties، با تنظیمات عمومی، با تنظیمات PGO نشان داده شده، و حالت Profile Guided Optimization روی Instrumented تنظیم شده است.

شکل 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 خود ایجاد کنید تا فقط در صورت نیاز در این حالت بسازید.

گفتگوی New Solution Configuration یک پیکربندی ساخت بر اساس نسخه Release ایجاد می کند، اما این بار با PGO-Optimized به عنوان نام پیکربندی ساخت جدید.

شکل 7: ایجاد یک پیکربندی جدید PGO- Optimized Build.

تنظیمات حالت بهینه‌سازی هدایت شده پروفایل را در صفحات ویژگی پروژه روی Optimized تنظیم کنید.

گفتگوی Project Properties، با تنظیمات عمومی باز شده، با تنظیمات PGO نشان داده شده است، و حالت Profile Guided Optimization روی Optimized تنظیم شده است.

شکل 8: تنظیم حالت بهینه سازی PGO روی Optimized.

فایل ها را از دستگاه کپی کنید و در Solution Explorer به پروژه خود اضافه کنید . این فایل‌های داده نمایه دفعه بعد که پیکربندی بهینه‌سازی شده PGO خود را ایجاد می‌کنید توسط کامپایلر انتخاب می‌شوند و برای تنظیم نحوه بهینه‌سازی کد شما توسط کامپایلر استفاده می‌شوند.

می‌توانید فایل‌های داده نمایه را از دستگاه با استفاده از ADB یا با استفاده از Android Device Explorer در پروژه خود کپی کنید.

استفاده از Profile-Guided Optimization خارج از AGDE

اگر از یک سیستم ساخت استفاده می کنید که توسط AGDE پشتیبانی نمی شود، ممکن است نیاز به ویرایش مستقیم بیلد خود داشته باشید. مستندات Clang سوئیچ های لازم را پوشش می دهد - -fprofile-generate و -fprofile-use .

اگر از یک موتور میان‌افزار برای بازی خود استفاده می‌کنید، به مستندات مربوط به موتور خود مراجعه کنید تا ببینید چگونه PGO را فعال کنید (در صورت پشتیبانی).