Java'da dize birleştirme için genellikle bir StringBuilder
kullanılması tercih edilir. Bu her zaman böyle midir?
Demek istediğim şu: Bir StringBuilder
nesnesi oluşturmanın, append()
yöntemini ve son olarak toString()
yöntemini çağırmanın ek yükü, mevcut dizeleri iki dizge için +
operatörü ile birleştirmekten daha mı azdır, yoksa yalnızca daha fazla (ikiden fazla) dizge için mi tavsiye edilir?
Eğer böyle bir eşik varsa, bu neye bağlıdır (belki dize uzunluğu, ama hangi şekilde)?
Ve son olarak, iki, üç veya dört dizgi gibi daha küçük durumlarda +
birleştirme işleminin okunabilirliğini ve kısalığını StringBuilder
ın performansına değişir misiniz?
Düzenli birleştirmeler için StringBuilder
ın açık kullanımı obsolete Java optimization tips ve Java urban myths'de eskimiş olarak belirtilmektedir.
Genel bir kural olarak, her zaman daha okunabilir kodu kullanın ve yalnızca performans bir sorun olduğunda yeniden düzenleyin. Bu özel durumda, en yeni JDK'lar aslında kodu her durumda StringBuilder sürümüne optimize edecektir.
Genellikle bunu yalnızca bir döngüde veya derleyicinin kolayca optimize edemeyeceği bazı karmaşık kodlarda dize birleştirme yapıyorsanız manuel olarak yapmanız gerekir.
Bir göz atın: http://www.javaspecialists.eu/archive/Issue068.html ve http://www.javaspecialists.eu/archive/Issue105.html
Aynı testleri kendi ortamınızda yapın ve daha yeni JDK'nın veya Java uygulamanızın String
ile mi yoksa StringBuilder
ile mi daha iyi dize işlemi yaptığını kontrol edin.
Microsoft sertifikasyon materyali de aynı soruyu ele almaktadır. NET dünyasında, StringBuilder nesnesi için ek yük, 2 String nesnesinin basit bir şekilde birleştirilmesini daha verimli hale getirir. Java dizeleri için de benzer bir yanıt olduğunu varsayıyorum.