ESP 32 button control

Hi all, I would like to add a couple of physical button to drive and rotate the motor.
I’ve read about not adding anything (especially delays) in the loop, to keep the calls rate highest as possible.
So the question is how would be better to implement this? (timer interrupt) ? any particular one to use?
Do we have a function to calculate the loop rate or can I simply count the overflow with millis()?