Pomoc w zakresie optymalizacji z pomocą profilu została wprowadzona w AGDE w wersji 22.2.71.
Znajdowanie ustawień PGO
Otwórz ustawienia projektu w Eksploratorze rozwiązań.
Rysunek 1. Okno Eksplorator rozwiązań Visual Studio.
Sprawdź, czy w sekcji Platforma jest ustawiona konfiguracja Androida (na przykład Android-arm64-v8a).
W panelu po lewej stronie wybierz Configuration Właściwości > General (Właściwości konfiguracji > Ogólne). Poszukaj grupy usług o nazwie PGO.
Rysunek 2. Okno Właściwości projektu
Włącz kompilacje obsługiwane przez PGO w projekcie
Dodaj do projektu nową konfigurację o nazwie Instrumentowane. Opiera się ona na konfiguracji używanej podczas programowania. Powinna to być tradycyjna kompilacja zoptymalizowana (możesz nadal mieć włączone dodatkowe funkcje debugowania, o ile zachowasz ustawienia optymalizacji kompilatora).
W oknie dialogowym na stronie Property kliknij Menedżer konfiguracji...
Ilustracja 3. Okno Menedżera konfiguracji
W oknie menedżera konfiguracji wybierz menu Aktywna konfiguracja rozwiązania i kliknij <Nowy...>.
Rysunek 4. Tworzenie nowej konfiguracji kompilacji
...i utwórz nową konfigurację PGO-Instrumented.
Rysunek 5. Okno „Nowa konfiguracja rozwiązania”
Aby włączyć tworzenie w trybie PGO i wygenerować profil gry, wybierz Instrumentowane z listy opcji ustawienia Tryb optymalizacji opartej na profilu.
Rysunek 6. Okno Właściwości projektu z wyróżnionymi ustawieniami PGO.
W przypadku ustawienia Profile wskazówek na temat optymalizacji profilu wpisz ścieżkę do folderu, w którym na urządzeniu z Androidem ma być zapisany nieprzetworzony plik wyjściowy profilu.
Zwykle powinna ona mieć postać /data/data/<package
name>/cache/
, gdzie <package name>
to pełna nazwa pakietu APK, np. com.google.sample.tunnel.
Więcej informacji o tym, jak to działa, znajdziesz w dokumentacji Clang.
Zapisywanie na urządzeniu danych profilu z instrumentów PGO
Dane PGO są zwykle zapisywane na urządzeniu przez system instrumentacji PGO po zakończeniu procesu. Na Androidzie aplikacje nie znikają – zawsze są zamykane. Oznacza to, że domyślna funkcja „zapisu na dysku” nigdy nie jest aktywowana, przez co aplikacja musi zapisywać dane PGO ręcznie.
Aby zapisać dane profilu, musisz samodzielnie wywołać funkcję __llvm_profile_write_file
w aplikacji. Ten symbol jest dostępny tylko wtedy, gdy budujesz konstrukcję instruowaną przez PGO. Aby ułatwić sobie deklarowanie __llvm_profile_write_file
, zalecamy użycie poniższego wzorca.
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
Wywołanie tej funkcji powoduje zapisanie danych profilu w określonym wcześniej folderze.
Przeprowadzanie uruchomienia profilu
Aby wygenerować profil, uruchom na urządzeniu docelowym pakiet APK utworzony za pomocą narzędzia PGO. Gdy poprawisz kod i wywołasz wywołanie funkcji __llvm_profile_write_file
, aplikacja zapisze dane profilu w pamięci.
Na tym etapie skopiuj profile z powrotem z urządzenia, aby kompilator mógł je wykorzystać.
Przygotowywanie danych profilu do użycia przez kompilator
W izolowanym przypadku narzędzie wiersza poleceń llvm-profdata
wysyłane w ramach kodu Clang/LLVM w pakiecie NDK Androida służy do przygotowywania plików danych profilu do wykorzystania przez kompilator podczas optymalizacji kompilacji pod kątem profilu.
AGDE wykonuje ten krok automatycznie, scalając wszystkie pliki danych profilu dodane do projektu i korzystając z nich, gdy ustawienie Tryb optymalizacji wspomaganej przez profil na stronach właściwości projektu jest ustawione na Zoptymalizowany.
Tworzenie projektu z włączoną optymalizacją krok po kroku
Po przechwyceniu profili i dodaniu ich do projektu kompilator może używać tych danych do optymalizacji kompilacji.
Utwórz nową konfigurację projektu dla kompilacji zoptymalizowanej pod kątem PGO, aby kompilować w tym trybie tylko wtedy, gdy jest to potrzebne.
Rysunek 7. Tworzenie nowej konfiguracji kompilacji zoptymalizowanej pod kątem PGO
Na stronach właściwości projektu ustaw Tryb optymalizacji z pomocą profilu na Zoptymalizowany.
Rysunek 8. Ustawianie trybu optymalizacji PGO (Zoptymalizowany)
Skopiuj pliki z urządzenia i dodaj je do projektu w Eksploratorze rozwiązań. Te pliki danych profilu są pobierane przez kompilator, gdy następnym razem będziesz tworzyć konfigurację zoptymalizowaną pod kątem PGO, i używane do dostrajania sposobu, w jaki kompilator optymalizuje kod.
Pliki danych profilu możesz skopiować do projektu z urządzenia za pomocą ADB lub za pomocą Eksploratora urządzeń z Androidem.
Stosowanie optymalizacji opartej na profilu poza AGDE
Jeśli używasz systemu kompilacji, który nie jest obsługiwany przez AGDE, może być konieczne bezpośrednie edytowanie kompilacji. Dokumentacja Clang zawiera informacje na temat wymaganych przełączników – -fprofile-generate
i -fprofile-use
.
Jeśli w swojej grze używasz silnika oprogramowania pośredniczącego, sprawdź w dokumentacji danej wyszukiwarki, jak włączyć PGO (jeśli ta funkcja jest obsługiwana).