I should have mentioned this earlier, if you look at the code for drawArc, you will see
for(float rotate = start; rotate <= stop; rotate+=0.5)
To draw an arc that spans 0 - 180 degrees, with a radius of 50 pixels and filled in, it takes 12.9 seconds. However if I make it increment by 1 instead of 0.5, then the time is cut in half, 6.5 seconds. There is a reason why it takes SO long to make the gauge, and that is because of the appearance. If I make it increment by 0.5, the gauge is filled and it looks good, no dead spots. However (you can try this if you want) if I make it increment by 1, then yes it will take half the time, but it won't look as nice.
Maybe I make it an option, Appearance vs Speed, and have it draw the gauges based on that setting.
There is always a method to the madness.