FPS Function für Fortgeschrittene

Übersicht BlitzBasic Allgemein

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

Jan_

Ehemaliger Admin

Betreff: FPS Function für Fortgeschrittene

BeitragDi, Aug 24, 2004 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hiho

Da ich beim rechnen mit FPs keine Sekunde Warten kann, und keine lust auf schritte von 250,333,500,1000 FPS habe,
suchte ich nach einer Sinnfollen Variante die FPS zu messen.

leider konnte ich keine finden.

Folglich dessen erstellte ich mir selber eine.
Diese war etwas ausgereifter aber noch nicht ganz das, was ich wollte.
Und nun habe ich meinen Persönlichen Favoriten unter den FPS funktionen(auch von mir entwickelt):

Code: [AUSKLAPPEN]
Global FPS_zahler,FPS_Start_Time,FPS#;für die FPS funktion

Function update_FPS(checktime%=10)
   
   Local Time,Righttime
   
   FPS_Zahler = FPS_Zahler + 1
   
   Time=MilliSecs()
   
   If Time > FPS_START_TIME + checktime%
   
      Righttime      = Time - FPS_START_TIME
      FPS_START_TIME   = Time
      FPS#         = (Float(FPS_Zahler)/Float(Righttime))*1000.0
      FPS_Zahler      = 0
               
   EndIf

   Return FPS#

End Function


sehr zu empfehlen:
Code: [AUSKLAPPEN]
text 0,0,"FPS: "+update_FPS(FPS)



Forzüge dieser Funktion:
-Schnell
-genau
-ohne limit
-kann FPS mit Kommazahlen ausrechnen
-Sehr Bugfrei
-von mir Smile
between angels and insects
 

x.Force

BeitragDi, Aug 24, 2004 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr interssant muss ich bei gelegenheit mal testen

OT: das heißt vorzüge ^^

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-

Mattis_the_brain

BeitragDi, Aug 24, 2004 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur mal so ne Frage wozu bracuhs man so genau? Und wer kan keine Sec warten?^^

wunderkind

BeitragDi, Aug 24, 2004 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Mattis_the_brain hat Folgendes geschrieben:
Nur mal so ne Frage wozu bracuhs man so genau? Und wer kan keine Sec warten?^^


Aus welchem Grund sollte man eine Sekunde warten!? FPS will ich doch nicht irgendwann mal eine Sekunde lang feststellen, sondern laufend.

Vertex

BeitragDi, Aug 24, 2004 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du dein Programm FPS unabhängig machen willst, will der user nicht eine Sekunde warten, bis sich die Geschwindigkeit des Spiels der Geschwindigkeit des PCs angepasst hat. Wobei man für solche Zwecke besser mit der Variante beraten ist, die Zeit für die Mainloop zu messen.
mfg olli
vertex.dreamfall.at | GitHub
 

lettorTrepuS

BeitragMi, Aug 25, 2004 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Jan_

Ehemaliger Admin

BeitragMi, Aug 25, 2004 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Yup, schneller ist sie auf jeden fall, aber nicht genau genug!

Beweis:

Code: [AUSKLAPPEN]
Graphics 320,240,16,2
SetBuffer BackBuffer()
Repeat
   Cls

   FPS2# = 1000 / (MilliSecs() - OldMS#)
   OldMS# = MilliSecs()


   Text 0,0,FPs2#

   Text 0,20,update_FPS()

   Flip 0

Until KeyHit(1)

Global FPS_zahler,FPS_Start_Time,FPS#;für die FPS funktion

Function update_FPS(checktime%=10)

Local Time,Righttime

FPS_Zahler = FPS_Zahler + 1

Time=MilliSecs()

If Time > FPS_START_TIME + checktime%

Righttime = Time - FPS_START_TIME
FPS_START_TIME = Time
FPS# = (Float(FPS_Zahler)/Float(Righttime))*1000.0
FPS_Zahler = 0

EndIf

Return FPS#

End Function


--> Werte Tabelle für ST's FPs funktion

Code: [AUSKLAPPEN]
Infinity
1000.0
500.0
333.333
250.0
200.0
166.667
142.857
125.0
111.111
100.0
90.9091
83.3333
76.9231
71.4286
66.6667
62.5
58.8235
55.5556
52.6316
50.0
47.619
45.4545
43.4783
41.6667
40.0
38.4615
37.037
35.7143
34.4828
33.3333


haha ST, nur unter 35 FPs, kannst du das genau bestimmen
Genau sowas wollte ich mit dieser Funktion verhindern!
between angels and insects
 

lettorTrepuS

BeitragMi, Aug 25, 2004 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Jan_

Ehemaliger Admin

BeitragMi, Aug 25, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, ich weiß es riecht nach streit, aber meine ist schneller

Meine Rechnerkonfig:
600 mhz 384mb ram win NT
BB+

Angeschaltener Debuger:

Zitat:
ST's: 260ms bei 100000

Jan's: 340ms bei 100000


Ausgeschaltener Debuger:

Zitat:
ST's: 68ms bei 100000

Jan's: 26ms bei 100000


--> meine ist sogar schneller
[bin_Stolz_Auf_mich]

Code: [AUSKLAPPEN]
Graphics 640,480,16,2
SetBuffer BackBuffer()
Repeat
   Cls
   
   ;ST's Function
   
   t11=MilliSecs()
   For s=0 To 100000
      FPS2# = 1000 / (MilliSecs() - OldMS#)
      OldMS# = MilliSecs()
   Next
   t12=MilliSecs()
   
   ;Jan's Function
   
   t21=MilliSecs()
   For s=0 To 100000
      Checktime = 10
      FPS_Zahler = FPS_Zahler + 1

      Time=MilliSecs()

      If Time > FPS_START_TIME + checktime%

         Righttime = Time - FPS_START_TIME
         FPS_START_TIME = Time
         FPS# = (Float(FPS_Zahler)/Float(Righttime))*1000.0
         FPS_Zahler = 0

      EndIf
   Next
   t22=MilliSecs()
   
   ;Anzeige
   
   Text 0,0,"ST's Funktion: " + (t12-t11)  + "ms für 100000 mal Zeitnehmen"

   Text 0,20,"Jan's Function: " + (t22-t21) + "ms für 100000 mal Zeitnehmen"

   Flip 0

Until KeyHit(1)



[Edit]
Wenn du sie so schreibst, kommst du ohne Debug auf 46MS
und mit auf 300 ms
--> sie ist dann schneller als jetzt aber immernochnicht so schnell wie meine.
Code: [AUSKLAPPEN]
      time = MilliSecs()
      FPS2# = 1000.0 / (time - OldMS#)
      OldMS# = time
[/Edit]
between angels and insects
 

lettorTrepuS

BeitragMi, Aug 25, 2004 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group