I find it slow in different ways. When clearing the full screen or displaying a bitmap:
tft.fillScreen(Display_Background_Color);
tft.drawBitmap(0, 33, ssLogo, 160, 62, Display_Text_Color);
But also when printing text / numbers, where I am careful to beforehand print the old text before, in the background color, thus only rewriting the minimum necessary. Even by only overwriting the changed digits, the new ones can be seen being redrawn.
void prtDigit(char digit, byte x, byte y, uint16_t color) {
tft.setTextColor(color);
tft.setCursor(x, y);
tft.print(digit);
}
// assumes oldSpeed, newSpeed are positive
void prtSpeed(uint16_t text_color) {
// splits speed into 4 digits and compares them
// assumes decimal point is printed previously
sprintf(newDispString, "%05.2f", newSpeed);
if (newDispString[0] != oldDispString[0]) {
prtDigit(oldDispString[0],10,SPEED_BASELINE, Display_Background_Color);
prtDigit(newDispString[0],10,SPEED_BASELINE, text_color);
}
if (newDispString[1] != oldDispString[1]) {
prtDigit(oldDispString[1],40,SPEED_BASELINE, Display_Background_Color);
prtDigit(newDispString[1],40,SPEED_BASELINE, text_color);
}
if (newDispString[3] != oldDispString[3]) {
prtDigit(oldDispString[3],90,SPEED_BASELINE, Display_Background_Color);
prtDigit(newDispString[3],90,SPEED_BASELINE, text_color);
}
if (newDispString[4] != oldDispString[4]) {
prtDigit(oldDispString[4],120,SPEED_BASELINE, Display_Background_Color);
prtDigit(newDispString[4],120,SPEED_BASELINE, text_color);
}