Whats the use of tft.setClipRect(); at the end of the last two for loops?

Code:

for (int percent = 75; percent >= 0; percent--) {
int16_t min_x = g_needle_rect_min_x;
int16_t min_y = g_needle_rect_min_y;
int16_t max_x = g_needle_rect_max_x;
int16_t max_y = g_needle_rect_max_y;
tft.writeRect(g_offset_x, g_offset_y, 240, 240, (const uint16_t*)defi);
drawNeedle(percent, COLOR_YELLOW);
min_x = min(min_x, g_needle_rect_min_x);
min_y = min(min_y, g_needle_rect_min_y);
max_x = max(max_x, g_needle_rect_max_x);
max_y = max(max_y, g_needle_rect_max_y);
tft.setClipRect(min_x, min_y, max_x - min_x + 1, max_y - min_y +1);
tft.updateScreen();
** tft.setClipRect();**
}

I commented both of them out and almost doubled the speed:

Code:

CS:10, DC:9 RST:255 MOSI:11, SCLK:13 MISO:12
_t3n::begin mosi:11 miso:12 SCLK:13 CS:10 DC:9
T4 setup CS/DC
_t3n::begin - completed
center(160, 120) offset(40 0)
Press any key to continue
elapsed full updateScreen 2822
DMA Init buf size: 960 sub frames:80
elapsed full updateScreenAsync 2860
elapsed clip updateScreen 165
elapsed clip updateScreen 160
Press any key to continue

Also, I'm unable to print a string in the last two for loops - I am trying to display the percent number right below the boost text. It counts up and down in the first two loops, but not in the ones where we use setClipRect (it never updates, just sticks to the last value which was 0)