How exactly slow is digitalRead()?

Okay. I tried it. It took one cycle to read PINB.

In the context of the rest of a sketch of course there will be overhead. You can't just read a value into a register and call it a day. But if you do it differently, for example by using a pointer to the port instead of an immediate value, it will take more cycles.