Fehlersuche im Programm

Ich wollte nur ein einfaches Programm schreiben, aber irgendetwas stimmt nicht, denn wenn ich nur einen Durchgang habe, dauert es ca. 15 ms, wenn ich jetzt die 500 Durchgänge starte tortzdem nur ca. 20 ms. Ist da ein Fehler im Programm, oder gibt es dafür eine Erklärung?

{
	public static void main(String[] args)
	{
		//edit it:
		int number = 1000000;
		int repeat = 500; //repeat counting -> repeat > 0
		//end editing!

		int n;
		long timeBegin = System.currentTimeMillis();
		
		for(int r = 0;r<repeat;r++)
		{
			for(n = 0;n<number;n++)
			{
				//count +1
			}
			
			n = 0;
		}
		
		long timeEnd = System.currentTimeMillis();
		
		long time = timeEnd - timeBegin;
		double timeAverage = (double) time / repeat;
		
		System.out.println("Number: " + number);
		System.out.println("Repetitions: " + repeat);
		System.out.println("Average: " + timeAverage);
		System.out.println("Whole time: " + time);
	}
}```

Vielen Dank für eure Antworten :)

LG Huntro

der JIT hat optimiert - sprich aus einem Interpretieren des Byte-Codes wurde nativer Code erzeugt. Und interpretieren dauert nun mal.

Achso, das heißt bei der ersten Scheife wird es noch übersetzt, aber dann bei der restlichen 499 wird sie nur noch ausgeführt, und ist daher so schnell.
Vielen Dank :slight_smile:

wann der JIT optimiert weis ich nicht - kommt auch auf die Methode an. Kann sein das er schon am Anfang optimiert (glaube eher weniger, müsste der Compiler schon feststellen) oder erst nach 50 Durchläufen.