Speedoptimierungsthread

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Bms

Betreff: Speedoptimierungsthread

BeitragDi, Nov 02, 2004 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute.

ich mach hier nen Speedoptimierungsthread auf, weil es doch
bestimmt jeden mal auf den keks gehen wird:

das prog läuft viel zu laaaaaangsam.

schreibt hier eure tipps und tricks rein, um sein programm schneller zu machen.

danke für alle beiträge.

Paul

BeitragDi, Nov 02, 2004 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
sachen wie

for I=1 to 1000
print "."
Next

vermeiden

Kein Plot, sondern Writepixelfast
Kein Text sondern Bitmapfont

Paul
Stratocaster black - Roland MicroCube
User posted image
Girgl-World, wer's nich kennt, is' blöd!

Hubsi

BeitragDi, Nov 02, 2004 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich grundsätzlich mache ist Werte, soweit benötigt und mehr als einmal pro Durchlauf abgefragt, zwischenspeichern:Code: [AUSKLAPPEN]
mx=Mousex()
my=MouseY()
mh=MouseHit(1)
msecs=MilliSecs()
; KeyDown() sowie KeyHit() wenn mehr als einmal abgefragt
Das an den Anfabg der Hauptschleife und nebenbei ist auch ein wenig Tipparbeit gespart Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

hot-bit

Gast

BeitragDi, Nov 02, 2004 21:00
Antworten mit Zitat
HI....

Paragraph 1.)
OPTIMIEREN...

Paragraph 2.)
testen

Und wieder von vorne ...


Toni
  • Zuletzt bearbeitet von hot-bit am Di, Nov 02, 2004 21:02, insgesamt einmal bearbeitet
 

Kekskiller

BeitragDi, Nov 02, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Tip: In der Onlinehilfe in die 2D-Tutorials einbiegen und auf Speedoptimierung klicken Wink .

Freeman

BeitragDi, Nov 02, 2004 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
flip 0 benutzen
nich alles tausendmal neu machen und abfragen. Bilder am Anfang laden

nich wirklich produktiv ich weis.

FrEeMaN

wunderkind

BeitragDi, Nov 02, 2004 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Berechnungen aus dem Inneren von Schleifen so weit wie möglich heraushalten. Also besser...
Code: [AUSKLAPPEN]
max = (value_1 + value_2) * 1024

For i = 0 To max
   ..
   ..
Next


...als...
Code: [AUSKLAPPEN]
For i = 0 To (value_1 + value_2) * 1024
   ..
   ..
Next


Noch deutlicher sichtbar wird der Zeitverlust, wenn man Funktionen ins Spiel bringt und in den Funktionen zeitaufwendige Aktionen stattfinden, die sich aber beim Durchlauf der Schleife nicht ändern und schon vorher hätte berechnet werden können.
Code: [AUSKLAPPEN]
For i = 0 To get_max()
   ..
   ..
Next


Die Probleme steigern sich, je tiefer Rechenoperationen in Schleifen geschachtelt sind und damit für jeden Durchgang einer äußeren Schleife umsonst aufgerufen werden.

D2006

Administrator

BeitragDi, Nov 02, 2004 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Wozu Flip 0 ???

Das macht ein Spiel nur schneller, wenn es sowieso 100 FPS (oder 75 je nach dem) hat. Wenn es arschlangsam ist, bringt Flip 0 nix.
Abgesehen davon verschlechtert sich (wenn auch für mich selten zu sehen) die Grafikqualität.

Also immer schön Flip. Ohne 0.

MfG

TheShadow

Moderator

BeitragDi, Nov 02, 2004 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir wäre flip 0 unspielbar... nicht benutzen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

Dreamora

BeitragDi, Nov 02, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
flip 0 bringt bei aktuellen Treibersettings nix.

Was man machen kann ist eine eigene "FPS basierende" renderroutine machen, so dass man selbst sagt wie häufig flip aufgerufen wird, unabhängig davon wieviel mal die Gamelogik wirklich durchläuft.

Weil mit Flip 1 wird die Gamelogik nur unnötig ausgebremst ... ich vermeide es insofern wann immer möglich ( hab VSYNC ohnehin im Treiber deaktiviert )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragDi, Nov 02, 2004 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
wie gesagt: mach flip 0 und ich kann es nicht mehr spielen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Gina

BeitragDi, Nov 02, 2004 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
flip 0 bringt bei aktuellen Treibersettings nix.


Wie meinst du das?

Ich hab ja auch VSync in den Graka-Options deaktiviert, da ich ja einen TFT habe, aber das interessiert BB und jedes Spiel doch nicht. Der Unterschied ist bei mir mehr als deutlich und ich denke, bei jedem anderen auch. Und die Sache mit den zerrissenen Bildern bei Flip 0 hab ich auch schonmal deutlich sehen können.

Meiner Meinung nach, sollte mal dem Spieler die Möglichkeit geben, VSync an- und ausschalten zu können und bei sehr schnellen Spielen sollte man eine Frame-Bremse einbauen, weil das Spiel sonst unspielbar ruckelt...

Ansonsten heißt Speedoptimierung für mich:
Den Code optimieren. Man sollte als Programmierer ein gewisses Verständnis dafür haben, wie die einzelnen Befehle nach der Compilierung tatsächlich verarbeitet werden, um den Code entsprechend zu gestalten. Und wenn man es nicht weiß, sollte man sich nicht scheuen, die Geschwindigkeit bei verschiedenen Befehlen und Kombinationen einfach zu testen...

Gina.
www.jk-spiele.de
 

Dreamora

BeitragMi, Nov 03, 2004 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Gina: wenn du VSYNC deaktivierst und zwar fix und keine "ausgeschaltet, anwendung kann entscheiden", dann hat du bei Flip und Flip 0 das gleiche resultat.

wie erwähnt, ich nutze immer Flip 0, beschränke aber die anzahl flips pro sekunde durch den Programmcode.
Ich sehe nicht ein, warum ich pro loop xyms warten sollte auf den sync wenn ich die game logik weiter laufen kann und einfach alle 16ms flip 0 aufrufe ...

dadurch entsteht auch das berüchtigte TFT Flip problem net, welches dann die FPS auf 30 halbiert und dergleichen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheShadow

Moderator

BeitragMi, Nov 03, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
es wird nicht alle 16ms gewartet...

wenn du 10ms brauchst, um eine Grafik aufzubauen, dann wird nur restliche 6 sek. gewartet....
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Gina

BeitragMi, Nov 03, 2004 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Gina: wenn du VSYNC deaktivierst und zwar fix und keine "ausgeschaltet, anwendung kann entscheiden", dann hat du bei Flip und Flip 0 das gleiche resultat.


Hmm, hab eigentlich fix ausgeschaltet ohne Wahl der Anwendung. Dann muss ich das nochmal kontrollieren, warum das bei mir anders war. Danke für die Erklärung. Vielleicht liegt es ja auch an meinem Treiber.

Das mit den Millisecs() in Kombination mit Flip 0 werd ich auch mal testen. Klingt gut.

Liebe Grüße, Gina.
www.jk-spiele.de

regaa

BeitragDo, Nov 04, 2004 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Prozessor nicht unnötig belasten, wirklich nur das rechnen lassen was berechnet werden muss, zur Zeit, und nichts anderes.

BB-technisch, würd ich sagen, statt primitive rect , text oder oval Befehle drawimage, drawblock zu benutzen, halt vorher die Dinger in nen image laden. Und keine Programmanhaltenden Befehle in Realtime verwenden. Und keine Befehle benutzen die nichts taugen in realtime: text, plot,line .

Und soviel wie möglich vorberechnen.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net

Bms

BeitragDo, Nov 04, 2004 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann man das noch vereinfachen?

Code: [AUSKLAPPEN]

 [...]
  For sp=br To 0 Step -1
   For ze=ho To 0 Step -1
    If lev(sp,ze)=1 Then DrawImage cube,x+sp*20-ze*20,y-sp*10-ze*25
   Next
  Next
 [...]

Suco-X

Betreff: .........

BeitragDo, Nov 04, 2004 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm..Ich habe eigentlich immer mit Flip 0 und der Zeit gearbeitet.
Ging hier ohne Probleme. Um sicher zu gehen habe ich mal ein kleines Testgame gemacht. Wäre nett wenn ihr es testet und bescheid sagt wenn euch was negatives auffällt. Klappt es bei dem ein oder anderen nicht, müsste ich flott umdenken.
www.sucox.art-fx.org/MillisecsTestgame.zip
Bewegung mit Pfeiltasten, Schießen mit Space.
Zwischen Flip 1 und 0 kann mit Enter gewechselt werden.
EDIT
Huh, da hat sich noch ne Zeile Code versteckt die da nicht reingehört.
Dieser Version Testen.
www.sucox.art-fx.org/MillisecsTestgame2.zip
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Hubsi

BeitragDo, Nov 04, 2004 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hätt ich nicht gedacht das das so ein Unterschied ist (im positiven Sinne). Ich habe bisher auch immer mit einfachem Flip und Framebegrenzung gearbeitet, aber das Testproggi von Suco hat mich reformiert. Läuft superflüssig Wink Probs gabs keine, Bewegungen sind immer gleich schnell, ob mit 260 oder 35 Frames Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Gina

BeitragDo, Nov 04, 2004 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, hab dein Testgame auch getestet.

Mit Flip 0 260 frames und mit flip 1 60. Alles super, keine Grafikaussetzer oder so.
Hast du es so wie Dreamora gemacht? Wieviel ms hast du zugrunde gelegt?

Gina.
www.jk-spiele.de

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group