Seite 1 von 5

Compiler-Optimierungen

Verfasst: 31.12.2004 17:16
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

Verfasst: 31.12.2004 17:43
von 125
-gelöscht-

Verfasst: 31.12.2004 18:00
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

Verfasst: 31.12.2004 18:23
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:

Verfasst: 31.12.2004 18:34
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

Verfasst: 31.12.2004 22:31
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 :)

Verfasst: 01.01.2005 16:17
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.

Verfasst: 02.01.2005 15:06
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...

Verfasst: 02.01.2005 15:32
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.

Verfasst: 02.01.2005 15:38
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