freetype-commit
[Top][All Lists]
Advanced

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

[Git][freetype/freetype][GSoC-2023-Ahmet] warmup


From: @goksu
Subject: [Git][freetype/freetype][GSoC-2023-Ahmet] warmup
Date: Thu, 03 Aug 2023 16:09:12 +0000

Ahmet Göksu pushed to branch GSoC-2023-Ahmet at FreeType / FreeType

Commits:

  • d7371720
    by goksu at 2023-08-03T19:08:57+03:00
    warmup
    

2 changed files:

Changes:

  • builds/testing.mk
    ... ... @@ -3,7 +3,7 @@ FTBENCH_DIR = $(TOP_DIR)/src/tools/ftbench
    3 3
     FTBENCH_SRC = $(FTBENCH_DIR)/ftbench.c
    
    4 4
     FTBENCH_OBJ = $(OBJ_DIR)/bench.$(SO)
    
    5 5
     FTBENCH_BIN = $(OBJ_DIR)/bench$E
    
    6
    -FTBENCH_FLAG ?= -c 100
    
    6
    +FTBENCH_FLAG ?= -c 500 -w 1
    
    7 7
     INCLUDES = $(TOP_DIR)/include
    
    8 8
     FONTS = $(wildcard $(FTBENCH_DIR)/fonts/*.ttf)
    
    9 9
     BASELINE_DIR = $(OBJ_DIR)/baseline/
    

  • src/tools/ftbench/ftbench.c
    ... ... @@ -98,6 +98,7 @@
    98 98
     
    
    99 99
     #define CACHE_SIZE  1024
    
    100 100
     #define BENCH_TIME  2.0
    
    101
    +#define WARMUP_TIME 1.0
    
    101 102
     #define FACE_SIZE   10
    
    102 103
     
    
    103 104
     
    
    ... ... @@ -268,11 +269,13 @@
    268 269
       benchmark( FT_Face   face,
    
    269 270
                  btest_t*  test,
    
    270 271
                  int       max_iter,
    
    271
    -             double    max_time )
    
    272
    +             double    max_time,
    
    273
    +             double    warmup )
    
    272 274
       {
    
    275
    +    
    
    273 276
         int       n, done;
    
    274 277
         btimer_t  timer, elapsed;
    
    275
    -
    
    278
    +    double    warmup_time = warmup * 1E6; // Convert to microseconds
    
    276 279
     
    
    277 280
         if ( test->cache_first )
    
    278 281
         {
    
    ... ... @@ -286,15 +289,28 @@
    286 289
         TIMER_RESET( &timer );
    
    287 290
         TIMER_RESET( &elapsed );
    
    288 291
     
    
    292
    +    int is_warmup = 1;
    
    293
    +
    
    289 294
         for ( n = 0, done = 0; !max_iter || n < max_iter; n++ )
    
    290 295
         {
    
    296
    +      if ( is_warmup )
    
    297
    +        n = 0;
    
    298
    +
    
    291 299
           TIMER_START( &elapsed );
    
    292 300
     
    
    293 301
           done += test->bench( &timer, face, test->user_data );
    
    294 302
     
    
    295 303
           TIMER_STOP( &elapsed );
    
    296 304
     
    
    297
    -      if ( TIMER_GET( &elapsed ) > 1E6 * max_time )
    
    305
    +      if ( is_warmup && TIMER_GET( &elapsed ) > warmup_time )
    
    306
    +      {
    
    307
    +        is_warmup = 0;
    
    308
    +        done = 0;
    
    309
    +        TIMER_RESET( &timer );
    
    310
    +        TIMER_RESET( &elapsed );
    
    311
    +      }
    
    312
    +
    
    313
    +      else if ( !is_warmup && TIMER_GET( &elapsed ) > 1E6 * max_time )
    
    298 314
             break;
    
    299 315
         }
    
    300 316
     
    
    ... ... @@ -1010,7 +1026,7 @@
    1010 1026
                     ps_hinting_engine_names[ps_hinting_engines[0]],
    
    1011 1027
                     ps_hinting_engine_names[ps_hinting_engines[1]] );
    
    1012 1028
     
    
    1013
    -
    
    1029
    +    // TODO: add here -w option
    
    1014 1030
         fprintf( stderr,
    
    1015 1031
           "\n"
    
    1016 1032
           "ftbench: run FreeType benchmarks\n"
    
    ... ... @@ -1101,6 +1117,7 @@
    1101 1117
         unsigned int   size           = FACE_SIZE;
    
    1102 1118
         int            max_iter       = 0;
    
    1103 1119
         double         max_time       = BENCH_TIME;
    
    1120
    +    double         warmup_time    = WARMUP_TIME;
    
    1104 1121
         int            j;
    
    1105 1122
     
    
    1106 1123
         unsigned int  versions[2] = { TT_INTERPRETER_VERSION_35,
    
    ... ... @@ -1172,7 +1189,7 @@
    1172 1189
           int  opt;
    
    1173 1190
     
    
    1174 1191
     
    
    1175
    -      opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:v" );
    
    1192
    +      opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:w:v" );
    
    1176 1193
     
    
    1177 1194
           if ( opt == -1 )
    
    1178 1195
             break;
    
    ... ... @@ -1340,6 +1357,15 @@
    1340 1357
               printf( "\n" );
    
    1341 1358
               exit( 0 );
    
    1342 1359
             }
    
    1360
    +        break;
    
    1361
    +
    
    1362
    +      case 'w':
    
    1363
    +        warmup_time = atof( optarg );
    
    1364
    +        if ( warmup_time < 0 )
    
    1365
    +          warmup_time = -warmup_time;
    
    1366
    +        break;
    
    1367
    +  
    
    1368
    +      
    
    1343 1369
             /* break; */
    
    1344 1370
     
    
    1345 1371
           default:
    
    ... ... @@ -1428,6 +1454,8 @@
    1428 1454
         if ( max_iter )
    
    1429 1455
           printf( "number of iterations for each test: at most %d\n",
    
    1430 1456
                   max_iter );
    
    1457
    +    printf( "number of seconds as warmup time before all tests: %.0f\n",
    
    1458
    +              warmup_time );
    
    1431 1459
     
    
    1432 1460
         printf( "\n"
    
    1433 1461
                 "executing tests:\n" );
    
    ... ... @@ -1451,7 +1479,7 @@
    1451 1479
           case FT_BENCH_LOAD_GLYPH:
    
    1452 1480
             test.title = "Load";
    
    1453 1481
             test.bench = test_load;
    
    1454
    -        benchmark( face, &test, max_iter, max_time );
    
    1482
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1455 1483
     
    
    1456 1484
             if ( cache_man )
    
    1457 1485
             {
    
    ... ... @@ -1461,7 +1489,7 @@
    1461 1489
               {
    
    1462 1490
                 test.title = "Load (image cached)";
    
    1463 1491
                 test.bench = test_image_cache;
    
    1464
    -            benchmark( face, &test, max_iter, max_time );
    
    1492
    +            benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1465 1493
               }
    
    1466 1494
     
    
    1467 1495
               if ( !FTC_SBitCache_New( cache_man, &sbit_cache ) )
    
    ... ... @@ -1469,7 +1497,7 @@
    1469 1497
                 test.title = "Load (sbit cached)";
    
    1470 1498
                 test.bench = test_sbit_cache;
    
    1471 1499
                 if ( size )
    
    1472
    -              benchmark( face, &test, max_iter, max_time );
    
    1500
    +              benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1473 1501
                 else
    
    1474 1502
                   printf( "  %-25s disabled (size = 0)\n", test.title );
    
    1475 1503
               }
    
    ... ... @@ -1482,24 +1510,24 @@
    1482 1510
             test.title = "Load_Advances (Normal)";
    
    1483 1511
             test.bench = test_load_advances;
    
    1484 1512
             flags      = FT_LOAD_DEFAULT;
    
    1485
    -        benchmark( face, &test, max_iter, max_time );
    
    1513
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1486 1514
     
    
    1487 1515
             test.title  = "Load_Advances (Fast)";
    
    1488 1516
             test.bench  = test_load_advances;
    
    1489 1517
             flags       = FT_LOAD_TARGET_LIGHT;
    
    1490
    -        benchmark( face, &test, max_iter, max_time );
    
    1518
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1491 1519
     
    
    1492 1520
             test.title  = "Load_Advances (Unscaled)";
    
    1493 1521
             test.bench  = test_load_advances;
    
    1494 1522
             flags       = FT_LOAD_NO_SCALE;
    
    1495
    -        benchmark( face, &test, max_iter, max_time );
    
    1523
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1496 1524
             break;
    
    1497 1525
     
    
    1498 1526
           case FT_BENCH_RENDER:
    
    1499 1527
             test.title = "Render";
    
    1500 1528
             test.bench = test_render;
    
    1501 1529
             if ( size )
    
    1502
    -          benchmark( face, &test, max_iter, max_time );
    
    1530
    +          benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1503 1531
             else
    
    1504 1532
               printf( "  %-25s disabled (size = 0)\n", test.title );
    
    1505 1533
             break;
    
    ... ... @@ -1507,13 +1535,13 @@
    1507 1535
           case FT_BENCH_GET_GLYPH:
    
    1508 1536
             test.title = "Get_Glyph";
    
    1509 1537
             test.bench = test_get_glyph;
    
    1510
    -        benchmark( face, &test, max_iter, max_time );
    
    1538
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1511 1539
             break;
    
    1512 1540
     
    
    1513 1541
           case FT_BENCH_GET_CBOX:
    
    1514 1542
             test.title = "Get_CBox";
    
    1515 1543
             test.bench = test_get_cbox;
    
    1516
    -        benchmark( face, &test, max_iter, max_time );
    
    1544
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1517 1545
             break;
    
    1518 1546
     
    
    1519 1547
           case FT_BENCH_GET_BBOX:
    
    ... ... @@ -1525,7 +1553,7 @@
    1525 1553
     
    
    1526 1554
               /* rotate outlines by 30 degrees so that CBox and BBox differ */
    
    1527 1555
               FT_Set_Transform( face, &rot30, NULL );
    
    1528
    -          benchmark( face, &test, max_iter, max_time );
    
    1556
    +          benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1529 1557
               FT_Set_Transform( face, NULL, NULL );
    
    1530 1558
             }
    
    1531 1559
             break;
    
    ... ... @@ -1544,7 +1572,7 @@
    1544 1572
                 test.title = "Get_Char_Index";
    
    1545 1573
                 test.bench = test_get_char_index;
    
    1546 1574
     
    
    1547
    -            benchmark( face, &test, max_iter, max_time );
    
    1575
    +            benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1548 1576
     
    
    1549 1577
                 if ( cache_man                                    &&
    
    1550 1578
                      !FTC_CMapCache_New( cache_man, &cmap_cache ) )
    
    ... ... @@ -1553,7 +1581,7 @@
    1553 1581
     
    
    1554 1582
                   test.title = "Get_Char_Index (cached)";
    
    1555 1583
                   test.bench = test_cmap_cache;
    
    1556
    -              benchmark( face, &test, max_iter, max_time );
    
    1584
    +              benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1557 1585
                 }
    
    1558 1586
     
    
    1559 1587
                 free( charset.code );
    
    ... ... @@ -1564,20 +1592,20 @@
    1564 1592
           case FT_BENCH_CMAP_ITER:
    
    1565 1593
             test.title = "Iterate CMap";
    
    1566 1594
             test.bench = test_cmap_iter;
    
    1567
    -        benchmark( face, &test, max_iter, max_time );
    
    1595
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1568 1596
             break;
    
    1569 1597
     
    
    1570 1598
           case FT_BENCH_NEW_FACE:
    
    1571 1599
             test.title = "New_Face";
    
    1572 1600
             test.bench = test_new_face;
    
    1573
    -        benchmark( face, &test, max_iter, max_time );
    
    1601
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1574 1602
             break;
    
    1575 1603
     
    
    1576 1604
           case FT_BENCH_EMBOLDEN:
    
    1577 1605
             test.title = "Embolden";
    
    1578 1606
             test.bench = test_embolden;
    
    1579 1607
             if ( size )
    
    1580
    -          benchmark( face, &test, max_iter, max_time );
    
    1608
    +          benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1581 1609
             else
    
    1582 1610
               printf( "  %-25s disabled (size = 0)\n", test.title );
    
    1583 1611
             break;
    
    ... ... @@ -1586,7 +1614,7 @@
    1586 1614
             test.title = "Stroke";
    
    1587 1615
             test.bench = test_stroke;
    
    1588 1616
             if ( size )
    
    1589
    -          benchmark( face, &test, max_iter, max_time );
    
    1617
    +          benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1590 1618
             else
    
    1591 1619
               printf( "  %-25s disabled (size = 0)\n", test.title );
    
    1592 1620
             break;
    
    ... ... @@ -1594,7 +1622,7 @@
    1594 1622
           case FT_BENCH_NEW_FACE_AND_LOAD_GLYPH:
    
    1595 1623
             test.title = "New_Face & load glyph(s)";
    
    1596 1624
             test.bench = test_new_face_and_load_glyph;
    
    1597
    -        benchmark( face, &test, max_iter, max_time );
    
    1625
    +        benchmark( face, &test, max_iter, max_time, warmup_time );
    
    1598 1626
             break;
    
    1599 1627
           }
    
    1600 1628
         }
    


  • reply via email to

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