patternjavaMinor
Drawing sets of boxes to display contents of arrays
Viewed 0 times
boxesarrayscontentsdisplaydrawingsets
Problem
This code draws two sets of 9 boxes on the screen to display the contents of two arrays.
How can I speed up, shorten and make the code more efficient?
How can I speed up, shorten and make the code more efficient?
for (int x=0;x<3;x++){
for (int y=0;y<3;y++){
if (pattern[x][y]==1){
g.setColor(colorrange.colb());
g.fillRect(actlo+(x*size),actlo+(y*size),size,size);
}
g.setColor(Color.yellow);
g.drawRect(actlo+(x*size),actlo+(y*size),size,size);
if (patternb[x][y]==1){
g.setColor(colorrange.colb());
g.fillRect(actlo+(x*size),inlo+(y*size),size,size);
}
g.setColor(Color.yellow);
g.drawRect(actlo+(x*size),inlo+(y*size),size,size);
}
}Solution
Multiplies can be pretty expensive within loops, so I minimized the use of them by precalculating where possible. It is also better to have the Y loop before the X loop to prevent cache misses (which wouldn't matter on a really small array like this but is a good practice). Consider this alternative:
for(int y = 0; y < 3; y++)
{
final int yy = y * size;
for(int x = 0; x < 3; x++)
{
final int xx = x * size;
if(pattern[x][y] == 1)
{
g.setColor(colorrange.colb());
g.fillRect(actlo + xx, actlo + yy, size, size);
}
g.setColor(Color.yellow);
g.drawRect(actlo + xx, actlo + yy, size, size);
if(patternb[x][y] == 1)
{
g.setColor(colorrange.colb());
g.fillRect(actlo + xx, inlo + yy, size, size);
}
g.setColor(Color.yellow);
g.drawRect(actlo + xx, inlo + yy, size, size);
}
}Code Snippets
for(int y = 0; y < 3; y++)
{
final int yy = y * size;
for(int x = 0; x < 3; x++)
{
final int xx = x * size;
if(pattern[x][y] == 1)
{
g.setColor(colorrange.colb());
g.fillRect(actlo + xx, actlo + yy, size, size);
}
g.setColor(Color.yellow);
g.drawRect(actlo + xx, actlo + yy, size, size);
if(patternb[x][y] == 1)
{
g.setColor(colorrange.colb());
g.fillRect(actlo + xx, inlo + yy, size, size);
}
g.setColor(Color.yellow);
g.drawRect(actlo + xx, inlo + yy, size, size);
}
}Context
StackExchange Code Review Q#70676, answer score: 3
Revisions (0)
No revisions yet.