Hallo,
ich habe ein kleines Problemchen. Es geht um folgendes:
Für mein Informatikstudium soll ich Mergesort, Quicksort und einen randomisierten Quicksort in Java implementieren (schon geschehen). Zum Vergleich der Algorithmen sollen dann verschiedene Listen mit allen drei Algorithmen sortiert werden und die jeweilige Laufzeit gemessen werden. Ich dachte mir, ich mache die Zeitmessung über System.currentTimeMillis(). Ich rufe es direkt vorm ausführen und direkt nach dem ausführen auf und subtrahiere dann die beiden Zeitwerte. Das funktioniert an sich auch wunderbar, blos bekomme ich für meinen Geschmack zu oft 0 als Ergebnis. Schaut man sich die Werte an, die System.currentTimeMillis() ausgiebt, dann sieht man natürlich immer Unterschiede in den Werten, zum Großteil sind sie halt klein.
Ich denke mal, es liegt an der maschineninternen Rundung durch das Subtrahieren. Da kann man ja nichts dagegen machen.
Hat trotzdem jemand eine Idee, wie ich die Zeit messen könnte, ohne bei sehr kleinen Unterschieden immer 0 als Ergebnis zu erhalten?
Falls es wichtig ist: Ich lass jeweils int-Arrays der Länge 5000 sortieren. Mit größeren Arrays muss ich bei meinem Laptop vorsichtig sein, da bekomm ich schnell StackOverflow oder OutOfMemory-Exceptions.
ich habe ein kleines Problemchen. Es geht um folgendes:
Für mein Informatikstudium soll ich Mergesort, Quicksort und einen randomisierten Quicksort in Java implementieren (schon geschehen). Zum Vergleich der Algorithmen sollen dann verschiedene Listen mit allen drei Algorithmen sortiert werden und die jeweilige Laufzeit gemessen werden. Ich dachte mir, ich mache die Zeitmessung über System.currentTimeMillis(). Ich rufe es direkt vorm ausführen und direkt nach dem ausführen auf und subtrahiere dann die beiden Zeitwerte. Das funktioniert an sich auch wunderbar, blos bekomme ich für meinen Geschmack zu oft 0 als Ergebnis. Schaut man sich die Werte an, die System.currentTimeMillis() ausgiebt, dann sieht man natürlich immer Unterschiede in den Werten, zum Großteil sind sie halt klein.
Ich denke mal, es liegt an der maschineninternen Rundung durch das Subtrahieren. Da kann man ja nichts dagegen machen.
Hat trotzdem jemand eine Idee, wie ich die Zeit messen könnte, ohne bei sehr kleinen Unterschieden immer 0 als Ergebnis zu erhalten?
Falls es wichtig ist: Ich lass jeweils int-Arrays der Länge 5000 sortieren. Mit größeren Arrays muss ich bei meinem Laptop vorsichtig sein, da bekomm ich schnell StackOverflow oder OutOfMemory-Exceptions.