Woher resultieren FPS-Schwankungen?


  • Mod

    um darauf antworten zu können, müßten wir wissen wie du die fps berechnest bzw die zeit nimmst.

    rapso->greets();



  • rapso schrieb:

    um darauf antworten zu können, müßten wir wissen wie du die fps berechnest bzw die zeit nimmst.

    rapso->greets();

    Bereits da ;), aber okay war knapp 🤡

    MfG SideWinder



  • Ich würde nicht LARGE_INTEGER verwenden, sondern __int64 und den Zeiger auf LARGE_INTEGER casten. Ist ein bisschen leichter zu verwenden dann. 🤡

    Und die Frequency musst du nur einmal auslesen. Die ist Hardwareabhängig.

    Wie oft startest und stopst du? Und wie lange läuft das? Für ein Frame kann man schon mal ne gute Abweichung haben.
    Und 800fps und 1000fps ist kein weltbewegender Unterschied.



  • Nicht 1000, 10000! Ich starte und stoppe jeden Frame.

    Hier mal ein Auszug, umso mehr Objekte ich rendere umso weniger werden die Annormalien. Aber bei 0-5 Objekten sieht mein Log so aus:

    FPS                                          0
    FPS                                          9062
    FPS                                          20109
    FPS                                          20338
    FPS                                          335
    FPS                                          7664
    FPS                                          2616
    FPS                                          817
    FPS                                          818
    FPS                                          812
    FPS                                          818
    FPS                                          811
    FPS                                          327
    FPS                                          10198
    FPS                                          2168
    FPS                                          811
    FPS                                          812
    FPS                                          819
    FPS                                          814
    FPS                                          597
    FPS                                          129
    FPS                                          5498
    FPS                                          19560
    FPS                                          20223
    FPS                                          20454
    FPS                                          981
    FPS                                          825
    FPS                                          425
    FPS                                          5926
    FPS                                          849
    FPS                                          818
    FPS                                          812
    FPS                                          818
    FPS                                          812
    FPS                                          819
    

    MfG SideWinder



  • Die 0 am Beginn ist weil ich statt dem throw nun return0 habe und der Counter erst beim zweitem Mal aktiv wird (hat was mit der Engine zu tun).

    MfG SideWinder



  • Jeden Frame? Dann kann es doch leicht sein, dass du mal 1ms und mal 1.25ms brauchst? 😕
    Ist doch dann mehr oder weniger Zufall, wenn das Betriebssystem dir grad die CPU wegnimmt, musst halt ein paar Mikrosekunden warten. 🤡

    Man nimmt ja auch nicht bei jedem Frame die Zeit sondern zählt die Frames, bis eine Sekunde vorbei ist. 🙂



  • Interessanter Punkt mit dem Zählen bis eine Sekunde vorbei ist...ich glaube so ist das fast besser implementiert 🙂

    BTW: Die paar ms könnten mir aber im schlimmsten Fall die FPS nach unten ziehen (bis hin zu 0 wenn mich das OS mal ne Sekunde im Stich lässt) aber sie können doch nicht bis auf 20K steigen 😕

    *trotzdem umschreib*

    MfG SideWinder


  • Mod

    es kann sein, dass du auf irgend ein caching eingefahren bist. z.b. zeichnen grakas ja nicht sofort das was du denen übergibst, es kann also sein, dass du deren abarbeitungsbuffer füllst und dafür so gut wie keine zeit brauchst. wenn der mal voll ist (kann 5frames im voraus speichern), dann könnte der treiber warten bis der abarbeitungsbuffer nur noch 2frames im cache hat und auf diese weise schwankt die framerate pro frame.

    caches hast du überall und kannst überall diese ursachen suchen, z.b. beim abspielen von mp3 von der festplatte, beim zugriff auf selten gebrauchte speicherteile darauf dass windows das als ausgelagerte markierte wieder entsperrt...

    rapso->greets();



  • Und es wird dir mit hoher Wahrscheinlichkeit nichts bringen, wenn du den Grund herausfindest.

    Bye, TGGC \-/



  • TGGC schrieb:

    Und es wird dir mit hoher Wahrscheinlichkeit nichts bringen, wenn du den Grund herausfindest.

    Stimmt, deswegen braucht es mich auch nicht zu interessieren 👍

    Ich zähl jetzt die Frames hoch, das macht die ganze Sache sehr stabil in Sachen FPS (klar wird ja auch nur noch sekundenweise geändert).

    MfG SideWinder


Anmelden zum Antworten