So one of the problems I have been having with my programs is the length of time it takes to print out a pixel map into the XPM file.

I tested it with like :
500 rows and 2 columns -- 1 second
500 rows and 10 columns -- a few seconds
500 rows and 200 columns -- about 20 seconds

When I try and output the full 500x500 grid after about 4 minutes it's still not done.

Here is the only method I have been using to do this, maybe there is a more efficient way of doing it that I don't know about?

public void addRowsToGrid()
    {
        String allRows = "";
       
        for(int i = 0;i < 500; i++) {
            allRows += "\"";
            for(int j = 0;j < 500; j++) {
                allRows += grid[i][j].getColor();
            }
            if (i != 499) {allRows += "\",\n";}
            else if (i == 499) {allRows += "\"\n";}
        }
        allRows += "};\n";
       
        XPM += allRows;
    }

Can I get some feedback?

Because Strings are immutable, so every time you say string+= in the background, another String is being created and all of the contents are copied into memory. This process takes a lot of time once the String gets large. Use the StringBuilder class instead.

P.S. I made that mistake on a graded project in the past - very embarrassing when my program ran quickly and properly on small to medium sized input files but then when a long novel such as, I don't know, the Iliad is supplied, my project didn't finish fast enough for the TA to care (within 30 seconds as I later learned). But it sure taught me to pay more attention to little details and also to test for more input conditions before assuming I was finished!

Edited 7 Years Ago by BestJewSinceJC: n/a

This article has been dead for over six months. Start a new discussion instead.