Charakterystyka wykorzystania pamięci przez aplikację jest podstawowym aspektem jej wydajności. Aby przeanalizować te cechy, możesz użyć profilera systemu, sprawdzając dostępne informacje o licznikach GPU.
Urządzenia Adreno
Na urządzeniach z układem Adreno zacznij od wyróżnienia okresu odpowiadającego pojedynczej klatce GPU, zgodnie z opisem w sekcji Szacowanie czasu przetwarzania klatki przez CPU i GPU. Skorzystaj z techniki opisanej na tej stronie, która polega na użyciu licznika % wykorzystania GPU lub podobnego licznika do śledzenia granic czasu renderowania klatki, ponieważ wszystkie liczniki śledzenia używają tej samej techniki pomiaru czasu i umożliwiają dokładniejsze oszacowanie wykorzystania pamięci (w porównaniu z używaniem granic czasu renderowania klatki pochodzących z wycinków GPU, których dane są zbierane niezależnie od danych licznika śledzenia).

Łączna liczba odczytów i zapisów
Po wyróżnieniu pojedynczej klatki w profilerze zacznij od sprawdzenia liczników Łączna liczba odczytanych bajtów (bajtów/s) i Łączna liczba zapisanych bajtów (bajtów/s). Te liczniki zapewniają dobry ogólny wgląd w to, ile danych jest przesyłanych przez magistralę pamięci w ciągu jednej klatki. Staraj się minimalizować ilość danych przesyłanych przez magistralę, ponieważ przepustowość pamięci jest głównym źródłem zużycia baterii na urządzeniach mobilnych.

Możesz też sprawdzić liczniki Odczyt pamięci wierzchołków (bajty/sekundę) i Odczyt pamięci tekstur (bajty/sekundę), aby określić część przepustowości wykorzystywaną na dane wierzchołków i tekstur.

To, co uznasz za „dobre” wartości, zależy od rodzaju zadań wykonywanych w Twojej aplikacji. Na przykład aplikacje 2D mogą wykorzystywać stosunkowo dużą (~2+ GB/s) przepustowość odczytu pamięci tekstur, ale przepustowość pamięci wierzchołków może być bardzo mała (~50 MB/s). Więcej informacji znajdziesz w dokumentacji Analizowanie przepustowości pamięci wierzchołków i Analizowanie wykorzystania przepustowości pamięci tekstur.
Pobieranie budek
Sprawdź liczniki % Vertex Fetch Stall, % Texture Fetch Stall i % Stall on System Memory, ponieważ dostarczą Ci one wskazówek dotyczących ogólnej wydajności pamięci aplikacji. Jeśli wartości są wyższe niż około 5%, oznacza to, że aplikacja nie układa danych w pamięci w wydajny sposób lub nie uzyskuje do nich dostępu w wydajny sposób, aby wykorzystać pamięć podręczną. Szczegółowe informacje o zwiększaniu wykorzystania pamięci w przypadku tych typów zasobów znajdziesz w sekcjach Analizowanie przepustowości pamięci wierzchołków i Analizowanie wykorzystania przepustowości pamięci tekstur.

Urządzenia Mali
Na urządzeniach Mali zacznij od wyróżnienia okresu czasu odpowiadającego pojedynczej klatce GPU, zgodnie z opisem w sekcji Szacowanie czasu przetwarzania klatki przez CPU i GPU. Skorzystaj z techniki opisanej na tej stronie, która polega na użyciu licznika % wykorzystania GPU lub podobnego licznika do śledzenia granic czasu renderowania klatki, ponieważ wszystkie liczniki śledzenia używają tej samej techniki pomiaru czasu i umożliwiają dokładniejsze oszacowanie wykorzystania pamięci (w porównaniu z używaniem granic czasu renderowania klatki pochodzących z wycinków GPU, których dane są zbierane niezależnie od danych licznika śledzenia).

Wyświetlanie zewnętrznych sum częściowych
Po wyróżnieniu pojedynczej klatki w profilerze systemu zacznij od sprawdzenia liczników Output External Read bytes (Wyjściowe bajty odczytu zewnętrznego) i Output External Write bytes (Wyjściowe bajty zapisu zewnętrznego). Te liczniki zapewniają ogólny wgląd w to, ile danych jest przesyłanych przez magistralę pamięci w ciągu jednej klatki. Staraj się minimalizować ilość danych przesyłanych przez magistralę, ponieważ przepustowość pamięci jest głównym źródłem zużycia baterii na urządzeniach mobilnych.

Wpisywanie wewnętrznych sum
Dostępne są też liczniki, które dostarczają informacji o samych pamięciach podręcznych. Interesujące Cię liczniki to „Input internal [read|write] stall cycles” (Cykle wstrzymania wewnętrznego [odczytu|zapisu] danych wejściowych). Wyższe wartości tych liczników oznaczają, że pamięć podręczna działa prawidłowo, ale jest zbyt wiele żądań odczytu, w wyniku czego kod shadera jest wstrzymywany w oczekiwaniu na dostęp do pamięci.

Pobieranie budek
Kolejne liczniki, na które warto zwrócić uwagę, to Vertex Prefetcher Stall Cycles i Texture Fetch Stall. Dostarczą one wskazówek dotyczących ogólnej wydajności pamięci aplikacji. Jeśli widzisz wartości wyższe niż około 5%, oznacza to, że nie układasz naszych danych w pamięci w wydajny sposób lub nie uzyskujesz do nich dostępu w wydajny sposób, aby korzystać z pamięci podręcznej. Więcej informacji o tym, jak zmniejszyć wykorzystanie pamięci w przypadku tych typów komponentów, znajdziesz w artykułach Analizowanie przepustowości pamięci [wierzchołków|tekstur].
