'In String Java kullanmalıyım.eğer performans önemli ise? () biçimi
Günlük çıkış için Dizeleri her zaman inşa etmek gerekir. Yazılım ve programları sürümleri üzerinde StringBuffer
(bir çok ekler, iş parçacığı güvenli) StringBuilder
(çok ekler, non-thread-safe) ne zaman kullanılacağını öğrendik.
String.format()
kullanarak tavsiyesi nedir? Verimli mi, yoksa performans önemli olduğu tek gömlekleri için birleştirme ile sopa zorunda mıyız?
yaşlı ve çirkin ör tarzı
String s = "What do you get if you multiply " varSix " by " varNine "?");
vs düzenli yeni stil (ve muhtemelen yavaş),
String s = String.format("What do you get if you multiply %d by %d?", varSix, varNine);
Not: belirli kullanım davam 'one-liner' benim kod boyunca dizeler günlük. yüzlerce. Bir döngü gerektirmez, StringBuilder
çok ağır. String.format()
ilgilenen özel olarak geldim.
CEVAP
hhafez kod aldım ve bir ilavehafıza testi:
private static void test() {
Runtime runtime = Runtime.getRuntime();
long memory;
...
memory = runtime.freeMemory();
// for loop code
memory = memory-runtime.freeMemory();
Ayrı ayrı her biri için bu yaklaşım, ' operatör String.koşuyorum bellek kullanılan diğer yaklaşımlar etkilenmez. (olabilirdi görüşme ()) biçimi StringBuilder, Daha birbirine bağlanması, dize olarak yapıyorum ekledi "" ben "" ben "" ben"". Blah Blah Blah Blah
Sonuç izleyin () 5 tur her biri ortalama olarakYaklaşım(ms) ayrılan Bellek (uzun) Zaman
Bu String ve StringBuilder neredeyse zaman bilge aynıdır, ama StringBuilder bellek kullanımı çok daha verimli olur.görebiliriz Bu çok önemli zaman elimizde çok sayıda günlük aramaları (veya başka ifadeleri içeren dizeleri) bir zaman aralığı yeterince kısa yani Çöp Toplayıcı adam olmaz temizlemek için pek çok dize örnekleri sonuç '' operatör.
Ve bir not, BTW, günlük kontrol etmeyi unutmaseviyemesaj oluşturma önce.
Sonuç:
- StringBuilder kullanarak devam edeceğim.
- Çok fazla zaman ya da çok küçük bir hayatım var.
Nasıl java kullanmak için.String.Scala...
Ne/eğer başka bir fark göreli performa...
C# ta string kullanmalıyım.Boş ya da D...
Hangi @NotNull açıklama Java kullanmal...
Set kullanımı(önerilen|Maksimum|Minimu...