Optimizer

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Deeem2031 hat geschrieben:
remi_meier hat geschrieben:Ein paar Funktionen der Math-Lib mussten angepasst werden, Fred scheint da seit neustem Std-Call zu verwenden /:->
Ähm, das war schon immer so :?
Nö, vorher wars eine Assembler-Lib, also im Assembler-Code z.B.:
PB_ASin, PB_ATan und die Float wurde direkt auf FPU-Stack gelegt! Nun
ists aber _PB_ASin@4, _PB_ATan@4 und der eine Parameter wird nun auf
den normalen Stack gepusht. :wink:
D.h. das ganze wurde langsamer, aber dafür hat Fred AFAIK die Stack-
Verwaltung verbessert.

Deeems Libs sollten keine Probs machen, hab sogar die StringExtension
Lib benutzt um es zu kompilieren :wink:

Die neue IDE bietet leider nicht die Möglichkeit, zwischen PBCompiler und
FASM ausgeführt zu werden :|

DD hats glaub schon mal geschaft, ne Lib mit Tailbite zu erstellen, beim
ersten mal Optimizer-Aufruf optimieren, beim 2. mal nicht mehr (oder wars
umgekehrt?), ich habs jedoch noch nicht geschafft.. Ich denke, da muss
El_Choni mal ran :roll:

greetz
Remi
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

remi_meier hat geschrieben:DD hats glaub schon mal geschaft, ne Lib mit Tailbite zu erstellen, beim
ersten mal Optimizer-Aufruf optimieren, beim 2. mal nicht mehr (oder wars
umgekehrt?), ich habs jedoch noch nicht geschafft.. Ich denke, da muss
El_Choni mal ran :roll:

greetz
Remi
Jo, das erste mal: ohne optimierung, dann bei jedem weiteren mal mit optimierung und alles funzt perfekt.

Schade dass es nichtmehr mit PB 3.94 funzt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Dann wäre es vielleicht sinnvoll, El_Choni zu fragen, dass er ne Möglichekit einbaut, dass man den Optimizer als eine Art "Plugin" für TailBite nutzen kann...
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Kleines Bugfix (gab Fehler beim Rausschneiden von Prozeduren mit Debugger)
hochgeladen.

Ich würde eher sagen, das El mal ein wenig das Error-Handling in TailBite
verbessert, denn das sollte nicht abstürzen... (wennschon eine vernünftige
Fehlermeldung, aber damit kann ich nix anfangen :( )

greetz
Remi
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

hardfalcon hat geschrieben:Dann wäre es vielleicht sinnvoll, El_Choni zu fragen, dass er ne Möglichekit einbaut, dass man den Optimizer als eine Art "Plugin" für TailBite nutzen kann...
Ja, Tailbite plugins, dann kann ich einen schreiben der das ganze zu ner Linux Lib umwandelt.

P.S.: ich hab ja garnichts besseres zu tun -_-
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

http://mypage.bluewin.ch/remimeier/zip/Optimierer.zip

Ja es gibt was neues! Sogar was nützliches!

Es wird eine Userlib mitgeliefert, die zwar nicht nötig ist zum Funktionieren
des Optimizers, aber es bietet einige neue coole Features:
- OptimizerPause()/OptimizerResume()
um Optimierung für Teile des Codes abzuschalten.

- Doubles.
In der UserLib gibts Funktionen zum Rechnen mit Doubles! Nun, was ist
daran so toll? Die Geschwindigkeit natürlich! Denn die Funktionen werden,
vorausgesetzt Optimizer aktiv, direkt durch den ASM-Code ersetzt, also
keinen Funktionsaufruf mehr nötig!
Vergleich (DoublesTest.pb):
Ohne Optimizer: 4742ms
Mit Optimizer: 2991ms

Siehe dazu Help.txt

Wens interessiert, läds, wen nicht, nicht.


greetz
Remi :)

Dank @DD fürs Testen!
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Also ich finde, dass das Programm top ist :allright: 8/10 Sternen.
Ich habe da noch ein paar Ideen für das Programm. Z.b. wäre
da noch eine Statistik ganz interessant wie viele Zeilen von X
Zeilen im Source optimiert werden konnten.
Bild
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Statistik? Coole Idee :)
Wie hättest es denn gerne? Zusätzliche Statistikdatei erstellen nach jedem
Kompilieren?
Die Statistik kann ich dann aber nur für ASM-Source machen, also X-Zeilen
ASM-Source von X-Zeilen ASM-Source.
Theoretisch könnte ich mir noch die Mühe machen, die gesparten Taktzyklen
zu erkennen, aber ich glaube, dass ist dann doch etwas zu viel.

Das Projekt wird wahrscheinlich sowieso mit V4 verschwinden, da dann
ein grosser Teil, also das Inlinen von Funktionen, von Makros erledigt
werden können. Ev. mach ich dann optimized macros :D

greetz
Remi
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich hab grad mal den Optimizer ausprobiert...

EXE vor dem Optimieren: 51 KByte
EXE nach dem Optimieren: 54 KByte

irgendwas mach ich wohl falsch ;)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

nö, wieso? Optimieren heißt nicht das Programm klein hauen.
Bild
Antworten