Back to the list Optimizer version: 1.5
remi_meier
-
Platform:
Windows Type: Application Genre: - Language: English
read: 11264
8.22 / 9
BBCode Link
[url=http://www.purearea.net/pb/showcase/show.php?id=156]
[b]Optimizer v.1.5[/b][/url]


Nicht f?r PB4.0 -> wird nicht mehr weiterentwickelt!

http://forums.purebasic.com/german/viewtopic.php?t=2108

Features List:
# Macros!
- Ben?tigt Userlibrary
- Mit Einschr?nkungen: keine lokale Variablen, mind. ein Parameter!

# Userlibrary
- OptimizerPause() und OptimizerResume()
- Rechnen mit Doubles (64bit-Floats)
- Alle Funktionen werden mit Hilfe des Optimizers geinlined (wie Makro)

# Ausschneiden von unben?tigten Prozeduren
- Wenn eine Prozedur nur erstellt (mit Procedure ...) wird, aber _nirgends_ im Code Bezug auf sie festgestellt werden kann, wird sie ausgeschnitten. (N?tzlich f?r Include-Files mit vielen Funktionen)

# Inlinen von Prozeduren:
- PeekF(), PokeF(), PeekL(), PokeL(), PeekW(), PokeW(), PeekB(), PokeB()
- CallFunctionFast()
- Red(), Green(), Blue(), RGB()
- ACos(), ASin(), ATan(), Int(), Log(), Log10()

# Multiplikationen mit festen Werten
z.B. a * 151, a * 1025, u.a.
anstatt IMUL werden andere, schnellere Operationen gebraucht

# Asm-Optimizations
- a = b - -a
- a % 2, a % 4, ... a % 2^n
wird zu a&1, a&3, ... a&(2^n-1)
- und ein paar kleinere..


Was tut es:
Es optimiert den Asm-Output von PB. Dabei werden ein paar Asm-Tricks und auch ganz einfache K?rzungen im PureBasic.asm vorgenommen.

Anleitung:
1. Zip downloaden und entpacken
2. FAsm2.exe, FAsm.exe, IMULOptimierungen.txt und Optimizer.ini in den Ordner PBCompilers kopieren (dabei kann FAsm.exe bedenkenlos ersetzt werden, man kann auch einfach die bestehende FAsm.exe in Fasm2.exe umbenennen und nicht die aus dem Zip nehmen)
3. Irgendwas kompilieren
4. Ein Fenster "Optimizer" erscheint
- Hide this window next time (beim n?chsten mal kompilieren dieses Fenster nicht mehr anzeigen)
- Optimize PureBasic.asm (soll der Asm-Output optimiert werden?)
5. Fertig
(Um das Optionenfenster wieder sichtbar zu machen, einfach mal in die Optimizer.ini schauen)

Wies Funktioniert:
Die neue FAsm.exe aus dem Zip stellt den Optimierer dar. Er wird mit den FAsm Parametern durch den PBCompiler aufgerufen. Nun optimiert er das PureBasic.asm und gibt dann die erhaltenen Parameter an den richtigen FAsm (FAsm2.exe) weiter, der das dann zu einem PureBasic.obj kompiliert. Danach l?uft es standardm?ssig weiter.

Resultate (f?r ein unrealistisch gutes Beispiel (zu finden im deutschen Forum)):
ohne Opt.: 5078ms (PB) gegen 2453ms (Asm)
mit Opt.: 2542ms gegen 2532
[170 KB]    (1251 Downloads)
The source is included in the program package

to vote LogIn or Register an account.




 
 
 
Epyx
03:02:45 2005-09-05
Hi, super Sache mit dem Optimizer ich habe den bislang auch immer benutzt jetzt habe ich fest gestellt das die von dir mit gelieferten FASM und FASM2 exe nicht mit Tailbite zusammen Arbeiten.
Zumindest bei mir erscheint beim Compilen immer ein Fehler, mit den Original Dateien klappt alles. W?re sch?n wenn du das evtl. noch richten k?nntest?!!
Absonsten super Arbeit :)


DarkDragon
06:51:12 2005-05-15
Sehr gut, k?nntest du jedoch noch eine Routine einbauen, die z.B. bei folgenden Kommentaren den Optimizer Ein, bzw. Aus schaltet?

;OptiOff
Blabla
;OptiOn

Sozusagen wie die Debugger Funktionen EnableDebugger und DisableDebugger ;) .

remi_meier
13:07:02 2005-05-16
Danke!
Mit Kommentaren kann ich leider keine Optionen machen, da diese vom PB-Compiler vorher schon rausgeschnitten werden... Ich k?nnte es h?chstens umst?ndlich ?ber eine zus?tzliche Userlib machen, wo ich dann an den Funktionsaufrufen erkennen kann, dass ich hier nicht mehr optimieren soll...
Wenns wirklich n?tzlich sein sollte kann ichs vielleicht einbauen!
PS: K?nnte mir derjenige, der eine tiefe Bewertung abgegeben hat, mir eine E-Mail mit Kommentar schicken (Verbesserungsvorschl?ge)?

DarkDragon
08:14:03 2005-09-05
@Epyx: Das Problem liegt an TailBite, nicht am Optimizer. Wenn du nur das erste mal beim kompillieren des Sources auf nicht optimieren klickst und das zweite mal auf Optimieren und HideWindow, dann dauerts ne Weile, aber es klappt. Warum wissen wir nicht.

Epyx
23:19:37 2005-09-25
So klappt es,
danke DD