1. Danke gnozal
2. Hab jetzt nach erfolgreichen Testverläufen die neue Version online ge-
stellt!
Was ist neu:
- Ganz viele Multiplikationen mit festen Werten zwischen 2 und 2048 (glaub)
werden jetzt optimiert:
Bsp: X * 576
Wird jetzt zu
LEA eax,[eax+eax*8]
SAL eax,06H
anstatt zu
IMUL eax, 576 ;<- viel langsamer
- Rausschneiden von unbenötigten Prozeduren! Wobei das relativ be-
schränkt funktioniert. Es werden nur Prozeduren rausgeschnitten, die
in keiner anderen Stelle im Code aufgerufen oder mit @ der Pointer geholt
wird! Das tönt jetzt nach allem, ist es aber nicht, denn wenn 2 nichtbenötigte
Prozeduren sich gegenseitig aufrufen, wird keine der beiden rausgeschnitten!
Dieses Feature würde sonst zu viel Zeit benötigen und wäre wahrscheinlich
nicht mehr in einem Durchlauf durchführbar!
Also nur, wenn die Prozedur wirklich unabhängig dasteht.
Bei allen Includes von jaPBe hinzugelinkt macht das, anstatt 211KB eine
Exe von 102KB!
Zu beachten ist, dass jetzt nicht mehr nur Fasm.exe und Fasm2.exe in den
Compilers-Ordner kopiert werden muss, sondern auch IMULOptimierungen.txt
Link ist derselbe.
Also viel Spass beim Testen!
cu
Remi
EDIT: Aktuelles Beispiel:
Code: Alles auswählen
a = 5
b = 6
c = 7
d = 3
e = 1
zahl = 1
i2 = 1
e = 1
c = 5
#N = 49999999
z.l
Delay(1000)
time1 = ElapsedMilliseconds()
For z = 1 To #N
;{ Integer
c - a / d
c = a % 2
a % 2
a = b * 3
a * 5
zahl = i2/e
zahl = -i2 - -c
zahl * 576
zahl * 2005
zahl * 10
zahl * 20
zahl * 36
zahl * 1399
zahl * 417
zahl * 427
PeekL(@c)
PokeL(@c,2)
Red(c)
Green(c)
Blue(c)
RGB(a,b,c)
PeekB(@c)
PokeB(@c, 2)
PeekW(@c)
PokeW(@c,23)
PeekF(@c)
PokeF(@c, 2.0)
; Austausch von Variablenwerten
a = b
b = c
c = a
;}
Next
time1 = ElapsedMilliseconds() - time1
MessageRequester(Str(zahl), Str(time1))
Meine Zeiten:
Ohne Optimizer: 11300ms
Mit Optimizer: 7200ms