In Java, Use StringBuilder When Constructing Large Strings
This bit of advice is not new to me nor to the software development community. But recently I had one of those experiences where I put together a quick solution (to keep my code as simple as possible), and later I ran into a performance problem. And it was because I was violating this principle.
I am generating a very large string (based on values that are read from a text file). I had instantiated a string and was appending to the end of it, like so:
String output = ""; for (String line : fileReader) output += line;
And it was going v….e….r….y…s….l….o….w. After figuring out where the slowness was occurring, I used the StringBuilder instead. And it started going fast! Here’s the general idea of the change to the code.
StringBuilder output = new StringBuilder(); for (String line : fileReader) output.append(line);
The reason the latter is so much faster is that it only has to create one object in memory: the StringBuilder object. If you just use a String, it has to recreate a new String object in memory each time you append to it.
Just something to keep in mind.