So, I tested this quite a lot. and once i took out jQuery and had it only actually changing the class if the class didn't match it had very little performance difference compared to repeatedly resetting the timeout.

but, repeatedly setting the timeout was still a little faster and i did want to use a debounce, but for that we'd need to edit our debounce a little to add the choice to run the event at the start or the end of the delay.

for now i've kept it like this but I am happy to change it. i wasn't in the mood to try and add that feature to debounce that morning. haha.