Showdown: Swiftfox gegen Firefox

chillfoxVor einiger Zeit gab es eine grosse Kontroverse um Firefox unter Linux: Messungen haben gezeigt, dass die Windowsversion mit Wine unter Linux schneller gelaufen ist, als die Linux native Version. Diese Messung hat sehr zu meinem subjektiven Eindruck gepasst: Firefox ist eine Schnecke unter Linux. Als Alternative wurde eine „optimierte“ Version mit Namen Swiftfox offeriert. Nundenn, lasset uns das auschecken.

Das Testsystem

Der HP Laptop:

Typ: HP EliteBook 8530p
CPU: Intel® Core™2 Duo Prozessoren T9400 (2,53 Mhz)
RAM: 4GB
Video: ATI Technologies Inc Mobility Radeon HD 3650
Videodriver: 8.54.3

Der Dell Desktop:

Typ: Dell Inspiron 531 Desktop
CPU: AMD Athlon(tm) 64 X2 3800+ (2.0G)
RAM: 4GB
Video: NVIDIA GeForce 6150SE nForce 430

Windows:

OS: Microsoft Windows Vista Home Basic SP1 (32 Bit)

Linux:

Distribution: Kubuntu 8.10
Kernel: 2.6.27-11-generic #1 SMP x86_64 GNU/Linux

Der Windowsrechner ist ein Desktop, dafür schon eine Spur älter. Bei den unterschiedlichen Hardwareplattformen sind die Resultate natürlich nur bedingt vergleichbar. Klar hätte man das auf einer Kiste durchziehen können, aber ich hab auch noch Anderes zu tun :)…

Die Kontrahenten

Swiftfox:
Swiftfox sind „optimierte“ Builds. Sie können unter Debian wunderbar mittels apt-repository installiert werden. Leider hinken die Versionen etwas nach und die aktuellste ist 3.0.4pre. Swiftfox kann dasselbe Profil-Verzeichnis benutzen wie eine Firefox-Installation.
Firefox:
DER Klassiker. Anscheinend wird Firefox unter Windows entwickelt und humpelt darum in der Linuxversion etwas lahm. Unter beiden Betriebssystemen kam 3.0.8 zum Einsatz.
Internet Explorer
Der bei Vista, beiliegende und stetig upgedatete Microsoft Internet Explorer, Version 7.0.6001.18000.

Die Messungen

Ich habe die Tests jeweils zwei mal laufen lassen und die Resultate verglichen, damit die Plausibilität einigermassen gegeben ist :)…
Weiterlesen

Profiling des Spielagenten mit Eclipse TPTP

Die FAQ zu Avaloqix geben ganz klar die Kriterien bekannt:

Für den Wettbewerb werden Graphen mit 20-60 Knoten genutzt. Pro Knoten gibt es max. 9 Kanten. Zusätzlich gibt es eine Timelimite von 5 sec pro Spielzug.

Leider fehlen die Angaben über die Leistungsfähigkeit der Wettbewerbsmaschine. Ich gehe mal ganz willkürlich davon aus, dass sie nicht langsamer ist oder weniger Speicher hat als mein Laptop und die Resultate nur besser sein können. Eine Geschwindigkeitsoptimierung dürfte also nicht ganz sinnlos sein. Ausserdem wird mein Agent in den ersten paar Zügen nie fertig mit Rechnen und muss abbrechen. Eine Optimierung die hier mehr Spielzüge erlaubt, würden die Gewinnchancen signifikant steigern.

Ausserdem gilt wie überall im Leben: Machs schön und richtig und erst danach schnell.

Benchmarking

Bei einer Geschwindigkeitsoptimierung sollte man immer benchmarken. Das heisst: Die Geschwindigkeit vor und nach der Optimierung nachmessen, so dass man sicher sein kann, dass man in die richtige Richtung optimiert hat. Ebenfalls empfehlenswert ist gezieltes optimieren: Wenn man eine Funktion nur ein bisschen verschnellert, die sehr oft aufgerufen wird, bringt das unter Umständen mehr wie wenn man eine Funktion mit viel Aufwand drastisch verkürzt die nur wenige Male zum Zuge kommt. Man braucht also Daten.

Als Benchmark habe ich – mangels anderer Gegner – ein Spiel gegen den OptimalOneAgent gewählt. Für den Benchmark sollten immer die gleichen Einstellungen gelten, die komfortable Avaloqix Oberfläche erlaubt zum Glück das Festlegen des Spielfeldes mit dem Random Seed.

Es empfiehlt sich auch, Turn Pause zu deaktivieren und End when winner is ovious zu aktivieren.

Profiling

Doch woher die Daten nehmen und nicht stehlen? Dafür zuständig sind sogenannte Profiler. Für Eclipse gibt es einen (einer der versteckten Diamanten) im TPTP-Projekt.
Weiterlesen