Seite 1 von 3
Just another Purebasic Optimizer V 2.01
Verfasst: 30.11.2006 00:50
von Deeem2031
JaPBO geht in die nächste Runde. Und zwar für PB 4.0.
Und nicht nur das es der erste Optimierer für 4.0 ist - es ist auch das erste Projekt, das mit PB.Net geschrieben wurde. (Die .Net Exe brauch auch demensprechend das .Net Framework 2.0+)
Bisher implementierte Optimierungen:
-remove unused code after 'JMP' (Version 1.0)
-replace SYS_StringEqual (Ecx = 0) (Version 1.0)
-remove useless PUSH/POP (Version 1.0)
Installation ist ähnlich wie beim alten Optimierer:
-umbenennen: "\Compilers\Fasm.exe" -> "\Compilers\Fasm2.exe"
-downloaden & in "\Compilers\" Ordner entpacken:
-.Net:
http://www.deeem2031.de/PB.Net/D_Optimizer_Net.zip
-x86:
http://www.deeem2031.de/PB.Net/D_Optimizer_x86.zip
-ausprobieren
Noch'n kl. Bsp:
Code: Alles auswählen
Procedure p()
ProcedureReturn #True
EndProcedure
Dim a(10,10)
#r = 50000000
t1 = ElapsedMilliseconds()
For i = 1 To #r
If a.s
EndIf
p()
a(1,2) + 1
Next
t1 = ElapsedMilliseconds() - t1
MessageRequester("",Str(t1)+" ("+Str(a(1,2))+")")
Ergebnisse bei mir:
ohne Optimierung: 2700 ms
mit Optimierung: 725 ms
Feedback und Bugreports sind natürlich willkommen
(Alter Thread:
http://www.purebasic.fr/german/viewtopi ... optimierer (für PB3.94))
Verfasst: 30.11.2006 00:58
von MVXA
Vielleicht wäre es ja noch recht interessant was du denn da optimierst

. Für
Leute, die gerne mal was in Assembler dazu lernen wollen

Verfasst: 30.11.2006 01:12
von Deeem2031
PB:
Asm:
Code: Alles auswählen
; Procedure a()
macro MP0{
_Procedure0:
PS0=4
; ProcedureReturn #True
MOV eax,1
JMP _EndProcedure1
; EndProcedure
XOR eax,eax
_EndProcedure1:
RET
}
Asm optimiert:
Code: Alles auswählen
; Procedure a()
macro MP0{
_Procedure0:
PS0=4
; ProcedureReturn #True
MOV eax,1
_EndProcedure1:
RET
}
'Ne kleine Beschreibung erhält man übrigens auch, wenn man die Exe direkt ausführt.
Verfasst: 30.11.2006 12:16
von Kiffi
@Deeem2031:
Danke!

Werde ich mir heute abend mal anschauen.
<OT>
@Dostej, Dr. Shrek und Kaeru Gaman,
Ihr habt also auch keine Java-Programme auf Euren Rechnern?
</OT>
Grüße ... Kiffi
Verfasst: 30.11.2006 14:45
von DrShrek
Kiffi hat geschrieben:
<OT>
@Dostej, Dr. Shrek und Kaeru Gaman,
Ihr habt also auch keine Java-Programme auf Euren Rechnern?
</OT>
Grüße ... Kiffi
Das ist keine konstruktive Frage.
Die Antwort ist Nein.
Wenn es so einfach ist wie Deeem2031 sagt...
...kann er doch leicht auch die PB only Variante zur Verfügung stellen.
Er
muss es aber nicht!
Verfasst: 30.11.2006 16:04
von Deeem2031
Ähm, also eigentlich wollt damit manche Leute dazu bringen das .Net Framework zu installieren, anstatt die Fronten zu verhärten
Also wer strickt das .Net Framework nicht haben will (was ich zwar nicht wirklich verstehen kann, nur weil's von M$ kommt muss es ja nicht schlecht sein), der hat halt Pech und kann das Programm nicht nutzen. Vorerst werde ich keine PB4.0 Version rausgeben.
Verfasst: 30.11.2006 16:11
von DarkDragon
Deeem2031 hat geschrieben:PB:
Asm:
Code: Alles auswählen
; Procedure a()
macro MP0{
_Procedure0:
PS0=4
; ProcedureReturn #True
MOV eax,1
JMP _EndProcedure1
; EndProcedure
XOR eax,eax
_EndProcedure1:
RET
}
Asm optimiert:
Code: Alles auswählen
; Procedure a()
macro MP0{
_Procedure0:
PS0=4
; ProcedureReturn #True
MOV eax,1
_EndProcedure1:
RET
}
'Ne kleine Beschreibung erhält man übrigens auch, wenn man die Exe direkt ausführt.
Heißt das etwa, dass
Völlig sinnlos da steht?

Kann ich mir irgendwie nicht vorstellen.
Verfasst: 30.11.2006 16:14
von Deeem2031
In dem Fall ist das aber sinnlos. Nur wenn du das "ProcedureReturn #True" löschst, dann ist es nicht mehr sinnlos.
Das wird also auch nur gelöscht, wenn ein ProcedureReturn in der Proc steht, und dieses in keiner Abfrage o.Ä. steht.
Verfasst: 03.12.2006 19:53
von Deeem2031
So für alle die, die .Net Exe nicht ausprobieren möchten:
Ich hab vorhin mal versucht den Optimierer mit PB4.01 zu kompilieren. Das war auch nicht das Problem. Das Installieren auch nicht. Aber das Ausprobieren. Ich war recht überrascht als ich dachte der Optimierer hat sich aufgehangen, wobei er aber einfach nur so lange gebraucht hat. Ich hab nämlich versucht den PB.Net-Compiler Source zu optimieren. Das funtkoniert mit der .Net-Exe auch wunderbar in paar Sekunden. Aber mit der PB4.01-Exe hat das über 5 mins gedauert, bis er den Code ausgespuckt hat. Nun könnte man natürlich behaupten ich hab das scheiße programmiert - aber warum ist dann die .Net Exe so schnell? Ist ja genau der gleiche Source-Code.
Ich werd zwar noch versuchen den Code ein bischen zu optimieren, aber ich würde euch trotzdem empfehlen die .Net-Exe zu nehmen...
Verfasst: 06.12.2006 18:21
von NicTheQuick
Hab jetzt mal Deeems Optimierer auf dem FirmenPaltop getestet:
Meine Ergebnisse:
Mit Optimierung: 591 ms
Ohne Optimierung: 1462 ms
Ansonsten frisst grad mscorsvw.exe meine CPU auf. Das Programm hat
anscheinend irgendwas mit dem Kompilieren von .NET-Anwendungen zu tun.
Auf jeden Fall hält es jetzt dauernd das System an und erzeugt durchgehend
zwischen 90% und 98% CPU-Auslastung. Scheißdreck sag ich da nur. Die
sollen erstmal ihr .NET aus dem Alpha-Stadium holen.

Der Laptop zieht
grad Strom ohne Ende. Google zu laden hat schon 2 Minuten gedauert.
