Performans | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar performans

Windows Phone 8 uygulaması için Splash Screen hazırlamak

12 December 2013 1 yorum

Eğer Windows Phone 7 için uygulama geliştirdiyseniz zaten Splash Screen sayfalarına aşinasınızdır. Genellikle uygulamanın logosunu içeren jpg formatında olan resim, uygulama açılırken ekrana gelir ve tamamen hafızaya yüklendiğinde otomatik olarak kaldırılırdı.

Performans’ta yapılan çok ciddi iyileştirmeler sayesinde Windows Phone 8 uygulamalarının Splash Screen ihtiyacı ortadan kalktı ve Windows Phone 7 proje şablonlarının bir parçası olan Splash Screen, Windows Phone 8 proje şablonlarından kaldırıldı.

Eğer projenizde Splash Screen ihtiyacınız varsa, Assets klasörüne SplashScreenImage.jpg isimli, 768 x 1280 boyutlarında bir resim eklemeniz yeterli.

Fakat uygulamanızın tüm ekran çözünürlüklerinde Splash Screen resmini doğru göstermesini istiyorsanız, 3 farklı boyutlarda resim daha eklemeniz gerekli.

  • 480 × 800 ekran çözünürlüğü için; SplashScreenImage.screen-WVGA.jpg
  • 768 × 1280 ekran çözünürlüğü için; SplashScreenImage.screen-WXGA.jpg
  • 720 × 1280 ekran çözünürlüğü için; SplashScreenImage.screen-720p.jpg

Eğer uygulamanız 1080p çözünürlükte bir cihazda açılıyorsa, 720p resmi kullanılacaktır.

Windows Phone uygulamalarında EnableFrameRateCounter özelliği

26 April 2013 Yorum yapılmamış

Windows Phone uygulamaları geliştirirken elimizin altında basit ama önemli performans ipuçlarının olması işimize yarar.

EnableFrameRateCounter özelliğini açmak

  • Render Thread FPS
  • User Interface Thread FPS
  • Texture Memory Usage
  • Surface Counter
  • Intermediate Texture Counter
  • Screen Fill Rate

değerlerinin ekranda gözükmesini sağlar;

Bu değerler şu anlamlara gelir;

Render Thread FPS
Ekran’ın güncellenme sıklığı. 60 fps civarı güncelleme hızı son kullanıcıya iyi bir deneyim sunacaktır, 30 fps ve üzeri ise kabul edilebilir bir deneyim sunacaktır. Ekran güncelleme hızı 30 fps altınaa düştüğünde bu değer kırmızı olacaktır, dikkat etmek lazım!

User Interface Thread FPS
O esnada çalışan UI thread’in güncellenme sıklığı. Data Binding, animasyonlar ve property change notifications bu thread’de işletilirler. Eğer 15 fps altına düşerse bu değer kırmızı olacaktır, dikkat etmek lazım!

Texture Memory Usage
Çalışan uygulamada kullanılan Texture’ların kullandığı grafik hafıza miktarı

Surface Counter
Graphical Processing Unit (GPU) tarafından işlenecek yüzey miktarı

Intermediate Surface Counter
Önbelleklenmiş bellekler dahil işlenecek yüzey miktarı

Screen Fill Rate
Ekranda güncellenecek piksel miktarı. 1 değeri ekran çözünürlüğü kadar anlamına geliyor, örneğin 480×800. Eğer 1’in altına düşerse veya 2’nin üzerine çıkarsa kırmızı olur, dikkat etmek lazım!

App.xaml.cs dosyasında yeralan

Application.Current.Host.Settings.EnableFrameRateCounter = true;

satırı ile performans ipuçlarını ekranda göstermeye başlayabiliriz.

Uygulamanın son halini MarketPlace‘e göndermeden önce performans ipuçlarının ekranda gözükmediğinden emin olmamız gerekiyor.

Yukarıda ekranın bir parçasının gözüktüğü örnek uygulama için MainPage.xaml dosyasını aşağıdaki şekilde güncellemek gerekiyor;

<phone:PhoneApplicationPage
	x:Class="EnableFrameRateCounterTest.MainPage"
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
	xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
	xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
	mc:Ignorable="d"
	FontFamily="{StaticResource PhoneFontFamilyNormal}"
	FontSize="{StaticResource PhoneFontSizeNormal}"
	Foreground="{StaticResource PhoneForegroundBrush}"
	SupportedOrientations="Portrait" Orientation="Portrait"
	shell:SystemTray.IsVisible="True">

	<phone:LongListSelector Name="lstMessages" />

</phone:PhoneApplicationPage>

MainPage.xaml.cs dosyasında aşağıdaki değişiklikler yapılmalı;

public MainPage()
{
	InitializeComponent();

	var messageList = new List<string>();

	for (int iLoop = 0; iLoop < 150; iLoop++)
	{
		messageList.Add("Long message line #" + iLoop);
	}

	lstMessages.ItemsSource = messageList;
}

Proje Yönetimi (Project Management) Nedir?

02 March 2013 Yorum yapılmamış

İş yaşantımızda sıklıkla duyduğumuz Proje, Benzersiz bir ürün veya hizmet oluşturmak için yürütülen geçici bir girişimdir.

Bir çalışmanın proje olması için başlangıç ve bitiş zamanları olması lazım, aksi taktirde çalışma proje olarak değil, operasyon olarak değerlendirilmelidir.

Proje ve Operasyon faaliyetlerinin özellikleri;

Operasyon

  • Sınırlı sayıda kaynak tarafından gerçekleştirilir (insan-makina-yazılım-vs.)
  • Hiç değişmeden yada az değişikliğe uğrayarak tekrarlar
  • Sürekliliği vardır
  • Daha önce yapılmış olabilir, daha sonra da tekrarlama olasılığı vardır
  • Tüm faaliyet belirli/tanımlıdır

Proje

  • Sınırlı sayıda kaynak tarafından gerçekleştirilir (insan-makina-yazılım-vs.)
  • Tamamen yenidir
  • Bir defaya mahsus gerçekleştirilir
  • Zamanla gelişim gösterir
  • Daha önce yapılmamış olmalıdır
  • Daha sonra birebir aynı şekilde yapılamama
  • Tüm faaliyet belirli/tanımlı değildir

Proje Yönetimi, proje faaliyetlerinin proje hedeflerine ulaşmak için planlanması, raporlanması ve kontrolüdür. Bu faaliyetler gerçekleştirilirken performans, maliyet, zaman sınırlamaları içinde kalınması ve proje büyüklüğünün kabul edilebilir sınırlar içerisinde tutulması gerekmektedir.

Proje Yönetimi süreçlerinin şirketlerde daha fazla karşılaşılır olması özellikle aşağıdaki sebeplerden kaynaklanmaktadır;

  • Projelerin daha kapsamlı olması
  • Küreselleşmenin getirdiği rekabet ortamı
  • İletişimdeki zorlukların artması

Proje Yönetimi faaliyetlerinin şirketlere kazandırdıkları;

  • Kaynakların daha efektif yönetilmesi
  • Toplam kalite’de iyileşme
  • Karlılığın artması
  • Risklere ve Fırsatlara karşı hazırlıklı olmak
  • Daha gerçekçi hedefler belirlenebilir

Dünya’nın en büyük kar-amacı-gütmeyen organizasyonlarından biri olan PMI‘ın (Project Management Institute) resmi yayını olan PMBOK‘a (Project Management Body of Knowledge) göre Proje Yönetimi Süreçleri (Processes) aşağıdaki 5 madde’de toplanmıştır;

  • Başlangıç (Initiating)
  • Planlama (Planning)
  • Yürütme (Executing)
  • İzleme ve Kontrol (Monitoring and Controlling)
  • Kapanış (Closing)

PMBOK‘ta tanımlanan 9 adet Bilgi Alanı (Knowledge Area) vardır;

  • Entegrasyon (Integration)
  • Kapsam (Scope)
  • Zaman (Time)
  • Maliyet (Cost)
  • Kalite (Quality)
  • İnsan Kaynakları (Human Resources)
  • İletişim (Communications)
  • Risk (Risk Management)
  • Tedarik (Procurement)

C# Performans Analiz Sınıfı

20 November 2011 2 yorum

Geliştirmekte olduğumuz uygulamalarda performans analizi yapmak için genellikle Stopwatch sınıfını kullanırız.

Aşağıdaki sınıf’ı kullanarak uygulamanın her method‘unu kolay analiz edebiliriz;

public class PerformansAnaliz
{
	public TimeSpan ToplamSure { get; private set; }
	public TimeSpan OrtalamaSure { get; private set; }

	public static PerformansAnaliz Yeni()
	{
		return new PerformansAnaliz();
	}

	public void Olcumle(Action Method, int TekrarAdet = 1)
	{
		var sw = Stopwatch.StartNew();
		for (int iLoop = 0; iLoop < TekrarAdet; iLoop++)
		{
			Method();
		}
		sw.Stop();
		OrtalamaSure = new TimeSpan(sw.Elapsed.Ticks / TekrarAdet);
		ToplamSure = sw.Elapsed;
	}
}

2011 Build Konferansı İkinci Gün Raporu

17 September 2011 Yorum yapılmamış

Blog’umun 200. yazısını beni kırmayarak sevgili Daron Yöndem yazdı. Aslında tek bir yazı yazacaktı, fakat Microsoft‘un Build Konferans‘ına katıldığı için bir yazı serisine dönüştü. Hergün izlenimlerini sizlerle paylaşıyor olacağım. Yazıların orjinallerini Daron Yöndem‘in kendi blog’undan da takip edebilirsiniz. Ayrıca twitter‘dan da takip etmenizi öneririm; @daronyondem

Söz Daron’da… Devamını oku…