Abgabe Effiziente Programme WS09/10

Abgabe Effiziente Programme WS09/10

Sie können ein beliebiges Beispiel wählen.

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.

Vorgegebene Aufgabe: uid2name

Vergleichen Sie auf der g0 die Laufzeit (besonders "user time") der folgenden beiden Befehle:
time ls -ln /var/mail
time ls -l  /var/mail
Der 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 ]

Termin/Anmeldung zur Präsentation

Die Termine sind:
11.12., 18.12., 15.1., 22.1.

Anton Ertl
[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -  
[   ]Makefile13-Nov-2009 13:01 230  
[   ]bench-input12-Nov-2009 20:12 3.4K 
[   ]uid2name13-Nov-2009 00:19 11K 
[TXT]uid2name.c12-Nov-2009 23:42 1.3K 

Apache/2.2.22 (Debian) DAV/2 mod_fcgid/2.3.6 PHP/5.4.36-0+deb7u3 mod_python/3.3.1 Python/2.7.3 mod_ssl/2.2.22 OpenSSL/1.0.1e mod_perl/2.0.7 Perl/v5.14.2 Server at www.complang.tuwien.ac.at Port 80