"We are back" « oc.at

verbesserung zeitmessung java2

samrider 08.04.2005 - 20:12 591 6
Posts

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
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

Vereinsmitglied
SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19788
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 ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
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
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Mach eine Schleife drumherum, die den Algorithmus 10000 mal ausführt.

samuel

.:: unnahbar ::.
Avatar
Registered: Jul 2000
Location: hagenberg
Posts: 2680
Zitat von that
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
Registered: Jul 2002
Location: hier
Posts: 5456
Zitat von that
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
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz