ב-AGDE הוספנו ב-AGDE תמיכה באופטימיזציה מודרכת לפרופיל גרסה 22.2.71.
איתור הגדרות ה-PGO
פותחים את הגדרות הפרויקט ב-Solution Explorer.
איור 1: החלון של Visual Studio Solution Explorer.
צריך לוודא שהפלטפורמה מוגדרת לתצורת Android (לדוגמה, Android-arm64-v8a).
בחלונית השמאלית, בוחרים באפשרות Configuration Properties > 'מאפייני הגדרה > כללי. חיפוש של קבוצת הנכסים שנקראת PGO.
איור 2: תיבת הדו-שיח של מאפייני הפרויקט.
הפעלת בניית מודלים של PGO-Instrumented בפרויקט
מוסיפים לפרויקט מערך הגדרות אישיות חדש שנקרא Instrumented. מבוסס על בתצורה שבה משתמשים במהלך הפיתוח לבדיקה, את ה-build המסורתי שעבר אופטימיזציה (עדיין אפשר לבצע ניפוי באגים נוסף שמופעלות כל עוד לא משמרים את הגדרות האופטימיזציה של המהדר (compiler).
לוחצים על Configuration Manager... (מנהל ההגדרות) בתיבת הדו-שיח של הדף 'מאפיין'.
איור 3: תיבת הדו-שיח של מנהל ההגדרות.
בתיבת הדו-שיח 'מנהל התצורה', בוחרים באפשרות Active פתרון הגדרות אישיות ובוחרים <New...>.
איור 4: יצירת תצורת build חדשה.
... ויוצרים תצורה חדשה עם PGO-Instrument.
איור 5: תיבת הדו-שיח של הגדרת הפתרון החדש.
להפעלת בנייה במצב PGO-Instrumented, כדי שניתן יהיה ליצור פרופיל למשחק שלך, בוחרים כלים ברשימת האפשרויות ההגדרה מצב אופטימיזציה בהובלת פרופיל.
איור 6: תיבת הדו-שיח של מאפייני הפרויקט, שמדגישה את ההגדרות של PGO.
בהגדרה פרופילים מודרכים לאופטימיזציה של פרופיל, מזינים את הנתיב אל
כדי לכתוב בה את קובץ הנתונים הגולמיים של פרופיל הפלט במכשיר Android.
בדרך כלל הערך הזה צריך להיות משהו כמו /data/data/<package
name>/cache/
– כאשר <package name>
הוא שם החבילה המלא של
APK – לדוגמה, com.google.sample.tunnel.
למידע מעמיק יותר על אופן הפעולה, עיינו במאמר קלנג תיעוד.
כתיבת נתוני פרופיל במכשירים של PGO במכשיר
נתוני PGO בדרך כלל נכתבים למכשיר על ידי מערכת האינסטרומנטציה של PGO תהליך יוצא מהתהליך. ב-Android, לא ניתן לצאת מאפליקציות – הן תמיד נסגרות. הזה הוא ברירת המחדל 'כתיבה לדיסק' הפונקציונליות אף פעם לא מופעלת, מה שמחייב לכתוב נתוני PGO באופן ידני.
לאפליקציה שלך, עליך לקרוא במפורש ל-__llvm_profile_write_file
כדי לכתוב
נתוני הפרופיל. הסמל הזה זמין רק כשיוצרים מכשיר PGO
build. כדי להקל על התהליך, מומלץ להשתמש בדפוס הבא כאשר
קדימה, מצהיר/ה על __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-instrumentation
מכשיר היעד. לאחר הפעלת הקוד לשביעות רצונך,
הפעילה את הקריאה לפונקציה __llvm_profile_write_file
, האפליקציה
לכתוב את נתוני הפרופיל באחסון.
בשלב הזה, מעתיקים את הפרופילים שוב מהמכשיר לשימוש של המהדר.
הכנת נתוני פרופיל לשימוש על ידי המהדר
בשימוש מבודד, כלי שורת הפקודה llvm-profdata
שנשלח כחלק
של Clang/LLVM ב-Android NDK משמשים להכנת קבצים של נתוני פרופילים לשימוש.
על ידי המהדר במהלך אופטימיזציה מודרכת פרופיל של build.
חברת AGDE מבצעת את השלב הזה באופן אוטומטי על ידי מיזוג של כל פרופילים של קובצי נתונים שהוספתם לפרויקט, ומשתמשת בהם כאשר ההגדרה מצב אופטימיזציה בהנחיית פרופיל בדפי המאפיינים של הפרויקט היא מוגדר לאופטימיזציה.
בניית הפרויקט עם אופטימיזציה מודרכת פרופיל מופעלת
אחרי שתסיימו לצלם את הפרופילים שלכם ולהוסיף אותם לפרויקט, מהדרים יכולים להשתמש בנתונים האלה כדי לשפר את האופטימיזציה של ה-build.
יוצרים הגדרה חדשה של פרויקט ל-PGO-Optimized Build, כך שרק אתם לפתח במצב הזה כשיש צורך.
איור 7: יצירת הגדרה חדשה של build מותאם ל-PGO.
מגדירים את מצב אופטימיזציה מודרכת פרופיל בנכס הפרויקט דפים שעבר אופטימיזציה.
איור 8: הגדרת מצב האופטימיזציה של PGO ל'אופטימיזציה'.
מעתיקים את הקבצים מהמכשיר ומוסיפים אותם לפרויקט בפתרון. חוקר. המהדר אוסף את קובצי נתוני הפרופיל האלה בפעם הבאה שאתם בונים את התצורה שמותאמת ל-PGO, ומשמשים לכוונון האופן שבו המהדר מבצע אופטימיזציה של הקוד.
אפשר להעתיק את הקבצים של נתוני הפרופיל לפרויקט מהמכשיר באמצעות ADB, או באמצעות הכלי Android Device Explorer.
שימוש באופטימיזציה מודרכת בפרופיל מחוץ ל-AGDE
אם אתם משתמשים במערכת build שאינה נתמכת על ידי AGDE, יכול להיות שתצטרכו
לערוך ישירות את ה-build. קלאנג
תיעוד
כולל את המתגים הנדרשים – -fprofile-generate
,
-fprofile-use
אם משתמשים במנוע תווכה במשחק שלך, צריך לעיין במסמכי התיעוד של המנוע כדי לראות איך להפעיל PGO (אם הוא נתמך).