Windows ist kein Echtzeit-
OS. Und wenn du dein Thread geschätzt 1 Mio. mal jeweils nach 1 ns unterbrichst kann hier jegliche Windows-Aktion (Virenscanner wird aktualisiert. Festplattendefraktmentierung startet, ...) dafür sorgen das die Zeiten sehr weit streuen. Vermutlich wird ein entsprechend ungünstig implementiertes .NET/Java-Programm genau die gleichen Zeiten liefern.
Also bau erstmal dein Programm um (Bessere Zugriffsfunktionen auf Zeichenfläche von Bitmap, kein tausendfaches Synchronize, ...) und schau dann ob diese Streuung noch auftritt.
Windows Vista - Eine neue Erfahrung in Fehlern.