Visual Studio'da Profile Dayalı Optimizasyonu Yapılandırma

Profil Rehberli Optimizasyon desteği, AGDE 22.2.71 sürümünde kullanıma sunulmuştur.

PGO ayarlarını bulma

Çözüm Gezgini'nden proje ayarlarınızı açın.

Mevcut proje için Visual Studio Çözüm gezgini özellikleri menüsü.

Şekil 1: Visual Studio Solution Explorer penceresi.

Platformunuzun bir Android yapılandırmasına ayarlandığından emin olun (örneğin, Android-arm64-v8a).

Sol taraftaki panelde, Yapılandırma Özellikleri > Genel'i seçin. PGO adlı mülk grubunu bulun.

Genel özelliklerin gösterildiği ve PGO ayarlarının vurgulandığı proje özellikleri iletişim kutusu

Şekil 2: Proje Özellikleri iletişim kutusu.

Projede PGO Enstrümanlı Derlemeleri Etkinleştir

Projenize Instrumented adlı yeni bir yapılandırma ekleyin. Bu, test için geliştirme sırasında kullandığınız yapılandırmaya dayanır. Bu, geleneksel olarak optimize edilmiş derlemeniz olmalıdır (derleyici optimizasyon ayarlarını koruduğunuz sürece ek hata ayıklama özelliklerini etkinleştirebilirsiniz).

Mülk sayfası iletişim kutusunda Configuration Manager...'ı tıklayın.

Mülk Sayfaları iletişim kutusunun üst kısmında, Active Solution
Yapılandırması ve Platform açılır listeleri ile Configuration Manager
düğmesini gösteren

Şekil 3: Configuration Manager iletişim kutusu.

Yapılandırma Yöneticisi iletişim kutusunda Etkin çözüm yapılandırması açılır menüsünü seçin ve <Yeni...> seçeneğini belirleyin.

Etkin Çözüm Yapılandırması açılır menüsü açık ve Yeni seçeneğinin vurgulandığı Configuration Manager iletişim kutusu.

Şekil 4: Yeni derleme yapılandırması oluşturma.

... ve yeni bir PGO Enstrümanlı yapılandırma oluşturun.

Mevcut Sürüm derleme yapılandırmasına dayalı yeni bir PGO Aracılı derleme yapılandırması oluşturan Yeni Çözüm Yapılandırması iletişim kutusu

Şekil 5: Yeni Çözüm Yapılandırması iletişim kutusu.

Oyununuz için bir profil oluşturmak üzere PGO Enstrümanlı modda derlemeyi etkinleştirmek için Profil Rehberli Optimizasyon Modu ayarı seçenek listesinden Araçlı'yı seçin.

Genel ayarlara açık, PGO ayarlarının gösterildiği ve Profil Yönlendirmeli Optimizasyon modu Etkin değerine ayarlanmış Proje Özellikleri iletişim kutusu.

Şekil 6: PGO ayarlarının vurgulandığı Proje Özellikleri iletişim kutusu.

Profil Kılavuzlu Optimizasyon Profilleri ayarı için Android cihazınızda ham çıkış profili veri dosyasının yazılacağı klasörün yolunu girin. Genellikle bu değer /data/data/<package name>/cache/ gibi olmalıdır. Burada <package name>, APK'nızın tam paket adıdır. Örneğin, com.google.sample.tunnel.

Bunun işleyiş şekli hakkında daha ayrıntılı bilgi için Clang belgelerini inceleyin.

PGO Enstrümantasyonlu profil verilerini cihazınıza yazma

PGO verileri genellikle bir işlem çıktığında PGO araç sistemi tarafından cihaza yazılır. Android'de uygulamalar çıkmaz, her zaman sonlandırılırlar. Bu, varsayılan "diske yaz" işlevinin hiçbir zaman tetiklenmediği ve uygulamanızın PGO verilerini manuel olarak yazmasını gerektireceği anlamına gelir.

Uygulamanızda, profil verilerini yazmak için açıkça __llvm_profile_write_file çağrısı yapmalısınız. Bu sembol yalnızca PGO destekli derleme oluştururken kullanılabilir. Bu işlemi kolaylaştırmak için __llvm_profile_write_file tanımlarken aşağıdaki kalıbı kullanmanızı öneririz.

#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif

Bu işlevin çağrılması, profil verilerini daha önce belirttiğiniz klasöre yazar.

Profil çalıştırması gerçekleştirme

Profili oluşturmak için PGO araçları kullanılarak oluşturulan APK'nızı hedef cihazda çalıştırırsınız. Kodu istediğiniz gibi uyguladıktan ve __llvm_profile_write_file işlevine çağrıyı tetikledikten sonra, uygulamanız profil verilerini depolama alanına yazar.

Bu noktada, derleyicinin kullanması için profilleri tekrar cihazdan kopyalayın.

Profil verilerini derleyici tarafından kullanılmak üzere hazırlama

Tek başına kullanıldığında, Android NDK'da Clang/LLVM'nin parçası olarak gönderilen llvm-profdata komut satırı aracı, bir derlemenin profil destekli optimizasyonu sırasında profil verisi dosyalarını derleyici tarafından kullanılmak üzere hazırlamak için kullanılır.

AGDE, projenize eklediğiniz tüm profil verisi dosyalarını birleştirerek ve proje özelliği sayfalarındaki Profil Rehberli Optimizasyon Modu ayarı Optimize edilmiş olarak ayarlandığında bu dosyaları tüketerek bu adımı sizin için otomatik olarak gerçekleştirir.

Profil Rehberli Optimizasyon etkin halde proje oluşturma

Profillerinizi yakalayıp projenize eklediğinize göre derleyici, bu verileri kullanarak derlemenizin optimizasyonunu hassas bir şekilde ayarlayabilir.

PGO için Optimize Edilmiş Derlemeniz için yeni bir proje yapılandırması oluşturun. Böylece bu modda yalnızca gerektiğinde derleme yapabilirsiniz.

Yeni Çözüm Yapılandırması iletişim kutusu, Sürüm derlemesine dayalı bir derleme yapılandırması oluşturur, ancak bu defa yeni derleme yapılandırma adı PGO için Optimize Edilmiştir.

Şekil 7: PGO için Optimize Edilmiş Derleme yapılandırması oluşturma.

Proje özelliği sayfalarındaki Profil Rehberli Optimizasyon Modu ayarını Optimize edilmiş olarak ayarlayın.

Genel ayarlara açık, PGO ayarlarının gösterildiği ve Profil Rehberli Optimizasyon modunun Optimize edilmiş&#39;e ayarlandığı Proje Özellikleri iletişim kutusu

Şekil 8: PGO Optimizasyon modunu Optimize edilmiş olarak ayarlama.

Dosyaları cihazdan kopyalayın ve Çözüm Gezgin'deki projenize ekleyin. Bu profil verisi dosyaları, PGO için Optimize Edilmiş yapılandırmanızı bir sonraki derlediğinizde derleyici tarafından alınır ve derleyicinin kodunuzu optimize etme şeklini ayarlamak için kullanılır.

Profil verisi dosyalarını, ADB'yi veya Android Cihaz Gezgini'ni kullanarak cihazdan projenize kopyalayabilirsiniz.

Profil Kılavuzlu Optimizasyonu AGDE dışında Kullanma

AGDE tarafından desteklenmeyen bir derleme sistemi kullanıyorsanız derlemenizi doğrudan düzenlemeniz gerekebilir. Clang'ın belgelerinde gerekli anahtarlar (-fprofile-generate ve -fprofile-use) ele alınmaktadır.

Oyununuz için bir ara katman yazılımı motoru kullanıyorsanız PGO'yu nasıl etkinleştireceğinizi (destekleniyorsa) öğrenmek için motorunuzun dokümanlarına bakın.