Suggestion: Add the method isEmpty in the classes StringBuilder and StringBuffer (original) (raw)
Ulf Zibis Ulf.Zibis at CoSoCo.de
Mon Feb 11 20:08:04 UTC 2013
- Previous message: Suggestion: Add the method isEmpty in the classes StringBuilder and StringBuffer
- Next message: Suggestion: Add the method isEmpty in the classes StringBuilder and StringBuffer
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Am 11.02.2013 16:39, schrieb Hildeberto Mendonça:
On Mon, Feb 11, 2013 at 3:29 PM, Ulf Zibis <Ulf.Zibis at cosoco.de <mailto:Ulf.Zibis at cosoco.de>> wrote:
Am 11.02.2013 12:54, schrieb Hildeberto Mendonça: we have a scenario where a project with approximately 500K lines of code is going through a large refactoring. One of the changes was to replace string concatenations in loops by StringBuilder.
Are you aware, that behind the scenes, String concatenations are automatically internally replaced from javac by StringBuilder invocations, so in the end you might have less readable code, which is still not faster than before. Yes, I am. On my understanding the compiler can handle that with concatenations like this: str += "text" + "another" + str2; but I'm not sure it happens when concatenations are more complex, such as the hypothetical example below: if(str.isEmpty()) { str = "best cars: "; boolean firstCar = true; for(Car car: cars) { if(firstCar) { firstCar = false; } else { str += ", "; } str += car.getName(); if(car.getBrand() != null) { str += " - " + car.getBrand(); } } str += "."; } I believe, in each iteration, the String is converted to a StringBuilder, appended to, and converted back to a String.
Hi Hildeberto,
maybe your believe is correct. You could have a look in the byte code by javap.
And additionally you could run a benchmark for both alternatives and compare, if HotSpot compiler would be able to optimize both with same result.
I would like to know the result :-)
-Ulf
- Previous message: Suggestion: Add the method isEmpty in the classes StringBuilder and StringBuffer
- Next message: Suggestion: Add the method isEmpty in the classes StringBuilder and StringBuffer
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]