Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 23.03.2007, 23:18 Titel: FB-dicht an Asm.. |
|
|
Hi,
eigentlich wollte ich nur aus ComSpec das SystemVerzeichnis erhalten..
..doch dafür brauchte ich eine Revers-Funktion. Es ist keine Schwierigkeit,
sowas mit Mid() zu schreiben und es funktionierte auch..
..da fiel mir ein, das Volta mal sowas in Asm gemacht hatte.
Mid() ist nun mal ein sehr zeitintensiver Befehl und so habe ich verglichen.
Das Ergebnis fiel wie erwartet aus und da habe ich an der Mid-Version ein wenig
herumoptimiert und siehe da: verdammt dicht an Asm..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.03.2007, 23:33 Titel: |
|
|
ganze netter source, hab mit asm und ind allerdings sehr schwankende werte zwischen 1.0 und 5.5 währen der mid recht konstant wischen 1.0 und 2.5 liegt ?! _________________
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 24.03.2007, 00:31 Titel: |
|
|
Nun ja, ich habe ja extra dabeigeschrieben, daß die Werte mit Timer ermittelt werden..
Ich wollte ja auch nur wissen, ob es große Unterschiede gibt..
..bei mir ist es(weil sonst wenig läuft )
Mid ~1.8
Asm ~1.30
Ind ~1.34
(Die Werte sind aus mehreren Versuchen gemittelt, Ausreißer sind nicht berücksichtigt..)
Die Exponenten habe ich hier mal weggelassen..
Auf alle Fälle zeigt das Beispiel, daß Mid() gerade in Schleifen nicht das Gelbe vom Ei ist
..wenn es möglich ist, den Mid-Befehl durch Chr() zu ersetzen.
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 24.03.2007, 12:15 Titel: |
|
|
Hi,
hier hat MichaelW eine sehr gute Benchmark-Methode geschrieben: http://www.freebasic.net/forum/viewtopic.php?p=34325
Die ermittelt die minimalste Anzahl der Taktzyklen pro Test. Wenn man den Test oft genug ausführt ist (hoffentlich) einer dabei der ohne Unterbrechung optimal abläuft.
Testergebnis:
Code: | Original:Hello FB-World!
Reverse :!dlroW-BF olleH
Original:Hello FB-World!
SystemDir=C:\WINDOF
Mid=..manu muraq sert setrap ni asivid sinmo tse aillag
Reverse(Ori &=diM) : 39275 cycles
Asm=..manu muraq sert setrap ni asivid sinmo tse aillag
Revers(Ori &=msA) : 1988 cycles
Ind=..manu muraq sert setrap ni asivid sinmo tse aillag
ReverseInd(Ori &=dnI) : 2689 cycles
(pretty close to Asm and 'far' away from Mid()..) |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 24.03.2007, 15:47 Titel: |
|
|
Hi volta,
ich wußte, daß du etwas dazu schreiben würdest
Freundlicherweise bestätigen deine Messungen meine Schätzungen per Timer
volta hat Folgendes geschrieben: | Code: | Testergebnis: :D
Code:
Original:Hello FB-World!
Reverse :!dlroW-BF olleH
Original:Hello FB-World!
SystemDir=C:\WINDOF
Mid=..manu muraq sert setrap ni asivid sinmo tse aillag
Reverse(Ori &=diM) : 39275 cycles
Asm=..manu muraq sert setrap ni asivid sinmo tse aillag
Revers(Ori &=msA) : 1988 cycles
Ind=..manu muraq sert setrap ni asivid sinmo tse aillag
ReverseInd(Ori &=dnI) : 2689 cycles
(pretty close to Asm and 'far' away from Mid()..) |
|
..war mir irgendwie klar, daß du keine Standard-Windowsinstallation hast
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|