Habe das unten stehende Programm geschrieben, um die Laufzeiten von verschiedenen Operationen zu messen.
Mir ist schon klar, dass es da keine exakten Ergebnisse geben wird. Nun bekomme ich allerdings beim Aufruf von laufzeitMessen() immer Ausgaben wie folgende:

Da die Zahlen immer Vielfache von 100 sind: Kann es sein, dass meine Systemzeit einfach nicht genauer als auf Zehntelmikrosekunden ist und ich deshalb gerundete Werte bekomme? (Alles unter 50 wird dann wohl auf 0 abgerundet?)
Mir ist schon klar, dass es da keine exakten Ergebnisse geben wird. Nun bekomme ich allerdings beim Aufruf von laufzeitMessen() immer Ausgaben wie folgende:

Da die Zahlen immer Vielfache von 100 sind: Kann es sein, dass meine Systemzeit einfach nicht genauer als auf Zehntelmikrosekunden ist und ich deshalb gerundete Werte bekomme? (Alles unter 50 wird dann wohl auf 0 abgerundet?)
Java:
import java.util.*;
class Laufzeitmessung {
int i = 0;
/**
* Methode zum Testen der Laufzeit einer anderen Methode, die unterhalb des Kommentars aufgerufen werden muss.
* @return Ausführungsdauer
*/
public void laufzeitTesten()
{
long minimum;
minimum = Integer.MAX_VALUE;
long startzeit;
long laufzeit;
for (int i = 0; i < 1000; i++)
{
startzeit = System.nanoTime();
this.inkrementieren();
laufzeit = System.nanoTime() - startzeit;
if (laufzeit < minimum)
{
minimum = laufzeit;
}
System.out.println("Dauer Objekterzeugung (in ns): " + laufzeit);
}
System.out.println("Minimum (in ns): " + minimum);
}
/**
* Beispielmethode erzeugt ein Objekt
*/
public void objektErzeugen()
{
new Schrittzaehlung();
}
/**
* Beispielmethode erzeugt ein Feld
*/
public void feldErzeugen()
{
int[] feld = new int[10];
}
/**
* Beispielmethode inkrementiert den Wert eines Attributs
*/
public void inkrementieren()
{
i++;
}
}