Etwas verwirrend, dass deine Frage auf den Uno Bezug nimmt - da ist doch schon ein Quartz drauf...
10 MHz reicht nicht nur für gänzlich zeitunkritische Tasteraufgaben. Ich glaube, schon standardmäßig ist der Divider auf 8 gesetzt, d. h., ein "frischer" Atmega328 läuft nur mit 2 MHz (bei 16 MHz Quartz). Und in vielen Fällen wird das wahrscheinich nie geändert...
Im Übrigen gibt es meines Wissens verschiedene Konstanten, die dem Compiler sagen, mit welchem Takt der µC tatsächlich läuft. Damit kann man die millis() usw. anpassen. (Zumindest kenn ich das vom Atmel Studio so.)