I need to cut the time it takes to print a large string by ~50%.
I went from using s1 + s2
to using StringBuilder
, and instead of making several calls to System.out.print
for each line, I create one large string by appending newlines to the StringBuilder
, and then print that large string just once with System.out
.
But my code is still way too slow (this is for a homework assignment and the code is not accepted by the automated hand-in system because it takes too long).
When the StringBuilder
is printed, the string has ~100k lines
The relevant part of my code looks like this:
public class Main {
public static void main (String[] args){
MyClass builder = new MyClass();
new ClassThatBuildsOnBuilder(builder);
System.out.println(builder.str.toString());
}
}
public class MyClass {
private double[] coordinates = new double[]{0, 0, 0, 0};
public StringBuilder str = new StringBuilder();
private DecimalFormat formatter = new DecimalFormat("#0.0000");
public MyClass(){
}
public void changeValues(double[] coordinates){
this.coordinates = coordinates;
updateRow();
}
private void updateRow(){
for (double d : coordinates){
str.append(formatter.format(d));
str.append(" ");
}
str.append("\n");
}
Can this even be optimized further? I feel like this should be very close to a lower bound.