wenn ich endlich meine Port80-Karte habe, krieg ich den PC meiner Schwester eventuell wieder hin. (BIOS scheint tod zu sein) Der hat nur 300 Mhz, und den mache ich dann sowieso ganz platt, und installiere Firefox drauf. dann schau ich mal, obich da die von dir genannten Symptome auch feststellen kann...
cya
Pascal
Compiler-Optimierungen
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- Wohnort: Luxemburg
- Kontaktdaten:
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Hi, ich bins wieder
Hab den Tipp von Stefan auch noch hinzugefügt.
http://mypage.bluewin.ch/remimeier/webs ... mierer.zip
Hab ne Procedure hinzugefügt, die es mir extrem vereinfacht weitere Optimierungen hinzuzufügen, leider hab ich grad keine Zeit. Deshalb hab ichs jetzt mal online gestellt.
Der aktuelle Test:
Resultate:
Ohne Optimierer
PB: 8015ms
ASM: 2875ms
Mit Optimierer:
PB: 2938
ASM: 2890
greetz
remi
PS: bald kommen noch mehr
Hab den Tipp von Stefan auch noch hinzugefügt.
http://mypage.bluewin.ch/remimeier/webs ... mierer.zip
Hab ne Procedure hinzugefügt, die es mir extrem vereinfacht weitere Optimierungen hinzuzufügen, leider hab ich grad keine Zeit. Deshalb hab ichs jetzt mal online gestellt.
Der aktuelle Test:
Code: Alles auswählen
Code siehe unten (Resultate mit altem Code)
Ohne Optimierer
PB: 8015ms
ASM: 2875ms
Mit Optimierer:
PB: 2938
ASM: 2890
greetz
remi
PS: bald kommen noch mehr
Zuletzt geändert von remi_meier am 16.02.2005 23:12, insgesamt 1-mal geändert.
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- Wohnort: Luxemburg
- Kontaktdaten:
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Nochmals n Update auf Arrays und ein unnötiges auf Floats (komisch, Floats scheinen besser optimiert zu sein).
Resultate:
ohne Opt.: 5078ms gegen 2453ms
mit : 2484ms gegen 2532
Komisch, hab irgendwie grad keine Ideen für Optimierungen mehr
Code: Alles auswählen
Dim Array(5,5)
a = 5
b = 6
c = 7
d = 3
e = 1
#N = 49999999
Delay(1000)
time1 = ElapsedMilliseconds()
For z = 1 To #N
;{ Integer
a = a
b - 1
c - a / d
c = a % 2
c = c % 2
a = b * 3
a * 3
zahl = i2/e
Array(4,5) = 11
;}
Next
time1 = ElapsedMilliseconds() - time1
time2 = ElapsedMilliseconds()
For z = 1 To #N
;{ Integer
!DEC [v_b]
!MOV Ebx,dword [v_c]
!MOV Eax,dword [v_a]
!MOV Edi,dword [v_d]
!CDQ
!IDIV Edi
!SUB Ebx,Eax
!MOV dword [v_c],Ebx
!MOV Eax,dword [v_a]
!AND Eax,1
!MOV dword [v_c],Eax
!AND dword[v_c], 1
!MOV Eax,[v_b]
!LEA Eax,[Eax*2+Eax]
!MOV [v_a],Eax
!MOV Eax,[v_a]
!LEA Eax,[Eax*2+Eax]
!MOV [v_a],Eax
!MOV Ebx, dword [v_e]
!MOV Eax, dword [v_i2]
!CDQ
!IDIV Ebx
!MOV dword [v_zahl],Ebx
!MOV Eax,[a_Array+4]
!SAL Eax,2
!MOV Ebp,Eax
!ADD Ebp,5
!SAL Ebp,2
!ADD Ebp,dword [a_Array]
!MOV dword [Ebp],11
;}
Next
time2 = ElapsedMilliseconds() - time2
MessageRequester("", Str(time1)+" "+Str(time2))
ohne Opt.: 5078ms gegen 2453ms
mit : 2484ms gegen 2532
Komisch, hab irgendwie grad keine Ideen für Optimierungen mehr
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- Wohnort: Luxemburg
- Kontaktdaten:
- remi_meier
- Beiträge: 1078
- Registriert: 29.08.2004 20:11
- Wohnort: Schweiz
Ok, ich bins wieder.
Dank Rings hab ich jetzt das jaPBe Plugin - Zeugs mit all seinen Beschänkungen über Bord geworfen und einen FAsm Wrapper gemacht.
Das ganze gibts wie immer auf
http://mypage.bluewin.ch/remimeier/webs ... mierer.zip
Es sind keine weiteren Optimierungen hinzugekommen.
Anleitung:
1. Zip downloaden und entpacken
2. FAsm2.exe, FAsm.exe und Optimizer.ini in den Ordner PB\Compilers 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.
greetz
remi
[EDIT]
Lol, hab dich glatt verpasst . Ich bin eigentlich nicht wirklich gut im Optimieren (es gibt noch so viele kleine Tricks wie der von Stefan), aber ich tu was ich kann.
Dank Rings hab ich jetzt das jaPBe Plugin - Zeugs mit all seinen Beschänkungen über Bord geworfen und einen FAsm Wrapper gemacht.
Das ganze gibts wie immer auf
http://mypage.bluewin.ch/remimeier/webs ... mierer.zip
Es sind keine weiteren Optimierungen hinzugekommen.
Anleitung:
1. Zip downloaden und entpacken
2. FAsm2.exe, FAsm.exe und Optimizer.ini in den Ordner PB\Compilers 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.
greetz
remi
[EDIT]
Lol, hab dich glatt verpasst . Ich bin eigentlich nicht wirklich gut im Optimieren (es gibt noch so viele kleine Tricks wie der von Stefan), aber ich tu was ich kann.
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
- Wohnort: Luxemburg
- Kontaktdaten:
Egal, ob du dich als Optimierer siehst, oder nicht, programmieren kannst du auf jeden Fall besser als ich. (Ich weiss nicht mal, was die verschiedenen ASM-Befehle bewirken. Ich hab ASM mal versucht, aber es war mir zu nervtötend. schlimmer noch als C(++))
cya
PAscal
cya
PAscal
„Warum siehst du den Splitter im Auge deines Bruders, aber den dicken fetten schwarzen Zensurbalken vor deinem Auge bemerkst du nicht?“