Wer nichts anderes vorhat, kann die unten vorgegebene Aufgabe für dieses Semester wählen.
Natürlich können Sie, wenn Sie wollen, auch die Implementierung eines anderen Problems optimieren; allerdings hat das einige Nachteile: Sie müssen einen Teil der Zeit Ihrer Präsentation für die Erklärung des Problems und des Algorithmus aufwenden, und die Ergebnisse sind nicht direkt vergleichbar. Der Vorteil (vor allem, wenn Sie einen späteren Termin wählen) ist, dass Sie nicht das wiederholen, was andere gemacht haben, oder ein langsameres Programm präsentieren.
Bereiten Sie eine 15-18-minütige Präsentation vor (am besten machen Sie einen Probelauf, damit sich die Präsentation auch sicher in der Zeit ausgeht). Da Sie dabei nicht soviel Zeit haben wie ich in der Vorlesung, präsentieren Sie die meisten Schritte nur im Überblick (also eventuell nur, wieviel er gebracht hat), und nur ein paar besonders interessante Schritte mit mehr Details. Besonders interessant sind u.a. die Schritte, die unerwartet viel oder wenig bringen.
time ls -ln /var/mail time ls -l /var/mailDer Unterschied in der Laufzeit kommt daher, dass die Version mit -n nicht die Accountnamen herausfinden muss, sondern stattdessen die numerische user-id ausgibt.
Bei unserem Beispiel geht es darum, das Herausfinden des Accountnamens zu beschleunigen.
Das Ausgangsprogramm ist uid2name.c, das
eine auf das für uns Essentielle reduzierte Version des
Befehls ls -l
darstellt: Es liest eine Reihe von user-ids
ein und gibt die zugehörigen Account-Namen aus. Damit wir nicht von
eventuellen Änderungen in /etc/passwd betroffen sind, sondern
vergleichbare Ergebnisse bekommen, verwenden wir einen Snapshot dieser
Datei.
Die Eingabe für den Vergleich ist bench-input (ein Snapshot der user-ids in
/var/mail). Mit make
können Sie das Ausgangsprogramm
bauen und vermessen, wobei die Messwerte auch in einem Verzeichnis von
Resultaten abgelegt wird (aktuelle Zusammenfassung
der Resultate). Und zwar werden pro Messung zwei Zahlen
ausgegeben: Die Menge des allokierten Speichers, und die Anzahl der
verbrauchten Zyklen (user+system time). Wenn Sie das Programm
optimieren, behalten Sie bitte diese Ausgaben bei und messen Sie ab
und zu mit make (besonders dann die Version, die Sie präsentieren).
Sie können sich dann auch die "Trainingszeiten" der anderen anschauen.
Sie können Ihr Programm (und Doku dazu, z.B. Ihre Präsentation) im Web veröffentlichen (wird nicht beurteilt), und zwar indem Sie auf /nfs/unsafe/httpd/ftp/pub/anton/lvas/effizienz-abgaben/2009w ein Verzeichnis anlegen und Ihre Dateien in diesem Verzeichnis ablegen.
Aufgaben vom [WS02/03 | WS03/04 | WS04/05 | WS05/06 | WS06/07 | WS07/08 | WS08/09 ]
11.12., 18.12., 15.1., 22.1.
![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | Parent Directory | - | ||
![]() | bench-input | 2009-11-12 20:12 | 3.4K | |
![]() | uid2name.c | 2009-11-12 23:42 | 1.3K | |
![]() | uid2name | 2009-11-13 00:19 | 11K | |
![]() | Makefile | 2009-11-13 13:01 | 230 | |