Jump to content
Sign in to follow this  
~stacker~

Java performans arttırma...

Recommended Posts

Java ile çalışıyorsanız Java’nın yapısından dolayı performans her zaman için öncelikli hedefinizdir.Aşağıda bir java programının performansını arttırmayı sağlayacak notlar bulunmaktadır.

* For döngülerinde döngünün sınırını oluşturan sayıyı matematiksel hesaplama yöntemi ile elde etmeyin,olabiliyorsa önceden hesaplanmış bir sayı olsun.

Örnek olarak : “for(int i=0; i<size()*2;i++)” kodunda olduğu gibi “size()*2″ sınır değeri hesaplama ile bulunuyor ve bu hesaplama her döngü kontrolünde gerçekleşecek ve zamandan kaybettirecek.Bunun olmasını engellemek için “int size = size()*2; for (int i=0;i<size; i++)” i kodundaki gibi “size()*2″ hesaplamasını önceden hesaplayıp bir değişkene atayın ve sınır değer olarak bu değişkeni kullanın.

* Aynı alt çağrıyı alt alta tekrarlamayın.

“if (ogrenciler.elementAt(i).isBoy()) …;if (ogrenciler.elementAt(i).isGirl()) …” gibi arka arkaya “ogrenciler.elementAt(i)” şeklinde yapılan çağrı gereksizdir.Bunun yerine “Ogrenci ogrenci = ogrenciler.elementAt(i) ; if (ogrenci.isBoy()) ..;if(ogrenci.isGirl())..” kodunda olduğu gibi “ogrenciler.elementAt(i)” çağrısını 1 kere yapıp bu çağrı sonucunda gelecek referansı “Ogrenci ogrenci” örneğinde olduğu gibi, bir değişkene atayarak ilerdeki çağrılarımızda o değişken aracılığı ile alt fonksiyonları çağırmalıyız.

* Eğer mümkün ise uzun if-else-if bloklarımızı switch bloklarına dönüştürmeliyiz.if-else-if bloklarının switch bloklarına dönüşebilmesi için kontrol ettiğimiz şeyin bir sayı olması gerekmektedir.

* Bir fonksiyondaki değişken ve parametrelere erişim,static ve nesne değişkenlerine erişimden daha hızlıdır.Bu yüzden eğer bir nesne değişkenini çok kullanacaksanız onu ilk önce fonksiyon içindeki bir değişkene kopyalayıp fonksiyon içindeki değişkeni kullanmak daha iyi olacaktır.Tabi değişkeni sadece 1 kaç kere kullanacaksanız bu yöntem gereksizdir.

* Stringleri

“String s = “”;

for (int i=0; i<n; i++) {

s += “#” + i;

}”

kodunda olduğu gibi döngü içinde ekleme yaparak oluşturmayın çünkü String nesnesine ekleme yapıp yeni bir string elde etmek istiyorsanız, java oluşacak stringi yaratıp ekleme yapılacak stringin değerini ve ekleme yapılan stringin değerlerini alıp oluşacak stringe kopyalar ki bu işlemi bir döngü içinde yaparsanız, en sonda bir string çöplüğü elde edersiniz.Tek bir eklem işlemi sonucunda bile 2 tane String çöp olur.

Bunu engellemek için Stringlere döngü içinde ekleme yapmak gerekiyorsa StringBuffer kullanın.

“StringBuilder sbuf = new StringBuilder();

for (int i=0; i<n; i++) {

sbuf.append(”#”).append(i);

}

String s = sbuf.toString();”

Kodundaki gibi en sonda oluşan “s” stringi bir StringBuffer yardımı ile oluşturuldu.

StringBuffer kendi içinde genişleyebilir char dizisi sakladığı için bu sınıfa ekleme yapmak kolaydır.Bu yüzden sürekli stringe ekleme yapılması gereken yerlerde StringBufferi kullanmaya özen gösterin.

* Fonksiyonları “private,final” ya da “static” tanımlamak hızda artış sağlar.Tabi fonksiyonun bu şekilde tanımlanması kodlarınızdaki düzeni bozmuyorsa değiştirin.

Kaynak : http://yugruk.wordpress.com/

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...