Geschwindigkeit ?!

Previous topic - Next topic

mull

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!
AMD Phenom II x4 955 Proc. 3.2 GHZ,  4GB Ram
Windows 7 64bit Ultima
NVIDIA GeForce GTX 460
Leistungsindex 5,7

Kitty Hello

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?

mull

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
AMD Phenom II x4 955 Proc. 3.2 GHZ,  4GB Ram
Windows 7 64bit Ultima
NVIDIA GeForce GTX 460
Leistungsindex 5,7

Schranz0r

mull komm doch in den Chat!
Gernot ist auch da!

Startseite auf Chat klicken... ist IRC!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

mull

War schon zu spät, danke für die Einladung.
AMD Phenom II x4 955 Proc. 3.2 GHZ,  4GB Ram
Windows 7 64bit Ultima
NVIDIA GeForce GTX 460
Leistungsindex 5,7

Kitty Hello

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