16 Eylül 2012 Pazar

StringBuilder vs String +=


package deneme;

import java.util.Calendar;

package deneme;

import java.util.Calendar;



/**
 *
 *
 *
 * @author Murat Güzel
 *
 * StringBuilder vs String += operand
 *
 */
public class Deneme {

public static void main(String[] args) {
Calendar calendar1 = Calendar.getInstance();    //1
String s = "";
for (int i = 0; i < 50000; i++) {
s += "asdasd";
}
Calendar calendar2 = Calendar.getInstance();    //2
System.out.println("String += : " + (calendar2.getTimeInMillis()
- calendar1.getTimeInMillis()));

Calendar calendar3 = Calendar.getInstance();
StringBuilder ss = new StringBuilder();
for (int i = 0; i < 50000; i++) {
ss.append("asdase");
}
Calendar calendar4 = Calendar.getInstance();    //3
System.out.println("StringBuilder.append : " + (calendar4.getTimeInMillis()
- calendar3.getTimeInMillis()));
}

}


Output :

String += : 4454
StringBuilder.append : 1

MemoryKullanımı : 
//1 de ki konumlandırılan breakpointte jawaw.exe memory kullanımı 6000K
//2 de ki konumlandırılan breakpointte jawaw.exe memory kullanımı 22576K
//3 de ki konumlandırılan breakpointte jawaw.exe memory kullanımı 22900K


Görüldüğü gibi bu işlem StringBuilder ile çok kısa bir zamanda ve çok daha az memory kullanılarak yapılmaktadır. Bu da bir projede çokça yapılan string operasyonlarında 2 teknik arasında büyük bir fark açığa çıkmasına neden olur.

Hiç yorum yok:

Yorum Gönder