 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 11.03.2006, 18:12 Titel: |
|
|
Frage am rande:
woher hast du den asm code?? |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 11.03.2006, 18:35 Titel: |
|
|
Hi,
ich habe mal nur die Sub mandelbrot so optimiert, wie ich das mit den Laufvariablen meinte.
Die Berechnung von p habe ich eine Schleife höher verschoben, und alle double in single umgeDIMt.
Auf meinem Rechner statt 1,09sek 0,57sek pro Aufruf (fast 50%).
Code: | sub mandelbrot
dim As single p,q,x,y,u,v,z,a,l
dim as integer lps,m,n,i
l=2
for m=1 to xmax step steps
p=(m-div2(xmax))/magnify
for n=1 to ymax\2 step steps
q=-(n-div2(ymax))/magnify
x=0
y=0
for i=1 to its
u=x*x-y*y+p*mandfact
v=2*x*y+q*mandfact
if u*u+v*v>4 then goto ender
x=u
y=v
next i
ender:
pset(m,n),i
pset(m,ymax-n),i
next n
next m
end sub |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 11.03.2006, 18:51 Titel: |
|
|
hm... das mit p ist eine super idee.... nur das mit den single nicht.
Ich habe vor eine zoomfunktion zu implementieren. Nur mit single hüpft man da nicht ganz so weit.
WARNUNG:
Ab version 1.5 gibt es einen colorcycle bug... weiss nicht warum, arbeite aber daran! |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 11.03.2006, 20:04 Titel: |
|
|
Der ASM Code gibt dir Freebasic wenn du mit -r compilierst.
Die Datei heisst gleich wie der Quellcode einfach mit der Endung .ASM.
Edit:/
Wieso ist l Gobal
(Zeile 19)
Code: | dim shared as integer steps=1,num,xmax,ymax,cycle,t,pal(256),col1,col2,l,per,bench |
und ist trotzdem hier noch mal definiert?
(Zeile 105)
Code: | dim as double nx,ny,x,y,xn,yn,dx,dy,n,d,xb,yb,mb,l=2,times |
(Zeile 137)
Code: | dim as double m,n,p,q,i,x,y,u,v,z,a,l,xb,yb,mb,times |
Setze nur sowenig wie Nötig auf Global!
Dann wird auch das Optimieren leichter weil es weniger Abhängigkeiten gibt.
Wenn ich die Verwendung von l im Hauptprogramm betrachte, fällt mir auf das eine UByte Variabel reichen würde.
(Byte würde aber nicht reichen)
Auch "fade" muss nicht Double sein, hier würde BYTE passsen. |
|
Nach oben |
|
 |
d.j.peters Gast
|
Verfasst am: 12.03.2006, 01:15 Titel: |
|
|
psygate hat Folgendes geschrieben: | 'Juliamengenu. Mandelbrot Berechnung by psygate
'Copright 2006
'Das Verändern ist ohne Zustimmung des Inhabers, psygate, strengstens verboten!
'Das verwenden von Teilen des Source's oder das verwenden des ganzen Programms ist auch verboten! |
Das halte ich für einen üblen Schertz "verwenden von Teilen..." das geistige Eigentum anderer sich einzuvernehmen zu wollen.
Tip:
Single reicht nicht aus für vernünftige Zoomwerte es muss schon Double sein und x\2 ersetzt FreeBASIC selbst schon mit shl 1.
Ein "genaues" schnelleres Mandelbrot (auf allen >386 CPU's als dieses hier geht meiner Meinung nach nicht.
http://www.freebasic.net/forum/viewtopic.php?t=586
Test's mit SSE, MMX stehen noch aus.
Sei nicht sauer aber Julia / Mandelbrotmänge ist nicht dein geistiges Eigentum.
Grüsse Joshy |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 13.03.2006, 12:15 Titel: |
|
|
nein mein lieber, aber dieses programm. Die berechnung der eientlichen menge kann ich niemandem verbieten, aber ich halte es für einen schlchten scherz, dass du nichts beiträgst, aber den großn macker arushängen lässt. Vielleicht hast du es noch nicht bemerkt, aber es ist MEIN Projekt, und ich wollte KONSTRUKTIVE HILFE und nicht leute wie dich, die mir sinnloserweise etwas beibringen wollen, was so wie so klar ist. Ich halte es für einen noch größeren scherz, dass du hier nur deinen code posten willst, aber nicht darauf eingehst, dass ich am anfang geschribene hab, das ich meinen code optimieren will.
Sie mir nicht böse, aber wer mir so blöd kommt, und dann auch noch seinen eigenen code in ein anderes Projekt reindrängen will... *tztztztz*  |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 13.03.2006, 18:08 Titel: |
|
|
Also ich seh das Sportlich.
Alle hier lernen Tricks wie man Rechenzeit spart und psygate bekommt ein Optimiertes Programm.
Back to Topic:
Ist das der Aktuelle Code?
http://freebasic.de/fbnp/?view=262
Zeile 19: Hier sind viele Variabeln Deklariert, die nicht gebrauchte werden.
So sieht die Zeile schon viel besser aus:
Code: | dim as double tist, Fade |
Zeile 137:
Ähnlich.
Code: | dim as double m,n,p,q,i,x,y,u,v |
Zeile 104:
Auch wieder ähnlich. |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 13.03.2006, 20:38 Titel: |
|
|
naja.,.. aber das spart ja ned wirklich rechenzeit oder? |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 13.03.2006, 20:52 Titel: |
|
|
Aber Speicher!
Zudem ist etwas Inkosequent ein Programm zu optimieren und dann unnötige Variabeln zu deklarien.
Zudem:
Je mehr Variabeln, desto schwere zum lesen und damit zu optimieren. |
|
Nach oben |
|
 |
psygate
Anmeldungsdatum: 05.04.2005 Beiträge: 304 Wohnort: Wien und der Computer
|
Verfasst am: 15.03.2006, 11:23 Titel: |
|
|
da hast du wieder recht  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|