+ 6
Advice
advice to beginners: if your program is running really slow, try replacing all the strings with a StringBuilder. e.g. String s = "hello"; instead of doing s += " world"; replaced with: StringBuilder sb = new StringBuilder ("hello"); sb.append (" world"); String final = sb.toString(); ok reason why += string is slow is because everytime you do that, java implicitly creates a new String object. with StringBuilder, there is only one object created, so there are not a bunch of objects to garbage collect
5 Respostas
+ 6
I never wrote code in Java, but can this really make that much of an perfomance impact? :o
+ 6
Advice part 2
lol i ran out of space. anyway i just wanted to share my experience with the stringbuilder. i was trying to run a loop 10000 times. inside the loop i had a bunch of string += "stuff";
it wouldnt even finish compiling cause of how slow it was running.
then i switched to stringbuilder and instead now i can run the program even with 1000000 iterations, and it seems almost instant
so this is why i suggest everyone switching to StringBuilder (at least for java. not sure how other languages work)
so yes. it really can make that much of a performance difference
+ 3
yup @andre. i was doing like 5 concatenations per iteration. so in total it was like 50000 new object creations
but obviously if you are only going to concatenate like 5 times, then you wont see much performance increase in using stringbuilder
+ 1
@Tim G.
Yes, because like Edward said, += creates a new string object. Meaning that a new reference to that object is created in memory. If you do this a lot it can be very slow since the memory is being filled with references to objects.
- 1
Ehm... Can you not use reserved keywords like final as modifiers?