Ingolstädter .NET Developers Group Ingolstädter .NET Developers Group
Ingolstädter .NET Developers Group

Zwei unserer Mitglieder, Markus Winhard und Marina Heuchert, haben am Database Contest 2007 der Zeitschrift dotnetpro teilgenommen. Sie verwendeten dazu eine Alpha Version des VFPCompiler for .NET der Firma eTecnologia. Die Zeitschrift dotnetpro hat uns freundlicherweise erlaubt, die Ergebnisse zu veröffentlichen.

Die genaue Aufgabenstellung des dotnetpro Database Contest 2007 finden Sie in der Ausgabe 5/2007, eine Besprechung der Ergebnisse in den Ausgaben 10/2007 und 11/2007 der Zeitschrift dotnetpro.

Das war, in Kurzform, die zu lösende Aufgabe (siehe auch http://dotnetpro.ing-es.de/):

Die zu verarbeitende Datenmenge war mit 490.000 Datensätzen in der ursprünglichen Adressdatei nicht gerade klein (knapp 35 MB).



Das war das Ergebnis. Die Namen der Teilnehmer mußten wir auf Anweisung der dotnetpro unkenntlich machen.



Wie man in der Tabelle nachlesen kann, war die Lösung von Markus Winhard die schnellste, die die gestellte Aufgabe korrekt erfüllt hat. Zur Abwertung führte lediglich der Umstand, daß die von der dotnetpro gewünschte Aufrufsyntax zum Starten des Programms nicht eingehalten wurde.

Die Lösung von Marina Heuchert verwendete die neue 64bit DBF Engine des VFPCompiler for .NET. Diese war zum Zeitpunkt des Contest (Anfang September 2007) leider noch nicht in der Lage, einen Index zu erstellen, der auf einem Methodenaufruf basiert. Deshalb mußte zum Entfernen der Dubletten eine langsamere Vorgehensweise verwendet werden. Das war die Hauptursache der langsameren Gesamtlaufzeit.

Nach dem Einsendeschluß erkannte Markus Winhard eine weitere Optimierungsmöglichkeit seiner Lösung. Der zuständige Redakteur der dotnetpro hatte sich freundlicherweise bereit erklärt, diese außer Konkurrenz noch einmal zu testen. Mit einer Gesamtlaufzeit von 7,343 Sekunden konnte er damit die Lösungen der Mitbewerber klar hinter sich lassen.


Wenn es genügt hätte, die Datenbank-Tabellen nur im Hauptspeicher zu erzeugen und nicht auf die Festplatte zu schreiben, wären sogar nochmal ein paar Zehntel Sekunden drin gewesen.