GLBasic forum

Other languages => GLBasic - de => Topic started by: mull on 2007-Jun-03

Title: Geschwindigkeit ?!
Post by: mull on 2007-Jun-03
Ja, schon wieder ich, teste gerade viel.

Diese Kollisonsabfrage: Das Sprite ist ein 100x80 , 32 bit png

Code (glbasic) Select
SETSCREEN 640, 480, FALSE
SYSTEMPOINTER TRUE
a=1; LOADSPRITE "c:/test.png", a

WHILE MOUSEAXIS(5) = FALSE
    SPRITE a, 300, 200
    SPRITE a, 360, 240
    coll=0
    Colzeit =GETTIMERALL()
   
    WHILE GETTIMERALL()- Colzeit < 1000
      IF SPRCOLL (a, 300, 200, a,  360, 240)
         coll=coll+1
       ENDIF
    WEND
   
    PRINT "Kollisionen\Sek.: " + coll, 0, 450
    SHOWSCREEN
    IF MOUSEAXIS(5) = TRUE THEN Stop=TRUE
WEND
END
Checkt bei mir +- 407.000/Sek. in GlBasic

in BlitzMax:
Code (glbasic) Select
Graphics 600,480,0

a:timage =LoadImage ("c:/test.png")

Repeat
  DrawImage a, 300,200
  DrawImage a, 360, 240
  coll=0
  Colzeit = MilliSecs()
 
  While MilliSecs() - Colzeit < 1000
    If ImagesCollide(a,300,200,0,a, 360, 240,0)
      coll=coll+1
    EndIf
  Wend
 
  DrawText "Kollisionen\Sek.: " + coll, 10,400  
  Flip; Cls
Until MouseHit(3)
Checkt bei mir +- 5.600/Sek. in BlitzMax

Träum ich, oder ist GlBasic bei Kollisonsabfragen wirklich so schnell ?

Lässt man übrigends die Kollisionsabfrage raus, sieht es es andersrum aus.
coll hat dann:
GlBasic          940.000
BlistzBasic 61.000.000

Müsste doch der Gernot was zu wissen!
Title: Geschwindigkeit ?!
Post by: Kitty Hello on 2007-Jun-03
Hmm... Also Kollisionen sind schnell, da steckt viel Arbeit d'rin.
Aber das andere erklärt sich nicht wirklich...
in GLBasic hast Du eine Zeile mehr:
"    IF MOUSEAXIS(5) = TRUE THEN Stop=TRUE"
Aber das sollte's nicht rausreissen.
Entfern' mal die SPRITE/DrawImage-Anweisungen, ob's daran liegt?
Title: Geschwindigkeit ?!
Post by: mull on 2007-Jun-03
Ist doch egal, die Zeit spielt sich in der inneren Schleife ab:

While MilliSecs() - Colzeit < 1000
    If ImagesCollide(a,300,200,0,a, 360, 240,0)
      coll=coll+1
    EndIf
 Wend

b.z.w

While MilliSecs() - Colzeit < 1000
    //If ImagesCollide(a,300,200,0,a, 360, 240,0)
      coll=coll+1
    //EndIf
 Wend
Title: Geschwindigkeit ?!
Post by: Schranz0r on 2007-Jun-03
mull komm doch in den Chat!
Gernot ist auch da!

Startseite auf Chat klicken... ist IRC!
Title: Geschwindigkeit ?!
Post by: mull on 2007-Jun-04
War schon zu spät, danke für die Einladung.
Title: Geschwindigkeit ?!
Post by: Kitty Hello on 2007-Jun-04
Naja da ist halt GETTIMERALL bisserl langsamer, weil er's von int64 in double konvertieren muss. Das macht bei einem echten Spiel aber nichts aus.
Statt coll=coll+1 besser: INC coll, 1