MorganS:
Now, returning to your actual project, remember that the Arduino is almost infinitely fast. It will be able to take several readings of the input in a millionth of a second.
Not using the digitalRead() command, or at least I haven't. It takes about 5 cycles, port read takes 1.
But once you read the bit you gotta do something with it or it's a wasted read. The fastest pin-check loop with counter I've been able to do using digitalRead() runs in just over 1 microsecond.