Windows Phone 7.1 Frame Rate Nedir

By Burak TUNGUT - 21.11.2012 - Kategori Windows Phone 8

Bu makalem ile Windows Phone 7.1 de emulator ekranızın sağ tarafındaki frame rate sayacının ne işe yaradığını ve nasıl kapatılacağını göreceğiz.
5 Bloktan oluşan ve geliştirme sürecinde işimize yarayacak fakat publish etmeden önce kapatmamız gereken frame rate kavramını hemen incelemeye başlayalım.

Öncelikle herkese güzel bir yaz sabahında Merhabalar :)
Konuya girmeden önce birşeyi fark ettiğimi söylemeden geçemeyeceğim. Normalde makale ve çeşitli yazılarımı her ne kadar mesai saatleri dışında özellikle de akşam yazmak istesem de artık ilham mı desem, yazı yazmanın heyecanı mı desem bu istek hep mesai saatleri içersinde geliyor :)

Ben daha fazla açık sözlü olmadan konuya başlamakta fayda görüyorum :)
Windows Phone 7.1 de uygulama geliştiren arkadaşlar mutlaka şahit olmuşlardır emulator de sağ üst köşede dikey bir şekilde sıralanmış 6 bloktan oluşan digit efektli bu sayılara. Gelin öncelikle bu sayıların anlamlarını inceleyelim.

 

Composite Thread FPS Ekranın hangi sıklıkla güncellendiğini gösterir.
User Interface Thread FPS UI'nin iş parçacığının güncellenme sıklığını gösterir.
Texture Memory Usage Medyaların bellekte oluşturduğu doluluk oranını gösterir.
Surface Counter UI'den aktarılan elementlerin toplam yüzey alanını gösterir.
I. Surface Counter Render işlemincen önce aktarılan tüm elementlerin ilk yüzey alanlarını gösterir.
Screen Fill Rate Counter Normal çözünürlüğün kaç defa kullanıldığını gösterir.

Composite Thread FPS

Çeşitli senaryolar ile Composite Thread, UIThread'ın iş yükünü hafifletmek için bazı iş parçacıklarını çözmek üzere iplement edilir. Bahsettiğimiz bu iş parçacıkları yani bazı render işlemlerini aşağıdaki gibi sıralayabiliriz ;

  • Rotate
  • Scale
  • Translate
  • Opacity
  • Plane

Normal değer aralığı 60 Frame Per Second olan bu metriğimizi fazla, özellikle de 30'un altına düşürmemekte özen göstermeliyiz.
 

User Interface Thread FPS

Yukarıda bahsettiğimiz ilişkide Composite Thread de aktarılamayan ve UIThread'de kalan tüm iş parçacıkları burda gerçekleşir. Yine büyük önem taşıyan bu metriğin ise 12 FPS değerinin altına düşmemesine özen göstermeliyiz.
Küçük bir ayrıntı daha söyler isek UIThread aynı zaman da uygulama içersinde gerçekleştirdiğimiz Data Binding işlemlerinden de sorumludur, aynı zaman da yine yukarıda bahsettiğimiz renderların iş yükünü azalatmak için implemente edilen Composite Thread'e olabildiğince iş bölümü sağlamak için Bitmap Caching konusunu da incelemeliyiz.

 

Texture Memory Usage

Aşırı bellek sorunu yaşamadığınız sürece fazla önem arz etmeyen bu metriğimiz ise 1. madde de işlediğimiz senaryo sonucunda UIThread'dan Composite Thread'a aktarılan medyaların bellekte oluşturduğu büyüklüğü gösterecektir.
Ancak bu metrik uygulamanızın bellekte harcadığı tüm büyüklüğü göstermez!

 

Surface Counter & Intermediate Surface Counter

SC e ISC olarak kısaltma yapacağım bu metriklerimizden 2.si yani ISC metriğimiz Render edilmek üzere UIThread'dan Composite Thread'a gönderilen elementlerin ilk metrikleri bu sayaçta, tüm render işlemleri bittiğinde ise toplam metrik SC değeri olarak ekranımızda yerini alacaktır.
Kullandığımız element sayısı ve yüzey alanları ile çeşitli ortantılar kurarak bu metriğimizede dikkat edebiliriz.

 

Screen Fill Rate Counter

Özellikle bir kaç yabancı kaynaklı makalede görmem üzerine daha fazla önem vermeye başladığım bu metriğimiz diğer metriklere göre daha önemli olduğunu söyleyebiliriz!
Normal çözünürlük değeri 480x800 olan WP7 uygulamalarımızın söz konusu sayfa içersinde kaç defa bu alanı doldurduğunu bu metrik ile öğrenebiliriz. Özellikle de uzun form ve boyutları yüzünden taşan elementlerimiz için sık sık ScrolViewer kullanmışısızdır. İşte tam burada bu metriğimize olabildiğince dikkat etmekte fayda görüyorum. Bir nevi katsayı gibi göreceğimiz bu metriğimiz arttıkça uygulamalarımızda ciddi kasılmalar ve takılmalar oluşacaktır.
Üstadlarında öngördüğü maximum 2.5 değeri benimde gözlemlediğim kadarıyla sıkıntı çıkarmadan çalışabilecek bir değer.

 

Frame Rate alanının kapatılması

Uygulamalarımız da default olarak açık gelen frame rate metriklerimizi kapatmadan market'e göndermemiz ne yazık ki hüsranla sonuçlanacaktır :) Bu yüzden uygulamamızı göndermeden aşağıdaki ufak değişikliği yapmamız gerekmektedir.

Öncelikle projemiz de App.xaml dosyamızın kod tarafına geçelim ve aşağıdaki bloğu,

if (System.Diagnostics.Debugger.IsAttached)
            {
                // Diğer Kodlar
                Application.Current.Host.Settings.EnableFrameRateCounter = true
            }


Aşağıdaki gibi değiştirelim,

 

if (System.Diagnostics.Debugger.IsAttached)
            {
                // Diğer Kodlar
                Application.Current.Host.Settings.EnableFrameRateCounter = false
            }


Bir sonraki makalem de görüşmek üzere, esen kalın :)

 

H.Burak TUNGUT
Bilgisayar Mühendisliği Öğrencisi
www.buraktungut.com

Yorum Bırak

Facebook
Son Yorumlar