[Commits] SDL: testsprite2: report average FPS in blocks of five seconds.

libsdl.org revision control commits-owner at libsdl.org
Tue Sep 25 07:50:47 PDT 2018


details:   https://hg.libsdl.org/SDL/rev/9f9dbcce30b3
changeset: 12210:9f9dbcce30b3
user:      Ryan C. Gordon <icculus at icculus.org>
date:      Thu Sep 20 15:41:57 2018 -0400
description:
testsprite2: report average FPS in blocks of five seconds.

This makes the reporting more accurate, vs startup inefficiencies and other
scheduling burps.

diffstat:

 test/testsprite2.c |  25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diffs (72 lines):

diff -r 042096b6e332 -r 9f9dbcce30b3 test/testsprite2.c
--- a/test/testsprite2.c	Sun Sep 09 15:09:38 2018 -0400
+++ b/test/testsprite2.c	Thu Sep 20 15:41:57 2018 -0400
@@ -37,6 +37,8 @@
 static SDL_Rect *velocities;
 static int sprite_w, sprite_h;
 static SDL_BlendMode blendMode = SDL_BLENDMODE_BLEND;
+static Uint32 next_fps_check, frames;
+static const Uint32 fps_check_delay = 5000;
 
 /* Number of iterations to move sprites - used for visual tests. */
 /* -1: infinite random moves (default); >=0: enables N deterministic moves */
@@ -244,6 +246,7 @@
 void
 loop()
 {
+    Uint32 now;
     int i;
     SDL_Event event;
 
@@ -261,13 +264,24 @@
         emscripten_cancel_main_loop();
     }
 #endif
+
+    frames++;
+    now = SDL_GetTicks();
+    if (SDL_TICKS_PASSED(now, next_fps_check)) {
+        /* Print out some timing information */
+        const Uint32 then = next_fps_check - fps_check_delay;
+        const double fps = ((double) frames * 1000) / (now - then);
+        SDL_Log("%2.2f frames per second\n", fps);
+        next_fps_check = now + fps_check_delay;
+        frames = 0;
+    }
+
 }
 
 int
 main(int argc, char *argv[])
 {
     int i;
-    Uint32 then, now, frames;
     Uint64 seed;
     const char *icon = "icon.bmp";
 
@@ -384,24 +398,17 @@
 
     /* Main render loop */
     frames = 0;
-    then = SDL_GetTicks();
+    next_fps_check = SDL_GetTicks() + fps_check_delay;
     done = 0;
 
 #ifdef __EMSCRIPTEN__
     emscripten_set_main_loop(loop, 0, 1);
 #else
     while (!done) {
-        ++frames;
         loop();
     }
 #endif
 
-    /* Print out some timing information */
-    now = SDL_GetTicks();
-    if (now > then) {
-        double fps = ((double) frames * 1000) / (now - then);
-        SDL_Log("%2.2f frames per second\n", fps);
-    }
     quit(0);
     return 0;
 }


More information about the commits mailing list