Laufzeit berechnen?

b1zarRe

Bekanntes Mitglied
Gibt es in Java eine Methode um die Laufzeit zu berechnen? In Form von den Landau Symbolen wie O(n²) oder ähnlich? Oder benutzt ihr nur die System.currentTimeMillis(); Methode?
 

Marco13

Top Contributor
Das eine hat mit dem anderen nicht viel zu tun. (Nicht "nichts", aber nicht viel). Die Landausache verwendet man ohnehin eher für "elementare" Dinge (Zugiffszeiten bei Listen oder Maps, Dinge wie Suchen und Sortieren) wenn man nicht gerade einen neuen Algorithmus in einem wissenschaflichen Paper beschreibt... Für den Rest gibt's System.nanotime, Profiler, und den KPD-Index. (Kippen pro Durchlauf :D )
 

b1zarRe

Bekanntes Mitglied
Also Landau Symbole eher in der Theorie? Und garnicht in Java?

Ich würde zb gerne sehen, wielange eine Methode a im Gegensatz zu einer Methode b brauch.
Beispielsweise eine Methode a die eine For Schleife hat und eine Methode b die 2 oder 3 Innere Forschleifen hat. Ich möchte dann vergleichen können, welche davon schneller ist (wird wohl die mit einer Schleife sein ;)). Aber wie kann ich das genau bewerkstelligen?

Ich habe bisher probiert, nach der Methode a System.currenttimemillis(); zu machen bzw. nano und dann nach methode b genau das gleiche. Und dann das eine vom anderen zu subtrahieren... macht ihr das auch so? oder irgendwie (noch) effizienter?
 
Zuletzt bearbeitet:

T7V

Aktives Mitglied
Es gibt zum Beispiel die methode currentTimeMillis().
Diese liefert dir die Zeit (UTC), welche seit dem 1 Januar 1970 (oder so) vergangen ist in Millisekunden ( als long).
Du könntest diese Methode am Anfang und Ende einbauen, in Variablen abspeichern und einfach abziehen.
Dann bliebe logischerweise die Laufzeit in Millisekunden.
 

Marco13

Top Contributor
Die reine Zeitmessung, wie T7V schon angedeutet hat:
Java:
long before = System.nanoTime();
rechne();
long after = System.nanoTime();
double durationMS = (after-before)/1e9;
System.out.println("Zeit: "+durationMS+" ms");

Die Sache mit den Schleifen ist aber zu pauschal. Sowas wie
Java:
for (int i=0; i<1; i++) { /* mache nichts */ }
for (int i=0; i<1; i++) { /* mache nichts */ }
for (int i=0; i<1; i++) { /* mache nichts */ }
wird sicher schneller gehen als
Java:
for (int i=0; i<100000; i++) { macheViel(); }

Die Landau-Symbole beschreiben die asymptotische Laufzeit - das ist wichtig wenn man sich z.B. die Frage stellt, ob es besser ist, eine LinkedList oder eine ArrayList zu verwenden, oder ob man für eine Wegsuche im Graphen eine BFS oder einen Dijkstra mit Fibonacci-Heap verwende soll. Wie gesagt, das hat mit der "tatsächlichen" Zeit nur indirekt zu tun (eben nur... asymptotisch ;) )
 

b1zarRe

Bekanntes Mitglied
Ok, ich danke Euch!

Jep, dass mit der asymptotischen Laufzeit besprechen wir gerade im Studium.... Aber gibt es dennoch dafür keine Java Klasse, welche das abschätzen kann? Denke ich werde die o.g. Methodik benutzen und klappt auch wunderbar... Aber wenn es doch sowas asymptotisches gibt, wäre es nett zu erfahren.
 

Marco13

Top Contributor
Theoretisch wäre es vielleicht in gewissen Grenzen möglich, Code zu analysieren, und wirklich die asymptotische Laufzeit zu bestimmen - zumindest in Trivalfällen wie
Code:
for (int i=0; i<n; i++) { System.out.println(i); }
sollte sich das O(n) da noch herleiten lassen. "Praktisch" sieht das anders aus, und wo die Grenzen sind ist eben die Frage.

Man könnte auch ganz dumm-dreist approximieren:
Code:
for (int n=1; n<100; n++)
{
    timeFor(runWith(n)); 
}
Wenn dort als Laufzeiten rauskommen
n = 1 : 1 Sekunde
n = 2 : 2 Sekunden
n = 3 : 3 Sekunden
...
dann würde vielleicht ein Linearer Zusammehang nahe liegen, aber das funktioniert eben so NICHT, weil man nur durch Messung nicht die asymptotische (genau darum geht es ja) Laufzeit bestimmen kann. (Aber zugegeben: Um zwei Sortierverfahren über den Daumen anzuschätzen kann es schon helfen, sich mal die Zeiten für n=1000, n=1000000 und n=1000000000 anzusehen ;) )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
W Array zur Laufzeit bearbeiten? Java Basics - Anfänger-Themen 31
D Objekterzeugungen mit zur Laufzeit variierenden Attributen Java Basics - Anfänger-Themen 7
J GroupLayout zur Laufzeit erweitern Java Basics - Anfänger-Themen 1
B Übersetzungszeit und Laufzeit Java Basics - Anfänger-Themen 3
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
H Laufzeit Java Basics - Anfänger-Themen 11
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
R Objekte zur Laufzeit in Schleife erzeugen und in ArrayList ablegen Java Basics - Anfänger-Themen 4
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
D Laufzeit von einfachem Programm Java Basics - Anfänger-Themen 21
M Input/Output Datei in Laufzeit-JAR kopieren Java Basics - Anfänger-Themen 6
V Laufzeit Java Basics - Anfänger-Themen 23
G Laufzeit/ O/Θ-Notation einer Treeset Methode Java Basics - Anfänger-Themen 0
W Klassen [GELÖST] Objekte während der Laufzeit mit neuen veränderten Werten beliebig oft initialisieren Java Basics - Anfänger-Themen 2
M Erste Schritte Code zur Laufzeit ändern lassen Java Basics - Anfänger-Themen 3
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
M Methoden miteinander verbinden (Laufzeit) Java Basics - Anfänger-Themen 6
llabusch Interface Layout eines Labels während der Laufzeit ändern Java Basics - Anfänger-Themen 0
Streeber reale Laufzeit meines Programms ausgeben Java Basics - Anfänger-Themen 1
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
R Variablen Datentyp erst während Laufzeit festlegen Java Basics - Anfänger-Themen 6
S Klassentyp zur Laufzeit ändern? Java Basics - Anfänger-Themen 3
M Laufzeit und O-Notation Java Basics - Anfänger-Themen 3
M Variablen Variable zur Laufzeit erzeugen Java Basics - Anfänger-Themen 3
A Laufzeit von verschachtelter for-Schleife Java Basics - Anfänger-Themen 4
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
L Panels zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Laufzeit Java Basics - Anfänger-Themen 11
M Methodennamen zur Laufzeit ausgeben Java Basics - Anfänger-Themen 5
F JTable zur laufzeit füllen Java Basics - Anfänger-Themen 7
P GUI - Layout per Laufzeit erstellen/verändern? Java Basics - Anfänger-Themen 6
N Variablen VariableNamen auswirkung auf Laufzeit Java Basics - Anfänger-Themen 3
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
J Erste Schritte Zinseszinsberechnung Ermittlung Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
S Erste Schritte Weihnachtsbaum / Laufzeit O(n) Java Basics - Anfänger-Themen 9
E Laufzeit verkürzen Java Basics - Anfänger-Themen 14
A Threads Zur Laufzeit hinzufügen/entfernen Java Basics - Anfänger-Themen 10
D Classpath compiler zur Laufzeit aufrufen & lib-classpath Java Basics - Anfänger-Themen 6
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
S Klasse bei Laufzeit laden? Java Basics - Anfänger-Themen 2
B Klassen Objekte während der Laufzeit dynamisch anlegen Java Basics - Anfänger-Themen 8
K jButton zur Laufzeit hinzufügen Java Basics - Anfänger-Themen 22
D globale Variablen zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
A Frage zur Laufzeit / Optimierung Java Basics - Anfänger-Themen 2
N Laufzeit in Nanosekunden - in Minuten umrechnen Java Basics - Anfänger-Themen 6
alderwaran objekthierarchie darstellen während der laufzeit Java Basics - Anfänger-Themen 2
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Frage zur Laufzeit Java Basics - Anfänger-Themen 2
Luk10 Variablen zur Laufzeit ändern! Java Basics - Anfänger-Themen 7
G JAR zur Laufzeit nachladen Java Basics - Anfänger-Themen 2
S JDialog resize zur Laufzeit PROBLEM!!! Java Basics - Anfänger-Themen 5
E Pfad zu einem gif-Bild wird zur Laufzeit nicht gefunden Java Basics - Anfänger-Themen 5
A Applet Bild zu laufzeit hinzufügen Java Basics - Anfänger-Themen 4
C Frage zu Syntax-,Laufzeit-, Semantikfehler Java Basics - Anfänger-Themen 3
R JVM zur laufzeit manipulieren? Java Basics - Anfänger-Themen 4
S Zur Laufzeit Strings Compilieren Java Basics - Anfänger-Themen 5
A Objekte während der Laufzeit erstellen Java Basics - Anfänger-Themen 3
A Objektzugriff zur Laufzeit ändern Java Basics - Anfänger-Themen 20
G Text eines JLabels zur Laufzeit ändern Java Basics - Anfänger-Themen 4
M Laufzeit von Programmen Java Basics - Anfänger-Themen 3
A Jar-Archive zur Laufzeit erstellen Java Basics - Anfänger-Themen 3
G Zu Laufzeit von Tastatur einlesen Java Basics - Anfänger-Themen 11
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
A Neue Objekte zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
D Locale zur Laufzeit über JComboBox laden? Java Basics - Anfänger-Themen 17
S Ausdruck zur Laufzeit auswerten Java Basics - Anfänger-Themen 10
G Anzahl Textfelder zur Laufzeit verändern. Java Basics - Anfänger-Themen 4
Z Benutzerdaten währen Laufzeit speichern Java Basics - Anfänger-Themen 2
K JProgressbar, zur laufzeit steuern Java Basics - Anfänger-Themen 7
V Vektoren zur Laufzeit erzeugen Java Basics - Anfänger-Themen 7
N zur Laufzeit gefundene class-Datei verwenden - wie geht das? Java Basics - Anfänger-Themen 2
G Look and Feel zur Laufzeit ändern Java Basics - Anfänger-Themen 2
A Text einer JComboBox während der Laufzeit ändern ? Java Basics - Anfänger-Themen 4
K Chart zur Laufzeit erstellen und aktualisieren Java Basics - Anfänger-Themen 2
G JAR: Externe Dateien zur Laufzeit aufrufen Java Basics - Anfänger-Themen 12
C Variablen zur Laufzeit erstellen? Java Basics - Anfänger-Themen 14
B Warum hat dieser einfache Algorithmus lineare Laufzeit? Java Basics - Anfänger-Themen 3
M JButton zur laufzeit erzeugen/ löschen Java Basics - Anfänger-Themen 3
B Laufzeit und Übersetzungszeit Java Basics - Anfänger-Themen 11
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
M Java Heap Space während der Laufzeit ändern Java Basics - Anfänger-Themen 2
M Klassen zur Laufzeit laden, aus einer jar heraus. Java Basics - Anfänger-Themen 14
A classpath zur Laufzeit erweitern Java Basics - Anfänger-Themen 4
G Anpassen einer JComboBox zur Laufzeit Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben