SpartaDos vs. BeWeDos : XIO 37


SpartaDos vs. BeWeDos : XIO 37

von mp-one » Sa 4. Apr 2009, 19:13
Hallo Programmierer,

mittlerweile habe ich mal etwas ausführlicher mit dem XIO 37-Befehl (POINT) unter SpartaDos X 4.42 (Emu) und BeWeDos 1.3 (Emu und 800XL+SIO2USB) experimentiert. Dazu habe ich mir zunächst am PC eine größere Datei (~ 4 MB, ca. 120.000 Zeilen) vorbereitet (alpha sortiert und EOL=#155), auf ein 16MB-Image kopiert und dann unter Turbo Basic über die TIME-Funktion mal die Zeiten gemessen, die für das Positionieren auf eine beliebige Byte-Position benötigt werden. Dabei ist mir ein interessanter Unterschied zwischen den beiden DOSen aufgefallen: Während BeWeDos jedesmal wieder die Datei von vorne einliest, bewegt SDX (und auch SD 3.2d) sich nur jeweils um das Delta zwischen alter und neuer Position vor oder zurück. Wenn man nur einen einzigen Sprung in die Datei macht, wirkt sich das nicht groß aus, da beide DOSe hier nahezu gleich schnell sind. Schon beim zweiten Sprung, ausgehend von der ersten Position, schneidet BeWeDos je nach Lage der neuen Position teils deutlich schlechter ab. Konkret habe ich mal eine binäre Suche implementiert, bei der ja nach dem "Teile-und-herrsche"-Prinzip bei jedem Sprung/Vergleich die Suchmenge halbiert wird. Das führt zu einer Anzahl von relativen Sprüngen, die Schritt für Schritt das Ergebnis "einkreisen". Das Resultat ist, dass bei SpartaDos jeder gesuchte Eintrag (aus immerhin 120.000 Zeilen) in höchstens 15 Sekunden gefunden wird, bei BeWeDos dagegen kann es im ungünstigen Fall über 200 Sekunden dauern. Das Verhalten von BeWeDos hat mir der Entwickler Jiri Bernasek schon bestätigt. Der Grund liegt wohl in dem extremen Platzmangel, mit dem BeWe zurechtkommen musste. In SpartaDos sollen allein für das Positionieren drei verschiedene Strategien vorhanden sein, wovon jeweils die günstigste ausgewählt wird. Ich werde jetzt mal schauen, inwieweit ich durch die Verwendung eines Index und ggf. aufteilen der großen Datei in kleinere BeWe an SDX heranbringen kann. Das nur mal zur Info. Vielleicht hat ja jemand auch schon mal mit dieser Thematik experimentiert und kann Erfahrungen dazu berichten.

Gruß,

Michael