Laufzeit messen

WebOlli

Grünschnabel
Ich würde für ein kleines Java-Programm gerne die Laufzeit in Sekunden messen, habe aber keine Ahnung, wie ich das anstellen soll.
Das Prog erzeugt Felder mit zufälligen Zahlen und sortiert diese dann mit verschiedenen Algorithmen und ich würde gerne eine Ausgabe haben, wie lange dies dauert...
Kann mir jemand nen Tipp geben?
 
Die aktuelle Zeit bekommst du so:
Code:
	public long gettime()                             //Methode für aktuelle Zeit in Millisekunden
	{
	  return System.currentTimeMillis();
	}

Das einfach jeweils am Anfang und am Ende der Berechnung auslesen, und dann die Anfangszeit von der Endzeit abziehen.
So erhälst du die Laufzeit in Millisekunden.
 
Hallo!

So könnte man das auch machen ...

Code:
/*
 * Created on 04.05.2004
 
 */

/**
 * @author Thomas Darimont
 */
public class Main {

	public static void main(String[] args) {
		new Main().doIt();
	}

	/**
	 * 
	 */
	private void doIt() {
		long time = -System.currentTimeMillis();
		System.out.println("Expensive Method Call....");
		System.out.println(time + System.currentTimeMillis() + "ms");
		
	}
}

Gruß Tom
 
Es bleibt noch anzumerken das die Zeitmessung bei Java mit vorsicht zu geniessen ist. Ein Abweichung von 2 sec bei mehrmaligen Ausfuhren eines kleine programm ist schon vorgekommen.
 
Original geschrieben von ADA&QS
Es bleibt noch anzumerken das die Zeitmessung bei Java mit vorsicht zu geniessen ist. Ein Abweichung von 2 sec bei mehrmaligen Ausfuhren eines kleine programm ist schon vorgekommen.

Du kannst halt nicht bestimmen, wann der GC läuft, und wann nicht. Wenn der GarbageCollector bei einer Messung gleichzeitig läuft, und bei der zweiten nicht, dann dann sind diese Unterschiede klar. Daher immer minimum 10 Zeitmessungen laufen lassen, und Mittelmass und Höchst und Tiefstmass als Masseinheit nehmen.
 
Wenn nur der GC ware, denn konnte man mit der durch Vergabe von Prioritaet aushebeln siehe Realtime Java von Burns, aber den Einfluss durch das BS und der vrituelle Maschine ist nicht zu unterschatzen.
 
Ja es gibt aber profiling Werkzeuge mit denen mann recht genau messen kann.

Aber um den Flaschenhals einer Anwendung zu finden sind z.b Junit Tests perfekt, und da reicht dann auch das über date.getTime();
 
Original geschrieben von Christian Fein
long start = new Date().getTime();
//was tun
long runningTime = new Date().getTime() - start;

seltsamerweise bekomme ich immer eine 0 (Null) als runningTime heraus, wenn ich das so mache....
woran kann's liegen?
 

Neue Beiträge

Zurück