Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Fraktal Calculation 1.1
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 11.03.2006, 18:12    Titel: Antworten mit Zitat

Frage am rande:

woher hast du den asm code??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 11.03.2006, 18:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 11.03.2006, 18:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 11.03.2006, 20:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
d.j.peters
Gast





BeitragVerfasst am: 12.03.2006, 01:15    Titel: Antworten mit Zitat

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

BeitragVerfasst am: 13.03.2006, 12:15    Titel: Antworten mit Zitat

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* peinlich Kopf schütteln Kopf schütteln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.03.2006, 18:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 13.03.2006, 20:38    Titel: Antworten mit Zitat

naja.,.. aber das spart ja ned wirklich rechenzeit oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 13.03.2006, 20:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
psygate



Anmeldungsdatum: 05.04.2005
Beiträge: 304
Wohnort: Wien und der Computer

BeitragVerfasst am: 15.03.2006, 11:23    Titel: Antworten mit Zitat

da hast du wieder recht durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz