Hakkında Künye

Yüksek Performans İçin Nasıl Kodlayalım?

Aşağıda daha yüksek performans elde etmek için bazı kodlama önerileri sunulmuştur.

String nesneleri için + operatörü kullanımından kaçınınız.

Yanlış kullanım örneği:

String str = "Adana,";
str = str + "Adıyaman,";
str = str + "Afyonkarahisar,";
..
..
str = str + "Osmaniye,";
str = str + "Düzce,";

Bu tarz kullanım yerine:

StringBuffer sb = new StringBuffer();
sb.append("Adana,");
sb.append("Adıyaman,");
..
..
sb.append("Düzce,");
String str = sb.toString();

Eğer nesnelerin metodlarının sonuçları döngü sırasında değişmiyorsa, bir döngü içersinde nesnelerin bazı metodlarını kullanmaktan kaçınınız. Bunun yerine metod çağrısını döngü öncesinde yapıp, sonuçu bir değişken içinde saklayınız. Döngü içersinde bu değişkene erişiniz. Bu tarz kullanım ile MİB zamanınından kazanç elde etmiş olursunuz.

Yanlış kullanım örneği:

while(intCount < 1000)
{
if(serviceObject.isServiceActive())
{
serviceObject.put(i);
}
}

Bu tarz kullanım yerine:

boolean isServiceActive = serviceObject.isServiceActive();
while(intCount < 1000)
{
if(isServiceActive)
{
serviceObject.put(i);
}
}

Bazı nesnelerin metodları hep yeni bir nesne geri döndürür. Döngü içerisinde bu metodları kullanmaktan kullanmaktan kaçınınız. Bunun yerine metod çağrısını döngü öncesinde yapıp, sonuçu bir değişken içinde saklayınız. Döngü içersinde bu değişkene erişiniz. Bu tarz kullanım ile bellek kullanımından kazanç elde etmiş olursunuz.

Yanlış kullanım örneği:

while(intCount < 500)
{
Date dtSystemDate = serviceObject.getSystemDate())
..
..
}

Bu tarz kullanım yerine:

Date dtSystemDate = serviceObject.getSystemDate();
while(intCount < 1000)
{
..
..
setSystemDate(i, dtSystemDate);
..
..
}

Bazı nesnelerin döngü içersinde sürekli yaratmaktansa eğer sağlıyorsa o nesnenin clear tarzında metodunu kullanınız. Böylelikle nesneyi sürekli yaratmak yerine bir kere yaratıp her döngü sırasında nesne temizlenir ve performans artışı sağlanmış olur.

Yanlış kullanım örneği:

while(intCount < 500)
{
Query qeSelectAllFirms = new Query(strSql);
qeSelectAllFirms.setParameter("ID", i);
qeSelectAllFirms.execute();
i++;
}

Bu tarz kullanım yerine:

Query qeSelectAllFirms = new Query(strSql);
while(intCount < 500)
{
qeSelectAllFirms.setParameter("ID", i);
qeSelectAllFirms.execute();
i++;
qeSelectAllFirms.setQuerystrSql);
}

Koleksiyon nesneleri döngü içersinde sürekli yaratmak yerine nesneyi döngü içersinde bir kere yaratıp, her döngü sırasında clear() tarzında metodunu çağırınız.

Yanlış kullanım örneği:

while(intCount < 500)
{
HashMap map = new HashMap();
map.put("key1", "value1");
..
intCount++;
}

Bu tarz kullanım yerine

HashMap map = new HashMap();
while(intCount < 500)
{
map.put("key1", "value1");
..
map.clear();
intCount++;
}

Eğer çağrılan bir metodun döndürdüğü bir nesne referansı önceden tanımlanmış bir nesne referansına atanacaksa, bu önceden tanımlı referansın tanımlı oluduğu yerde referansa yeni yaratılan bir nesne boşu boşuna bağlamayınız.

Yanlış kullanım örneği:

SystemData sd = SystemDataFactory.createSystemData();
..
sd = analyzeSystem();

Bu tarz kullanım yerine:

SystemData sd = analyzeSystem();

Sıklıkla kullanılan özellikli nesneler her defasında bu özelliğe sahip nesne yaratmak yerine bir kere static nesneler tanımlayıp sürekli onu kullanınız.

Yanlış kullanım örneği:

String strEmpty = new String("");
..
if(strName.equals(strEmpty))
{
..
}

Bu tarz kullanım yerine:

if(strName.equals(EMPTY_STRING))
{
..
}


İlkay Polat
- 8 -