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:

Warp 9.97, beschleunigen!

 
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: 06.10.2005, 18:48    Titel: Warp 9.97, beschleunigen! Antworten mit Zitat

Also, ich ahb da fragen:

Kann mir einer von euch tipps geben, wie ich meine programme EFFEKTIV beschleunige? und, ich möchte dabei gerne den schwerpunkt auf die GRAFIK lenken, wie man die am besten beschleunigen könnte!

RHX schon im vorraus durchgeknallt durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 06.10.2005, 19:37    Titel: Antworten mit Zitat

Öhm, OpenGL zB benutzen? Das lagert den Grafikteil auf die GPU aus und deine CPU bleibt frei, zudem rechnet die GPU sowas schneller als die CPU weil die dafür optimiert ist.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 06.10.2005, 22:07    Titel: Antworten mit Zitat

Servus!

Statt "Line" und "Circle" und was-weiß-ich-nicht mit direktem Speierzugriff arbeiten?

Gruß
Lutz böse Ifer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 06.10.2005, 22:14    Titel: Antworten mit Zitat

Das solltest du dann schon in Assembler erledigen, da die Berechnungen (speziell beim Kreis)
auch noch einmal Rechenzeit brauchen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 06.10.2005, 23:58    Titel: Antworten mit Zitat

Da du gerade von assembler redest:

Ist eine rechenaufgabe wie 124124+8716239 schneller im assembler als in Freebasic?? Zählt das auch für InlneAssembling??


Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
d.j.peters
Gast





BeitragVerfasst am: 07.10.2005, 06:03    Titel: Antworten mit Zitat

programmierer hat Folgendes geschrieben:
...Ist eine rechenaufgabe wie 124124+8716239 schneller im assembler als in Freebasic??

Das kann kein Unterschied sein weil es nicht zur Laufzeit berechnet sondern beim Kompelieren addiert FreeBASIC beide Konstanten und speicheret direkt das Ergebnis 8840363.
Code:
a=124124+8716239

Erzeugt
Code:
mov dword ptr [_A], 8840363


programmierer hat Folgendes geschrieben:
Zählt das auch für InlneAssembling??

Ob Du einen seperaten oder den internen Assembler benutzt macht keinen Geschwindigkeitsunterschied. Es ist aber einfacher den Inlineassembler zu benutzen z.B. beim Zugriff auf Variablen.

In BASIC
Code:
option explicit
dim as integer a,b,c
a=124124
b=8716239
c=a+b
print c
sleep

das erzeugt FreeBASIC
Code:
mov dword ptr [_A], 124124
mov dword ptr [_B], 8716239
mov eax, dword ptr [_B]
add eax, dword ptr [_A]
mov dword ptr [_C], eax

und das lohnt sich nicht zu optimieren in Assembler.

Wenn Du aber viele Grafik Sachen machst und auch Arrays in Schleifen benutzt
dann kommt man "oft" auf bis zu 10 facher Ausführungsgeschwindigkeit mit Assembler.

Um dieses zu demonstrieren habe ich auch hier im Forum das echtzeit Mandelbrot "Apfelmänchen" in Inlineassembler gepostet.

Auf [url=http://fb.exp-soft.de/FBtuts.php?zeig=tuts&view=Inline)Assembling-1.~Was~ist~Inline)Assembling(.txt]FreeBASIC.de[/url] befindet sich ein sehr gutes Einsteiger-Tutorial für den Inlineassembler.
Wenn Du den Einstieg gemeistert hast dann lohnt es sich die Grafiksachen zu optimieren.

Ich schreibe z.Z. die Physicengine von FreeSpeedRacer und in Inlineassembler habe ich
bis zu 50 facher Rechenleistung (weil viele Vectoren in Arrays inerhalb von Schleifen).

Grüsse Joshy
Nach oben
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 07.10.2005, 09:28    Titel: Re: Warp 9.97, beschleunigen! Antworten mit Zitat

psygate hat Folgendes geschrieben:
Kann mir einer von euch tipps geben, wie ich meine programme EFFEKTIV beschleunige?

Indem du geziehlt nach Flaschenhälsen suchst und dort gezielt optimierst. Am wichtigsten: geeignete Algorithmen wählen! Ein Algorithmus, der der O(n²) braucht wird trotz ausgefeiltester Assambler-Implementierung niemals schneller werden, als ein Algorithmus, der das selbe in O(n) schafft (es sei denn du weist die genaue Anzahl und bist sicher (=> hast getestet), dass die Zeitkonstante des O(n²)-Algorithmus derart kürzer ist, dass er schneller arbeitet).

Anderes Beispiel für Optimierungen: Musst du Strings extrem oft kopieren, dann wäre COW (Copy-On-Write) sicherlich die beste Wahl. Willst du hingegen Strings oft aneinanderhängen, dann solltest du ein gutes Speichermanagement haben, dass den Puffer von vorne herein etwas großzügiger gestaltet.


Mit Microoptimierungen fängst du dann erst an, wenn du dir ziemlich sicher bist, dass du mit anderen Algorithmen und/oder Datenstrukturen nichts mehr herausholen kannst.
_________________
Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



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

BeitragVerfasst am: 07.10.2005, 23:05    Titel: Antworten mit Zitat

@Helium: Nix verstehen... Du können in deutsch nochmal sagen?

@andere: Wie nutze ich die opengl?? Sind das spezielle befehle?!

und, was ist schnelle:

Code:
pset(sin(x)*6,sin(x)*6),1

oder
Code:
x=sin(x)*6
pset(x,x),1
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 07.10.2005, 23:26    Titel: Antworten mit Zitat

Helium meinte, du sollst deine Routinen erst mal verbessern, das bringt mehr als auf assembler umzusteigen

Ja, OpenGL hat eigene Befehle

Beide Varianten sind gleich schnell, dafür gibts ja compiler.. der rechnet das aus bevor ers in die exe schreibt weils konstante werte sind (sollte er zumindest)
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
psygate



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

BeitragVerfasst am: 08.10.2005, 00:01    Titel: Antworten mit Zitat

könnte mir jemand das mit der opengl näher erklären.......bitte?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.10.2005, 00:04    Titel: Antworten mit Zitat

ich lerne grade.. wollt eventuell ein tutorial schreiben, allerdings für 3D-Grafik..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
d.j.peters
Gast





BeitragVerfasst am: 08.10.2005, 00:04    Titel: Antworten mit Zitat

Hallo psygate,
schau dir doch mal die OpenGl Beispiele in Deinem FreeBASIC Beispielverzeichnis an.

Grüsse Joshy
Nach oben
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.10.2005, 01:52    Titel: Antworten mit Zitat

die sind auch für 3d..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
marzec



Anmeldungsdatum: 13.10.2004
Beiträge: 267

BeitragVerfasst am: 08.10.2005, 02:18    Titel: Antworten mit Zitat

falsch verwendet bringt auch opengl nüsse. halt dich an das was helium gesagt hat ( geeignete datenstrukturen verwenden, bessere algorithmen ). alles was du wissen mußt ist welche algorithmus du für ein bestimmtes problem verwendest ( kollision, visibility, sortieren etc. etc. ) und dann einfach mal google bemühen um etwaige equivalente weniger aufwändige algorithmen zu finden.
_________________
Yagl - yet another gameprogramming library
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
psygate



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

BeitragVerfasst am: 08.10.2005, 12:24    Titel: Antworten mit Zitat

ok... wahrscheinlich habt ihr mich falsch verstanden, aber ich möchte, bei einer auflösung von 1280*1024 eine höhere pps rate als 10 pro sekunde haben. eine sehr viel höhere! ich möchte einfach, meine Grafiken in 2D beschleunigen... durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 08.10.2005, 14:14    Titel: Antworten mit Zitat

ja. Und du zeichnest die irgendwo. Und die Routine, bei der du die Zeichenkommandos sendest sollst du eher optimieren als auf Assembler oder OpenGL umzusteigen, das bringt mehr. Wir ham dich schon richtig verstanden.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
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
Seite 1 von 1

 
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