Compiler-Optimierungen

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Compiler-Optimierungen

Beitrag von remi_meier »

Tach alle zusammen!
http://robsite.de/php/pureboard-archiv/ ... a17bb2c7f0
Wollte das nur nochmals zeigen und meinen Beitrag dazu leisten:
Ich habe einige der Punkte nochmals getesten und feststellen müssen, dass da so ziemlich nichts implementiert wurde ("Nice one. I will implement them soon .")
Ich habe hier selbst einige aufgeführt, die ich noch gefunden habe:

Code: Alles auswählen

1) PB erkennt zwar x * 1, aber nicht x = x * 1:
x = x * 1 
wird zu:
MOV    ebx,dword [v_x]
MOV    dword [v_x],ebx

2) etwa gleich wie 1)
; x = x
  PUSH   dword [v_x]
  POP    dword [v_x]

3) x + 1 wird zu INC v_x, aber x - 1 nicht zu DEC v_x:
; x + 1
  INC    dword [v_x]
; x - 1
  MOV    ebx,dword [v_x]
  ADD    ebx,-1
  MOV    dword [v_x],ebx
Ich denke nicht, dass das schneller sein soll...

4) x - y / z
PB:
  MOV    ebx,dword [v_x]
  MOV    edi,dword [v_y]
  PUSH   dword [v_z]
  MOV    eax,edi
  POP    edi
  CDQ
  IDIV   edi
  MOV    edi, eax
  SUB    ebx,edi
  MOV    dword [v_x],ebx
Vorschlag:
  MOV    ebx,dword [v_x]
  MOV    eax,dword [v_y]
  MOV    edi,dword [v_z]
  CDQ
  IDIV   edi
  SUB    ebx,eax
  MOV    dword [v_x],ebx
Vor allem das DEC will ich haben ! :twisted:

greetz
remi
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

-gelöscht-
Zuletzt geändert von 125 am 01.01.2005 16:31, insgesamt 1-mal geändert.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

LOL
Ich bin leider nicht fähig einen Compiler zu bauen, muss noch abwarten, bis ich alt genug bin um das zu studieren :wink:
War nur etwas motiviert durch diesen Speedtest zwischen BlitzMax und PB:
http://purebasic.myforums.net/viewtopic ... 9&start=15
Naja und n paar Sachen sind wohl auch nicht allzu schwer zu implementieren (DEC, x = x).
Und das "I will implement them soon" zeigt ja auch, dass es nicht allzu schwer wäre /:->

greetz
remi
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

fsw hat geschrieben:Good luck Fred (PB), good luck Mark (BM), good luck Paul (IB).
You guys need every bit of luck you can get...
Geil! :lol: :lol:
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46
Wohnort: Luxemburg
Kontaktdaten:

Beitrag von hardfalcon »

Tsss, Danilo, bist du aber ein schlimmer! :mrgreen: :freak: (Und fsw erst... /:-> )
Schnuppe, hast ja Recht! Und jetzt macht bitte keinen Flamewar draus, das hatten wir schon zu oft! Helft mir lieber mit meinen neuen Router (ich habe endlich ne DSL-Flatrate! 1MBit/s.
YEEEEHAAAAAAAAA!)
Den Post dazu schreibe ich jetzt gleich...

cya
Pascal
„Warum siehst du den Splitter im Auge deines Bruders, aber den dicken fetten schwarzen Zensurbalken vor deinem Auge bemerkst du nicht?“
Benutzeravatar
fsw
Beiträge: 74
Registriert: 12.09.2004 03:31
Wohnort: North by Northwest

Beitrag von fsw »

hardfalcon hat geschrieben: Tsss, Danilo, bist du aber ein schlimmer! :mrgreen: :freak: (Und fsw erst... /:-> )
:allright:

Mal im ernst, was kann ein pb user dafuer wenn es alternativen gibt :?:
Es ist doch nicht verboten mehrere programmiersprachen zu benutzten...

Ausserdem hatte ich Fred schon vor jahren empfohlen den pb-kern mehr aufmerksamkeit zu schenken und zumindest die sachen einzubauen die freie basic's wie xb/xblite, bcx etc. bereits hatten.
Aber nix is... :cry:

Take care

BTW: Hoffe wirklich (for Fred's sake...) version 4 ist DER HAMMER :)
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

@125: dass ist nun wirklich mal konstruktive kritik, wenn der stein des anstoßes sogar in form von assembly listings erklärt wird.
also wirklich kein grund verärgert zu reagieren.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Vielleicht etwas schwerer zu machen:

Code: Alles auswählen

; x = 3 * (a * 4 + a * 5)
  MOV    ebx,dword [v_a]
  SAL    ebx,2
  MOV    edi,dword [v_a]
  IMUL   edi,5
  ADD    ebx,edi
  IMUL   ebx,3
  MOV    dword [v_x],ebx
1. erkennen, dass 2 mal die gleiche Variable benutzt wird und
2. ev. erkennen, dass man a ausklammern kann...
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

remi_meier hat geschrieben:Vielleicht etwas schwerer zu machen:

Code: Alles auswählen

; x = 3 * (a * 4 + a * 5)
  MOV    ebx,dword [v_a]
  SAL    ebx,2
  MOV    edi,dword [v_a]
  IMUL   edi,5
  ADD    ebx,edi
  IMUL   ebx,3
  MOV    dword [v_x],ebx
1. erkennen, dass 2 mal die gleiche Variable benutzt wird und
2. ev. erkennen, dass man a ausklammern kann...
Zu 2.:
Na ich weiß net, ein klein wenig sollte man dann schon noch dem Verstand des Programmierers überlassen - oder willst du wirklich einen auf mehrere MB aufgeblähten Compiler haben der eine Stunde zum Compilen von "Hello World" braucht? Ich meine, wo willst du mit solchen Optimierungen den Schlussstrich ziehen? Schleife schlecht programmiert -> macht der Compiler halt eine bessere draus. Sortieralgorithmus ist nicht optimal -> Compiler erkennt das und ersetzt sie durch bessere usw.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Ne schon gut, deshalb auch das "ev.". Ich bringe hier einfach ein paar Vorschläge. Ich wage hier nicht einmal zu hoffen, dass diese dann wirklich eingebaut werden :wink:
greetz
remi
Antworten