Zu Punkt 1:
Du solltest bedenken das dein Programm unter einem Multitasking-OS abläuft.
Das heißt das es natürlich nicht 100% der CPU-Zeit zur Verfügung hat, sondern sich die CPU-Zeit mit anderen Prozessen teilen muß.
(Die wollen ja auch mal ran ;) ).
Sprich, die zeitlichen Lücken ergeben...