verbesserung zeitmessung java2
samrider 08.04.2005 - 20:12 591 6
samuel
.:: unnahbar ::.
|
hi leute ich bin gerade am implementieren und austesten verschiedener algorithmen und wollte natuerlich zusaetzlich zur laufzeitkomplexitaet auch noch eine zeitmessung durchfuehren. da vor allem bei kleinen datenmengen allerdings die zeitmessung mit System.currentTimeMillis() etwas duerftig ist habe ich mich auf die suche nach einer verbesserung gemacht. und siehe da, aber java2 1.5 (oder java2 5.0 wie man es gerne in anbetracht von .net 2.0 bezeichnet) bietet jetzt die funktion System.nanoTime() sry, falls es schon jeder weiss, aber ich habe mich jetzt so darueber gefreut, dass ich es einfach posten musste.  wie genau die zeitmessung wirklich ist werde ich wohl oder uebel heute nacht noch austesten muessen. lg, sam
|
daisho
VereinsmitgliedSHODAN
|
Naja wenn man davon ausgeht eine 2GHz-CPU im Rechner zu haben, welche alle ~0,5ns ( wenn ich mich jetzt nicht verrechnet habe ) einen Takt abarbeitet, kann ich mir nicht vorstellen das die Zeitmessung in Nanosekunden sehr genau sein wird.
|
samuel
.:: unnahbar ::.
|
aber 0ms und 0ms vergleicht man recht schlecht.
und wenn ich speziell fuer geringe datenmengen die qualitaet von algorithmen ueberpruefen will hilft mir jede art von zeitmessung schonmal bei der abschaetzung.
sam
|
that
Hoffnungsloser Optimist
|
Mach eine Schleife drumherum, die den Algorithmus 10000 mal ausführt.
|
samuel
.:: unnahbar ::.
|
Mach eine Schleife drumherum, die den Algorithmus 10000 mal ausführt. was beim sortieren eher weniger optimal waere, da die daten ja jedesmal wieder unsortiert befuellt werden muessen. aber darum soll es ja ned gehen. sam
|
fresserettich
Here to stay
|
Mach eine Schleife drumherum, die den Algorithmus 10000 mal ausführt. nachteil dabei die schleife verbraucht auch wieder zeit sprich eine wirkliche messung des alorithmus kann man damit nicht machen wenn es ums vergleichen geht "müsste" es sich ausgleichen
|
that
Hoffnungsloser Optimist
|
Die Schleife verbraucht kaum Zeit - wenn du eine leere Schleife misst, kannst du die ja rausrechnen.
Die Setup-Zeit für jeden Testfall (eben sowas wie unsortiertes Array erzeugen) müsste man natürlich genauso rausrechnen.
|