Die zu optimierende Routine findet sich in einer speziellen Version von Gforth.
Am besten, sie packen dieses Paket in ihrem Account auf der b3 aus:
tar xvfz ~anton/lvas/effizienz/gforth-loader.tar.gz cd gforth-loader gforth-fast cp test_rewrite test_rewrite.ref
Jetzt können Sie messen, wie lange das Laden und Optimieren des Images gforth.fi dauert:
perfex gforth-fast(Die Laufzeit ist so kurz, dass
time
zu grob auflösen
würde). Etwas mehr als die Hälfte dieser Zeit wird in der zu
optimierenden Routine verbracht. Bei diesem Lauf wird nebenbei noch
eine Datei test_rewrite erzeugt, die das Ergebnis des
Optimierungsprozesses unabhängig von Einflüssen durch die
Speicherverwaltung repraesentiert. Diese Datei kann man mit
test_rewrite.ref vergleichen, um zu prüfen, ob man das
Ergebnis nicht verändert hat:
diff test_rewrite test_rewrite.ref(Vorsicht: das mitgelieferte test_rewrite.ref stammt von gforth, nicht von gforth-fast).
Die Routine selbst ist optimize_rewrite()
in der Datei
engine/main-loader.c. Diese Datei ist eine fuer den
aktuellen Zweck modifizierte Variante der Datei
engine/main-gforth.c; die Modifikationen bestehen
hauptsaechlich darin, dass die modifizierte Variante Gforth nach dem
Laden des Images (per default gforth.fi) verlässt, und
ausserdem noch die Dateien test_rewrite und
snapshot.fi schreibt.
Am einfachsten machen Sie die Übungen auf der b3, wo schon alle benötigte Software vorhanden ist. Woanders benötigen Sie auf jeden Fall ein halbwegs aktuelles Linux-i386 System und die ffcall Bibliotheken, und sinnvollerweise auch noch den perfctr-Patch und Anwendungen. Sollten Sie novh Fragen zur Installation haben, wenden Sie sich an mich.
Natürlich können Sie, wenn Sie wollen, auch die Implementierung eines anderen Problems oder eines anderen TSP-Algorithmus' 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.
Bereiten Sie eine 15-20-minütige Präsentation vor. Da Sie dabei nicht soviel Zeit haben wie ich in der Vorlesung, präesentieren 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.
Um einen Vergleich zwischen den verschiedenen Lösungen zu
ermöglichen, messen Sie mit perfex
auf der b3 die Zyklen
für Ihre verschiedenen Varianten.