freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] gsoc-2023-ahmet-final 8797ad3d5 4/6: [ftbench] warmup added


From: Werner Lemberg
Subject: [freetype2] gsoc-2023-ahmet-final 8797ad3d5 4/6: [ftbench] warmup added
Date: Thu, 21 Sep 2023 20:27:43 -0400 (EDT)

branch: gsoc-2023-ahmet-final
commit 8797ad3d53e4c1f47da0538c0f05c1d3a20c008a
Author: goksu <25721443+goeksu@users.noreply.github.com>
Commit: goksu <25721443+goeksu@users.noreply.github.com>

    [ftbench] warmup added
    
    added '-w N' argument (10 by default), runs N times of iterations before 
all tests.
---
 src/tools/ftbench/ftbench.c | 56 ++++++++++++++++++++++++++++++---------------
 1 file changed, 37 insertions(+), 19 deletions(-)

diff --git a/src/tools/ftbench/ftbench.c b/src/tools/ftbench/ftbench.c
index 2f0f2a4e6..6d4a40ab3 100644
--- a/src/tools/ftbench/ftbench.c
+++ b/src/tools/ftbench/ftbench.c
@@ -99,6 +99,7 @@
 #define CACHE_SIZE  1024
 #define BENCH_TIME  2.0
 #define FACE_SIZE   10
+#define WARMUP_ITER   10
 
 
   static FT_Library        lib;
@@ -268,7 +269,8 @@
   benchmark( FT_Face   face,
              btest_t*  test,
              int       max_iter,
-             double    max_time )
+             double    max_time,
+             double    warmup )
   {
     int       n, done;
     btimer_t  timer, elapsed;
@@ -280,6 +282,11 @@
       test->bench( &timer, face, test->user_data );
     }
 
+    TIMER_START(&elapsed);
+    for(int i = 0; i<warmup; i++)
+        test->bench( &timer,face, test->user_data);
+    TIMER_STOP(&elapsed);
+
     printf( "  %-25s ", test->title );
     fflush( stdout );
 
@@ -1049,6 +1056,7 @@
              FACE_SIZE );
     fprintf( stderr,
       "  -t T      Use at most T seconds per bench (default is %.0f).\n"
+      "  -w N      Use N iterations for warming up before each test\n"
       "\n"
       "  -b tests  Perform chosen tests (default is all):\n",
              BENCH_TIME );
@@ -1101,6 +1109,7 @@
     unsigned int   size           = FACE_SIZE;
     int            max_iter       = 0;
     double         max_time       = BENCH_TIME;
+    int         warmup_iter    = WARMUP_ITER;
     int            j;
 
     unsigned int  versions[2] = { TT_INTERPRETER_VERSION_35,
@@ -1172,7 +1181,7 @@
       int  opt;
 
 
-      opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:v" );
+      opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:w:v" );
 
       if ( opt == -1 )
         break;
@@ -1340,6 +1349,13 @@
           printf( "\n" );
           exit( 0 );
         }
+      break;
+
+      case 'w':
+        warmup_iter = atoi( optarg );
+        if ( warmup_iter < 0 )
+          warmup_iter = -warmup_iter;
+        break;
         /* break; */
 
       default:
@@ -1428,6 +1444,8 @@
     if ( max_iter )
       printf( "number of iterations for each test: at most %d\n",
               max_iter );
+    printf( "number of iterations as warmup in all tests: %d\n",
+              warmup_iter );
 
     printf( "\n"
             "executing tests:\n" );
@@ -1451,7 +1469,7 @@
       case FT_BENCH_LOAD_GLYPH:
         test.title = "Load";
         test.bench = test_load;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
 
         if ( cache_man )
         {
@@ -1461,7 +1479,7 @@
           {
             test.title = "Load (image cached)";
             test.bench = test_image_cache;
-            benchmark( face, &test, max_iter, max_time );
+            benchmark( face, &test, max_iter, max_time, warmup_iter );
           }
 
           if ( !FTC_SBitCache_New( cache_man, &sbit_cache ) )
@@ -1469,7 +1487,7 @@
             test.title = "Load (sbit cached)";
             test.bench = test_sbit_cache;
             if ( size )
-              benchmark( face, &test, max_iter, max_time );
+              benchmark( face, &test, max_iter, max_time, warmup_iter );
             else
               printf( "  %-25s disabled (size = 0)\n", test.title );
           }
@@ -1482,24 +1500,24 @@
         test.title = "Load_Advances (Normal)";
         test.bench = test_load_advances;
         flags      = FT_LOAD_DEFAULT;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
 
         test.title  = "Load_Advances (Fast)";
         test.bench  = test_load_advances;
         flags       = FT_LOAD_TARGET_LIGHT;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
 
         test.title  = "Load_Advances (Unscaled)";
         test.bench  = test_load_advances;
         flags       = FT_LOAD_NO_SCALE;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
 
       case FT_BENCH_RENDER:
         test.title = "Render";
         test.bench = test_render;
         if ( size )
-          benchmark( face, &test, max_iter, max_time );
+          benchmark( face, &test, max_iter, max_time, warmup_iter );
         else
           printf( "  %-25s disabled (size = 0)\n", test.title );
         break;
@@ -1507,13 +1525,13 @@
       case FT_BENCH_GET_GLYPH:
         test.title = "Get_Glyph";
         test.bench = test_get_glyph;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
 
       case FT_BENCH_GET_CBOX:
         test.title = "Get_CBox";
         test.bench = test_get_cbox;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
 
       case FT_BENCH_GET_BBOX:
@@ -1525,7 +1543,7 @@
 
           /* rotate outlines by 30 degrees so that CBox and BBox differ */
           FT_Set_Transform( face, &rot30, NULL );
-          benchmark( face, &test, max_iter, max_time );
+          benchmark( face, &test, max_iter, max_time, warmup_iter );
           FT_Set_Transform( face, NULL, NULL );
         }
         break;
@@ -1544,7 +1562,7 @@
             test.title = "Get_Char_Index";
             test.bench = test_get_char_index;
 
-            benchmark( face, &test, max_iter, max_time );
+            benchmark( face, &test, max_iter, max_time, warmup_iter );
 
             if ( cache_man                                    &&
                  !FTC_CMapCache_New( cache_man, &cmap_cache ) )
@@ -1553,7 +1571,7 @@
 
               test.title = "Get_Char_Index (cached)";
               test.bench = test_cmap_cache;
-              benchmark( face, &test, max_iter, max_time );
+              benchmark( face, &test, max_iter, max_time, warmup_iter );
             }
 
             free( charset.code );
@@ -1564,20 +1582,20 @@
       case FT_BENCH_CMAP_ITER:
         test.title = "Iterate CMap";
         test.bench = test_cmap_iter;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
 
       case FT_BENCH_NEW_FACE:
         test.title = "New_Face";
         test.bench = test_new_face;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
 
       case FT_BENCH_EMBOLDEN:
         test.title = "Embolden";
         test.bench = test_embolden;
         if ( size )
-          benchmark( face, &test, max_iter, max_time );
+          benchmark( face, &test, max_iter, max_time, warmup_iter );
         else
           printf( "  %-25s disabled (size = 0)\n", test.title );
         break;
@@ -1586,7 +1604,7 @@
         test.title = "Stroke";
         test.bench = test_stroke;
         if ( size )
-          benchmark( face, &test, max_iter, max_time );
+          benchmark( face, &test, max_iter, max_time, warmup_iter );
         else
           printf( "  %-25s disabled (size = 0)\n", test.title );
         break;
@@ -1594,7 +1612,7 @@
       case FT_BENCH_NEW_FACE_AND_LOAD_GLYPH:
         test.title = "New_Face & load glyph(s)";
         test.bench = test_new_face_and_load_glyph;
-        benchmark( face, &test, max_iter, max_time );
+        benchmark( face, &test, max_iter, max_time, warmup_iter );
         break;
       }
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]