I haven't done any interrupt stuff on an Arduino. In an earlier life if I needed that sort of thing I used 8748h/9h written in assembly code.
Arduino Uno and Nano can do up to 10 or 20 KHz when not using interrupts, but can do nearly 1MHz when using them.
ESP32 can do much more, on two cores at once.
A few days back i built an RPM counter with ESP32, oled, own battery and charger, so i just had to slap an infrared sensor from an old photocopier and do some coding using interrupts and internal timers. It is bloody fast as in my moment of wisdom i removed all delays.