How exactly slow is digitalRead()?

if you know the pin number at compile time you can optimize a lot.
if the pin number is not known ...

check - digitalWriteFast, digitalReadFast, pinModeFast etc - Bugs & Suggestions - Arduino Forum -