Have you logged how many times the else-block is executed?
Yup, I've tested that and the else block is only executed once at the start because of the way I'm using the class.
But... what's the issue exactly? Are you trying to get a particular framerate, or are you trying to get a smooth animation of your circle?
Yes you're right, my top priority is to get a smooth animation but I got distracted by trying to minimise CPU usage and wanted to know if I'm doing something wrong in my timer class.
Thank you everyone for the suggestions, I should stop reinventing the wheel and focus on the actual game instead