In java they say don’t concatenate Strings, instead you should make a stringbuffer and keep adding to that and then when you’re all done, use toString() to get a String object out of it.
Here’s what I don’t get. They say do this for performance reasons, because concatenating strings makes lots of temporary objects. But if the goal was performance, then you’d use a language like C/C++ or assembly.
The argument for using java is that it is a lot cheaper to buy a faster processor than it is to pay a senior programmer to write fast efficient code.
So on the one hand, you’re supposed let the hardware take care of the inefficiencies, but on the other hand, you’re supposed to use stringbuffers to make java more efficient.
While I see that you can do both, use java and stringbuffers, my question is where is the flaw in the logic that you either use a faster chip or you spent extra time writing more efficient software.
The argument that you should use StringBuffer rather than concatenation is an old java cargo-cult myth. The Java compiler itself will convert a series of concatenations into a single StringBuffer call, making this “optimization” completely unnecessary in source code.
Having said that, there are legitimate reasons to optimize even if you’re using a “slow” bytecode or interpreted language. You don’t want to deal with the bugs, instability, and longer development cycle of C/C++, so you use a language with richer capabilities. (Built-in strings, whee!) But at the same time, you want your code to run as fast as possible with that language, so you avoid obviously inefficient constructs. IOWs just because you’re giving up some speed by using java doesn’t mean that you should forget about performance entirely.