Kleiner Benchmark

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Travis

Betreff: Kleiner Benchmark

BeitragSa, Sep 17, 2005 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier habe ich ein Programm, dass ein kleines Partikelfeuer erzeugt. Das Programm läuft bei mir mit ca. 95-105 FPS.

AMD Sempron @ 2,3 Ghz, 512 MB RAM @ 400 Mhz
Gf 6200, 256 MB @ standart frequency

Wie sieht's bei euch aus?

----> HTTP://www.funforge.org/Public/Blitz/Particle.rar <---- (376 KB)
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.
 

IonPainter

BeitragSa, Sep 17, 2005 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
~200 Fps
 

D²O

BeitragSa, Sep 17, 2005 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
100-120fps

warum wird Memory immer grösser ?
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

simi

BeitragSa, Sep 17, 2005 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
bei 200-250 Partikeln ca. 22 FPS... :\
 

Nemesis

BeitragSa, Sep 17, 2005 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
kann das jetzt hier nicht testen, aber an alle die das testen: es wäre wohl sinnvoll eure system specs dazuzuschreiben Smile
 

gamble

BeitragSa, Sep 17, 2005 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einigem Kram im Hintergrund am laufen 150fps
 

Daniel Knobe

BeitragSo, Sep 18, 2005 0:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir wird das Bild ienfach nur schwarz -_- lol

Travis

BeitragSo, Sep 18, 2005 1:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nemesis hat Folgendes geschrieben:
kann das jetzt hier nicht testen, aber an alle die das testen: es wäre wohl sinnvoll eure system specs dazuzuschreiben Smile


Zumindest die verwendete Grafikkarte und die Prozessorgeschwindigkeit wären schon interessant. Wink

Wenn ich das Programm länger laufen lasse, dann pendelt es sich irgendwann bei 85 FPs mit 300 Partikeln ein. Das ist noch nicht so der Brüller, aber immerhin wird auch der ganze Bildbereich großzügig "bemalt". Wenn ich die Partikel kleiner mache, dann läuft es bei gleicher Anzahl deutlich schneller. Wink Ich arbeite noch weiter an der Optimierung, auch was den Speicherbedarf angeht.
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Justus

BeitragSo, Sep 18, 2005 8:44
Antworten mit Zitat
Benutzer-Profile anzeigen
AMD Athlon XP 3000+ und ATI Radeon 9600 SE.

35 FPS bei 300 Partikeln

Memory steigt andauerd...

Jolinah

BeitragSo, Sep 18, 2005 9:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibts da irgend ne Grenze gegen oben? Also die Partikel sind langsam angestiegen auf ca. 300, Speicher nimmt dauernd zu aber die FPS waren nach ner Weile immer konstant 200 und schwankten kein bisschen.

AMD Athlon 64 3200+
nVidia GeForce 6800 Ultra
1.5 Gb Ram

PS: Weil ohne VSync bin ich mit BMax ohne etwas zu Zeichnen auf 13'800 FPS gekommen. Kann mir kaum vorstellen dass diese paar Partikel das ganze auf 200 drücken.

Suco-X

Betreff: .......

BeitragSo, Sep 18, 2005 10:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, entweder er entfernt die Partikel nicht mehr oder er hat Flushmem in der Hauptschleife vergessen. Für nen Benchmark sollte man sich doch einigermassen mit der Materie auskennen, da sonst ein verfälschter Eindruck entsteht.
Und wie wärs mit Code, so ne Riesendemo ist es ja auch wieder nicht.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Jolinah

BeitragSo, Sep 18, 2005 10:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab kurz was eigenes geschrieben und musste feststellen dass es schon sehr schnell die FPS beeinträchtigt. Hatte bei 300 Partikeln auch "nur" noch 1'400 FPS, aber ist doch schon besser als 200 FPS Very Happy

Travis

BeitragSo, Sep 18, 2005 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist tatsächlich auf 200 FPS begrenzt. Hätte mir nicht träumen lassen, dass man die tatsächlich erreichen könnte.

Ich zeige euch mal den Code. Aber wie gesagt ist das noch eine erste Version, die man noch optimieren müsste. Was den Speicher angeht, so habe ich das Flushmem() nicht vergessen. Wäre dies der Fall würde der Speicherbedarf um ein Vielfaches schneller ansteigen!

Diese Version ist übrigens schon leicht modifiziert worden (nur Parameter)

BlitzBasic: [AUSKLAPPEN]

' --- Particle Type ----
Type Particle
Field image, x#, y#, sx#, sy#, r, g, b, alpha#, spin#, rotation, size#, maxsize#, refresh#, T1
Field link

Method Draw()
w# = ImageWidth(Image)
h# = ImageHeight(Image)
width# = size#
height# = size#

SetColor(r,g,b)
SetScale((width#/w#), (height#/h#))
SetAlpha(Alpha#)
SetRotation(Rotation)
DrawImage Image, x, y
End Method


Method Update()

' move particle
x# = x# + sx#
y# = y# + sy#

' resize particle
If MilliSecs()-T1 > Refresh# Then
T1 = MilliSecs()
If Size# < MaxSize Then Size = Size + 1
EndIf

' set alpha
Alpha# = 1 - (Size / MaxSize)

'rotate
Rotation = Rotation + Spin
If Rotation < 0 Then Rotation = 360
If Rotation > 360 Then Rotation = 0

'Delete
If x > ResX Or y > ResY Or x < 0 Or y < 0 Then ParticleList.remove(Self)

End Method

End Type

Global ParticleList:TList = New TList
' --- Particle Type ----


Global ResX = 1024
Global ResY = 768

Global CountParticles ' number of particles

Graphics ResX, ResY, 32, 500

SetBlend ALPHABLEND
SetBlend LIGHTBLEND

ImageA = LoadImage(\"Particle.png\") ' particle texture 1

HideMouse()


' ---- Hauptschleife ----
Repeat
Cls

If CountParticles > 300 Then Goto LeaveMainLoop

If MilliSecs()-T1 > 0 Then
T1 = MilliSecs()
w = Rnd(360)

PosX# = ResX/2 + Rnd(-10,10)
PosY# = ResY/2 + Rnd(-10,10)
SpeedX# = Cos(w)*Rnd(5)
SpeedY# = Sin(w)*Rnd(5)
r = Rnd(255,200)
g = Rnd(150,100)
b = Rnd(50,25)
Alpha# = 1.0
Spin# = Rnd(-5,5)
Size = 64
MaxSize = 196
Refresh = 10

CreateParticle(ImageA, PosX#, PosY#, SpeedX#, SpeedY#, r, g, b, Alpha#, Spin, Size, MaxSize, Refresh)
EndIf

#leavemainloop

SetScale 1,1
SetColor 200,200,200
DrawText(\"FPS: \" + FPS(), 0, 0)
DrawText(\"Particles: \" + CountParticles, 0, 10)
DrawText(\"Memory: \" + MemAlloced()/1024 + \" KB\", 0, 20)

CountParticles = 0
For p:particle = EachIn ParticleList
CountParticles = CountParticles + 1
p.draw()
p.update()
Next

FlushMem()

Flip
Until KeyHit(KEY_ESCAPE)
End
' ---- Hauptschleife ----



' ---- Create Particle ----
Function CreateParticle(image, x#, y#, sx#, sy#, r, g, b, alpha#, spin#, size#, maxsize#, refresh#)
p:particle = New Particle
p.image = image
MidHandleImage(p.image)
p.x# = x#
p.y# = y#
p.sx# = sx#
p.sy# = sy#
p.r = r
p.g = g
p.b = b
p.alpha# = alpha#
p.spin# = spin#
p.size = size#
p.maxsize# = maxsize#
p.refresh# = refresh#
p.link = ParticleList.addlast(p:particle)
End Function
' ---- Create Particle ----



' ---- Frames per Second ----
Global FPSSEC = MilliSecs(), FPSCOUNT, FRAMES

Function FPS()

FRAMES = FRAMES + 1
If MilliSecs() - FPSSEC => 1000 Then
FPSCOUNT = FRAMES
FRAMES = 0
FPSSEC = MilliSecs()
EndIf

Return FPSCOUNT
End Function
' ---- Frames per Second ----
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Suco-X

Betreff: .......

BeitragSo, Sep 18, 2005 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem lag an deiner Handhabung mit dem Link.

Code: [AUSKLAPPEN]

' --- Particle Type ----
Type Particle
 Field image, x#, y#, sx#, sy#, r, g, b, alpha#, spin#, rotation, size#, maxsize#, refresh#, T1
 'Field link
 Field Link:TLink
 Method Draw()
  w# = ImageWidth(Image)
  h# = ImageHeight(Image)
  width# = size#
  height# = size#

  SetColor(r,g,b)
  SetScale((width#/w#), (height#/h#))
  SetAlpha(Alpha#)
  SetRotation(Rotation)
  DrawImage Image, x, y
 End Method


 Method Update()

  ' move particle
  x# = x# + sx#
  y# = y# + sy#
 
  ' resize particle
  If MilliSecs()-T1 > Refresh# Then
   T1 = MilliSecs()
   If Size# < MaxSize Then Size = Size + 1
  EndIf

  ' set alpha
  Alpha# = 1 - (Size / MaxSize)

  'rotate
  Rotation = Rotation + Spin
  If Rotation < 0 Then Rotation = 360
  If Rotation > 360 Then Rotation = 0

  'Delete
  If x > ResX Or y > ResY Or x < 0 Or y < 0 Then self.Link.Remove()'ParticleList.remove(Self)

 End Method

End Type

Global ParticleList:TList = New TList
' --- Particle Type ----


Global ResX = 1024
Global ResY = 768

Global CountParticles ' number of particles

Graphics ResX, ResY, 32, 500

SetBlend ALPHABLEND
SetBlend LIGHTBLEND

ImageA = LoadImage("Particle.png") ' particle texture 1

HideMouse()


' ---- Hauptschleife ----
Repeat
 Cls

  If CountParticles > 300 Then Goto LeaveMainLoop

  If MilliSecs()-T1 > 0 Then
   T1 = MilliSecs()
   w = Rnd(360)
   
   PosX# = ResX/2 + Rnd(-10,10)
   PosY# = ResY/2 + Rnd(-10,10)
   SpeedX# = Cos(w)*Rnd(5)
   SpeedY# = Sin(w)*Rnd(5)
   r = Rnd(255,200)
   g = Rnd(150,100)
   b = Rnd(50,25)
   Alpha# = 1.0
   Spin# = Rnd(-5,5)
   Size = 64
   MaxSize = 196
   Refresh = 10

   CreateParticle(ImageA, PosX#, PosY#, SpeedX#, SpeedY#, r, g, b, Alpha#, Spin, Size, MaxSize, Refresh)
  EndIf

  #leavemainloop

  SetScale 1,1
  SetColor 200,200,200
  DrawText("FPS: " + FPS(), 0, 0)
  DrawText("Particles: " + CountParticles, 0, 10)
  DrawText("Memory: " + MemAlloced()/1024 + " KB", 0, 20)

  CountParticles = 0
  For p:particle = EachIn ParticleList
   CountParticles = CountParticles + 1
   p.draw()
   p.update()
  Next
 
  FlushMem()
 
 Flip
Until KeyHit(KEY_ESCAPE)
End
' ---- Hauptschleife ----



' ---- Create Particle ----
Function CreateParticle(image, x#, y#, sx#, sy#, r, g, b, alpha#, spin#, size#, maxsize#, refresh#)
 p:particle = New Particle
 p.image = image
 MidHandleImage(p.image)
 p.x# = x#
 p.y# = y#
 p.sx# = sx#
 p.sy# = sy#
 p.r = r
 p.g = g
 p.b = b
 p.alpha# = alpha#
 p.spin# = spin#
 p.size = size#
 p.maxsize# = maxsize#
 p.refresh# = refresh#
 p.link = ParticleList.addlast(p:particle)
End Function
' ---- Create Particle ----



' ---- Frames per Second ----
Global FPSSEC = MilliSecs(), FPSCOUNT, FRAMES

Function FPS()
 
  FRAMES = FRAMES + 1
  If MilliSecs() - FPSSEC => 1000 Then
   FPSCOUNT = FRAMES
   FRAMES = 0
   FPSSEC = MilliSecs()
  EndIf

 Return FPSCOUNT
End Function
' ---- Frames per Second ----


Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group