Bir uygulamanın bellek kullanımı özellikleri, performansının temel bir yönüdür. Mevcut GPU sayaç bilgilerine bakarak bu özellikleri analiz etmek için Sistem Profiler'ı kullanabilirsiniz.
Adreno cihazlar
Adreno cihazlarda, CPU ve GPU kare işleme sürelerini tahmin etme bölümünde açıklandığı gibi, tek bir GPU karesiyle tutarlı bir zaman aralığını vurgulayarak başlayın. Sayaç izlerinin tümü aynı zamanlama tekniğini kullandığından ve bellek kullanımının daha doğru tahmin edilmesine olanak tanıdığından (verileri sayaç izi verilerinden bağımsız olarak toplanan GPU dilimlerinden elde edilen kare süresi sınırlarını kullanmaya kıyasla) kare süresi sınırlarınız için GPU % Kullanımı veya benzer bir sayaç izinin kullanımını içeren, söz konusu sayfada açıklanan tekniği kullanın.
Okuma/yazma toplamları
Profil aracında tek bir kareyi vurguladıktan sonra Toplam Okuma (Bayt/sn) ve Toplam Yazma (Bayt/sn) sayaçlarına bakarak başlayın. Bu sayaçlar, tek bir kare boyunca bellek veri yolundan ne kadar veri geçtiğine dair genel bir bakış sunar. Bellek bant genişliği, mobil cihazlarda pilin hızlı tükenmesinin büyük bir nedeni olduğundan veri yolu üzerinden gönderdiğiniz veri miktarını en aza indirmek için elinizden geleni yapın.
Bant genişliğinin köşe ve doku verileri için kullanılan kısmını belirlemek üzere Vertex Memory Read (Bytes/Second) ve Texture Memory Read (Bytes/Second) sayaçlarını da inceleyebilirsiniz.
Bu değerler için "iyi" olarak kabul ettiğiniz şey, uygulamanızda görülen iş yüklerinin türüne bağlıdır. Örneğin, 2D uygulamalarda kullanılan doku belleği okuma bant genişliği nispeten büyük (~2+ GB/sn) olabilir ancak köşe belleği bant genişliği çok az (~50 MB/sn) olabilir. Daha fazla bilgi için Köşe noktası bellek bant genişliğini analiz etme ve Doku bellek bant genişliği kullanımını analiz etme ile ilgili dokümanlara göz atın.
Getirme durakları
% Vertex Fetch Stall, % Texture Fetch Stall ve % Stall on System Memory sayaçlarına bakın. Bu sayaçlar, uygulamamızın genel bellek performansıyla ilgili bazı ipuçları verir. Değerler yaklaşık %5'ten yüksekse uygulamanızın verileri belleğe verimli bir şekilde yerleştirmediği veya önbellekten yararlanmak için verilerine verimli bir şekilde erişmediği anlaşılır. Bu tür öğelerde bellek kullanımını iyileştirme hakkında ayrıntılı bilgi için Köşe bellek bant genişliğini analiz etme ve Doku bellek bant genişliği kullanımını analiz etme başlıklı makalelere göz atın.
Mali cihazlar
Mali cihazlarda, CPU ve GPU kare işleme sürelerini tahmin etme bölümünde açıklandığı gibi, tek bir GPU karesiyle tutarlı bir zaman aralığını vurgulayarak başlayın. Sayaç izlerinin tümü aynı zamanlama tekniğini kullandığından ve bellek kullanımının daha doğru tahmin edilmesine olanak tanıdığından (verileri sayaç izi verilerinden bağımsız olarak toplanan GPU dilimlerinden elde edilen kare süresi sınırlarını kullanmaya kıyasla) kare süresi sınırlarınız için GPU % Kullanımı veya benzer bir sayaç izinin kullanımını içeren, söz konusu sayfada açıklanan tekniği kullanın.
Harici Toplamları Çıktı Olarak Verme
Sistem Profil Aracı'nda tek bir kareyi vurguladıktan sonra Çıkış Harici Okuma baytları Çıkış Harici Yazma baytları sayaçlarına bakarak başlayın. Bu sayaçlar, tek bir kare boyunca bellek yolu üzerinden ne kadar veri geçtiğine dair genel bir bakış sunar. Bellek bant genişliği, mobil cihazlarda pilin boşalmasının büyük bir nedeni olduğundan veri yolu üzerinden gönderdiğiniz veri miktarını en aza indirmek için elinizden geleni yapın.
Dahili toplamları girme
Ayrıca, önbelleklerin kendileri hakkında bilgi veren sayaçlar da vardır. İlgilendiğiniz sayaçlar "Input internal [read|write] stall cycles"dır. Bunlar için daha yüksek değerler, önbelleğe başarıyla ulaştığınız ancak çok fazla okuma isteği yapıldığı ve sonuç olarak gölgelendirici kodunun belleğe erişim elde etmek için beklediği anlamına gelir.
Getirme durakları
Bakabileceğiniz bir sonraki sayaç grubu, Vertex Prefetcher Stall Cycles ve Texture Fetch Stall sayaçlarıdır. Bunlar, uygulamamızın genel bellek performansıyla ilgili bazı ipuçları verir. Değerler yaklaşık% 5'ten yüksekse verilerimizi bellekte verimli bir şekilde düzenlemediğiniz veya önbellekten yararlanmak için verilerimize verimli bir şekilde erişmediğiniz anlamına gelir. Bu tür öğelerin bellek kullanımını iyileştirme hakkında ayrıntılı bilgi için [Vertex|Texture] Bellek Bant Genişliğini Analiz Etme makalelerine göz atın.