Call millis() before setup

WizenedEE:
What if we put UCSRB = 0; in our constructor before using pinMode?

That would probably be OK as it disconnects the UART.

WizenedEE:
It doesn't seem like using attachInterrupt in a constructor would hurt anything either, as long as the interrupt doesn't use millis(). (Is micros() okay? I don't really understand its code)

micros() and millis() both use the internal timer. millis() gets the last "tick" from the last interrupt, micros() takes that and adds in the "extra" from the currently-running timer to get greater resolution. Thus you need init to complete for either of those to return anything meaningful.

Of course, in your constructor, you could just assume millis() and micros() return zero. That would be reasonably close.