Just another Purebasic Optimizer V 1.14
Verfasst: 02.10.2005 17:20
Ich hat mal wieder ein bisl Langeweile und hab ein Proggy geschrieben, was genauso wie remi_meiers Optimierer den Asm-Output von PB optimiert. Warum ich ned einfach remi gesagt hab, das er das einbauen soll, was ich rausgefunden hab? Ganz einfach, ich wollt das schnell mal ausprobieren obs funzt und remi war nicht online, also blieb mir nichts anderes übrig als mir selber ein Optimierer zu basteln.
Aber keine Angst, mein Optimierer läuft zusammen mit remis, man kann also beide verwenden.
Link: http://www.deeem2031.de/PB/D_Optimizer.zip
Features:
(bei Proceduren)
-löscht unnötige Push/Pops bei Procedureaufrufen
-der ClearLoop wird durch eine schnellere Routine ersetzt
-Ecx wird immer vom Stack gelöscht
-Esi wird wenn möglich mit Esp ersetzt
-steht ein ProcedureReturn am Ende einer Procedure wird das zurücksetzen des Ergebnisses gelöscht
(anderes)
-For-Next Schleifen werden, wenn möglich, vervielfacht (der Code wird zwar größer, dafür läuft es aber ein wenig schneller)
-ersetzen von SYS_StringEqual mit Nullstrings durch direkte Verarbeitung
-löschen von doppelten Stringenden (verringert nur eventuell die Größe, auf die Geschwindigkeit hat es keinen Einfluss)
Installations-Anleitung:
-ohne remis Optimierer:
->"...\Purebasic\Compilers\Fasm.exe" zu "Fasm2.exe" umbenennen
->Den Inhalt der zip in den "...\Purebasic\Compilers\"-Ordner packen
->freuen
-mit remis Optimierer:
->"...\Purebasic\Compilers\Fasm.exe" zu "Remis_Optimierer.exe" umbenennen (man kann der Exe auch einen anderen namen verpassen)
->Den Inhalt der zip in den "...\Purebasic\Compilers\"-Ordner packen
->"D_Optimierer.ini" öffnen und bei "FasmExe" "Remis_Optimierer.exe" angeben -> "FasmExe = Remis_Optimierer.exe"
->freuen
Noch'n Bsp:
Bei mir:
-ohne Optimierung: 1172 ms
-mit Optimierung: 406ms
Aber keine Angst, mein Optimierer läuft zusammen mit remis, man kann also beide verwenden.
Link: http://www.deeem2031.de/PB/D_Optimizer.zip
Features:
(bei Proceduren)
-löscht unnötige Push/Pops bei Procedureaufrufen
-der ClearLoop wird durch eine schnellere Routine ersetzt
-Ecx wird immer vom Stack gelöscht
-Esi wird wenn möglich mit Esp ersetzt
-steht ein ProcedureReturn am Ende einer Procedure wird das zurücksetzen des Ergebnisses gelöscht
(anderes)
-For-Next Schleifen werden, wenn möglich, vervielfacht (der Code wird zwar größer, dafür läuft es aber ein wenig schneller)
-ersetzen von SYS_StringEqual mit Nullstrings durch direkte Verarbeitung
-löschen von doppelten Stringenden (verringert nur eventuell die Größe, auf die Geschwindigkeit hat es keinen Einfluss)
Installations-Anleitung:
-ohne remis Optimierer:
->"...\Purebasic\Compilers\Fasm.exe" zu "Fasm2.exe" umbenennen
->Den Inhalt der zip in den "...\Purebasic\Compilers\"-Ordner packen
->freuen

-mit remis Optimierer:
->"...\Purebasic\Compilers\Fasm.exe" zu "Remis_Optimierer.exe" umbenennen (man kann der Exe auch einen anderen namen verpassen)
->Den Inhalt der zip in den "...\Purebasic\Compilers\"-Ordner packen
->"D_Optimierer.ini" öffnen und bei "FasmExe" "Remis_Optimierer.exe" angeben -> "FasmExe = Remis_Optimierer.exe"
->freuen

Noch'n Bsp:
Code: Alles auswählen
Procedure a(x)
Protected a,b,c
a = x
ProcedureReturn a
EndProcedure
#r = 40000000
s.s = ":)"
st1 = GetTickCount_()
For i = 1 To #r
If s
a(2)
EndIf
Next
t1 = GetTickCount_()-st1
MessageRequester("",Str(t1))
-ohne Optimierung: 1172 ms
-mit Optimierung: 406ms