I think the oled display is slow, and causing the updates to be at more than 20 counts and not responsive to rapid changes in rpm.
Try the sketch without the drawPercentbar().
Even with @johnwassers code to look at the time between two pulses in microseconds will not help if the time between rpm updates is controlled by the display and not the pulse detection algorithm.
What are the rates of change in rpm you are looking at? If you are sitting in neutral and winding the bike from idle to several thousand rpm in a second or so the display of rpm will have large jumps. If you are on the road and slowly changing speed, is the displayed rpm changing in smaller jumps? What are your expectations for responsiveness?