Android'de, uygulamanızın kullanıcı arayüzünü oluştururken sorun yaşayabileceği yerleri görselleştirmenize yardımcı olan bazı cihaz üzerinde geliştirici seçenekleri bulunur. Örneğin, gereğinden fazla oluşturma işlemi yapma veya uzun iş parçacığı ve GPU işlemleri yürütme gibi. Bu sayfada, GPU fazla çizim hatasının nasıl ayıklanacağı ve GPU oluşturma profilinin nasıl oluşturulacağı açıklanmaktadır.
Cihazdaki geliştirici seçenekleri ve bunların nasıl etkinleştirileceği hakkında daha fazla bilgi edinmek için Cihazdaki geliştirici seçeneklerini yapılandırma başlıklı makaleyi inceleyin.
Profil GPU oluşturma hızı
Profil GPU Oluşturma aracı, bir kullanıcı arayüzü penceresinin karelerini oluşturmak için gereken sürenin görsel temsilini, kare başına 16,67 ms'lik bir karşılaştırma ölçütüne göre kaydırılabilir bir histogram olarak gösterir.
Daha az güçlü GPU'larda, kullanılabilir doluluk oranı (GPU'nun çerçeve arabelleğini doldurabileceği hız) oldukça düşük olabilir. Bir kareyi çizmek için gereken piksel sayısı arttıkça GPU'nun yeni komutları işlemesi daha uzun sürebilir. Bu durum, GPU yetişene kadar sistemin geri kalanının beklemesine neden olur.
Profillendirme aracı, GPU'nun pikselleri çizmeye çalışırken ne zaman aşırı yüklendiğini veya ağır fazla çizimden ne zaman etkilendiğini belirlemenize yardımcı olur.
Profil oluşturucuyu etkinleştirme
Başlamadan önce Android 4.1 (API düzeyi 16) veya daha yeni bir sürümün yüklü olduğu bir cihaz kullandığınızdan ve geliştirici seçeneklerini etkinleştirdiğinizden emin olun. Uygulamanızı kullanırken cihaz GPU'su oluşturma profilini oluşturmaya başlamak için aşağıdaki adımları uygulayın:
- Cihazınızda Ayarlar'a gidip Geliştirici Seçenekleri'ne dokunun.
- İzleme bölümünde, cihazda çalışan Android sürümüne bağlı olarak Profil GPU oluşturma veya Profil HWUI oluşturma'yı seçin.
- GPU Oluşturma Profilini Oluştur iletişim kutusunda, grafikleri cihazınızın ekranına yerleştirmek için Ekranda çubuk olarak'ı seçin.
- Profil oluşturmak istediğiniz uygulamayı açın.
Çıkışı inceleme
Şekil 1'de gösterilen Profil GPU Oluşturma grafiğinin büyütülmüş resminde, Android 6.0'da (API düzeyi 23) gösterildiği gibi renkli bölümü görebilirsiniz.
Şekil 1. Büyütülmüş Profil GPU Oluşturma grafiği.
Çıkışla ilgili dikkat etmeniz gereken birkaç nokta:
- Araç, her görünür uygulama için bir grafik gösterir.
- Yatay eksen boyunca her dikey çubuk bir kareyi, her dikey çubuğun yüksekliği ise karenin oluşturulma süresini (milisaniye cinsinden) gösterir.
- Yatay yeşil çizgi 16,67 milisaniyeyi temsil eder. Saniyede 60 kare elde etmek için her kareye ait dikey çubuk bu çizginin altında kalmalıdır. Bir çubuk bu çizgiyi her aştığında animasyonlarda duraklamalar olabilir.
- Araç, ilgili çubuğu daha geniş ve daha az şeffaf hale getirerek 16,67 milisaniye eşiğini aşan kareleri vurgular.
- Her çubukta, oluşturma ardışık düzenindeki bir aşamayla eşleşen renkli bileşenler bulunur. Bileşenlerin sayısı, cihazın API düzeyine göre değişir.
Aşağıdaki tabloda, Android 6.0 ve sonraki sürümleri çalıştıran bir cihaz kullanılırken profil oluşturucu çıktısındaki dikey çubuğun her bir segmentinin açıklaması verilmektedir.
| Bar Bileşeni | Oluşturma Aşaması | Açıklama |
|---|---|---|
| Arabellekleri Değiştirme | CPU'nun GPU'nun işini bitirmesini beklediği süreyi gösterir. Bu çubuk yükselirse uygulama GPU'da çok fazla iş yapıyor demektir. | |
| Komut Sorunu | Android'in 2D oluşturucusunun, OpenGL'ye komut vererek görüntüleme listelerini çizmek ve yeniden çizmek için harcadığı süreyi gösterir. Bu çubuğun yüksekliği, her bir görüntüleme listesinin yürütülmesi için gereken sürenin toplamıyla doğru orantılıdır. Daha fazla görüntüleme listesi, daha uzun bir kırmızı çubuk anlamına gelir. | |
| Senkronizasyon ve Yükleme | Bit eşlem bilgilerinin GPU'ya yüklenmesi için gereken süreyi gösterir. Büyük bir segment, uygulamanın büyük miktarda grafik yüklemek için önemli ölçüde zaman aldığını gösterir. | |
| Çiz |
drawLine gibi çizim komutlarını kaydetmek için kullanılan süreyi gösterir. Oluşturma aşaması bazen ölçü ve düzen işlemlerini de içerebilir. Bu çubuk uzunsa sistem izleme verilerini yakalayın ve ayrıntılı bir analiz için Perfetto'yu kullanarak inceleyin.
|
|
| Ölçü / Düzen | Ölçüm ve yerleşim değiştiricilerin yürütülmesini içeren düzen aşamasında kullanıcı arayüzü bileşenlerinin konumlandırılması ve boyutunun belirlenmesi için harcanan süreyi gösterir. Büyük bir segment, bu değiştiricilerde karmaşık hesaplamalar olduğunu veya sık sık yeniden hesaplama gerektiren aşırı derin bir düzen ağacı olduğunu gösterir. | |
| Giriş İşleme ve Animasyon |
Animation API çağrılarını değerlendirmek veya işaretçi girişini ve geri çağırmalarını işlemek için geçen süreyi gösterir. Bu segment büyükse özelleştirilmiş bir animasyonun veya giriş geri aramasının çok fazla zaman harcadığı anlamına gelebilir. Bir LazyColumn veya LazyRow içinde gezinirken durum hesaplaması ve veri eşleme de genellikle bu segment sırasında gerçekleşir ve bu segmentteki yavaşlamaların daha yaygın bir kaynağıdır.
|
|
| Çeşitli Zaman / VSync Gecikmesi | Uygulamanın, iki ardışık kare arasında işlemleri yürütmek için harcadığı süreyi gösterir. Bu durum, kullanıcı arayüzü iş parçacığında çok fazla işleme yapıldığını ve bu işlemlerin farklı bir iş parçacığına aktarılabileceğini gösteriyor olabilir. |
Tablo 1. Android 6.0 ve sonraki sürümlerdeki bileşen çubukları.
Profillendirme aracı tarafından sağlanan bilgileri yorumlama hakkında daha fazla bilgi için Profil GPU Oluşturma ile Analiz Etme başlıklı makaleyi inceleyin.