Diese Übungsserie beschäftigt sich mit den Inhalten der VL über Komplexitätsabschätzung und Datenstrukturen.
Aufgabe 1: Messumgebung zur Laufzeitbeurteilung
Ziel dieser Aufgabe ist es, eine Codegerüst zu entwickeln mit dessen Hilfe Sie bei späteren Aufgaben in der Lage, Laufzeit-analysen von Anwendungen zu erstellen.
Der Code für die Laufzeitanalyse soll in der main Methode stehen um Verfälschungen der Laufzeiten durch Methodenaufrufe zu vermeiden.
Die zu erstellende Testsuite soll folgende Eigenschaften erfüllen:
- Sie soll innerhalb einer Schleife später beliebigen Code ausführen können. Die Anzahl der Schleifendurchläufe soll später variiert werden können (10.000 – 10.000.000.000).
- Die Laufzeit dieses Codes soll gemessen werden. Zur Zeitmessung kann System.currentTimeMillis() verwendet werden.
- Die Schleife die den Programmcode später 10.000 bis 10.000.000.000 ausführt soll insgesamt 10mal wiederholt werden. Bei jedem Durchlauf wird die Zeit gemessen und in einem Array abgespeichert.
- Anschließend soll die durchschnittliche Zeit ausgegeben werden, die jeder Durchgang benötigt hat.
- Die Ausgabe der Testsuite soll aussehen wie im Folgenden abgebildet:
Aufgabe 2: Festlegen der Messbedingungen
Überlegen Sie sich ca. 3-5 Stichpunkte zu folgenden Fragen:
- Welche Faktoren können die Ausführungsgeschwindigkeit der Testumgebung beeinflussen?
- Welche Bedingungen müssen Sie auf ihrem Rechner schaffen um möglichst aussagekräftige Ergebnisse zu erhal-ten?
- Experimentieren Sie an ihrem Rechner, ob/wie Sie die Ausführungsgeschwindigkeit der Programms beeinflussen können.
Aufgabe 3: Messen von elementaren Operationen
Nun können Sie damit beginnen, Code in die innerste Schleife ihrer Testsuite zu schreiben. Überlegen Sie sich elementare Operationen (z.B. Wertzuweisungen) und schreiben Sie den entsprechenden Code. Variieren Sie nun den Wert für die Durch-läufe der inneren Schleife (ca im Bereich von 100.000 bis 10.000.000.000) und tragen Sie die gemessenen Werte in ein Messprotokoll ein, welches z.B. wie folgt aussehen kann(!) :
Aufgabe 1: Messumgebung zur Laufzeitbeurteilung
Ziel dieser Aufgabe ist es, eine Codegerüst zu entwickeln mit dessen Hilfe Sie bei späteren Aufgaben in der Lage, Laufzeit-analysen von Anwendungen zu erstellen.
Der Code für die Laufzeitanalyse soll in der main Methode stehen um Verfälschungen der Laufzeiten durch Methodenaufrufe zu vermeiden.
Die zu erstellende Testsuite soll folgende Eigenschaften erfüllen:
- Sie soll innerhalb einer Schleife später beliebigen Code ausführen können. Die Anzahl der Schleifendurchläufe soll später variiert werden können (10.000 – 10.000.000.000).
- Die Laufzeit dieses Codes soll gemessen werden. Zur Zeitmessung kann System.currentTimeMillis() verwendet werden.
- Die Schleife die den Programmcode später 10.000 bis 10.000.000.000 ausführt soll insgesamt 10mal wiederholt werden. Bei jedem Durchlauf wird die Zeit gemessen und in einem Array abgespeichert.
- Anschließend soll die durchschnittliche Zeit ausgegeben werden, die jeder Durchgang benötigt hat.
- Die Ausgabe der Testsuite soll aussehen wie im Folgenden abgebildet:
Aufgabe 2: Festlegen der Messbedingungen
Überlegen Sie sich ca. 3-5 Stichpunkte zu folgenden Fragen:
- Welche Faktoren können die Ausführungsgeschwindigkeit der Testumgebung beeinflussen?
- Welche Bedingungen müssen Sie auf ihrem Rechner schaffen um möglichst aussagekräftige Ergebnisse zu erhal-ten?
- Experimentieren Sie an ihrem Rechner, ob/wie Sie die Ausführungsgeschwindigkeit der Programms beeinflussen können.
Aufgabe 3: Messen von elementaren Operationen
Nun können Sie damit beginnen, Code in die innerste Schleife ihrer Testsuite zu schreiben. Überlegen Sie sich elementare Operationen (z.B. Wertzuweisungen) und schreiben Sie den entsprechenden Code. Variieren Sie nun den Wert für die Durch-läufe der inneren Schleife (ca im Bereich von 100.000 bis 10.000.000.000) und tragen Sie die gemessenen Werte in ein Messprotokoll ein, welches z.B. wie folgt aussehen kann(!) :