Commits:
1 changed file:
Changes:
src/ftbench.c
... |
... |
@@ -98,6 +98,7 @@ |
98
|
98
|
#define CACHE_SIZE 1024
|
99
|
99
|
#define BENCH_TIME 2.0
|
100
|
100
|
#define FACE_SIZE 10
|
|
101
|
+#define WARMUP_ITER 10
|
101
|
102
|
|
102
|
103
|
|
103
|
104
|
static FT_Library lib;
|
... |
... |
@@ -267,9 +268,10 @@ |
267
|
268
|
benchmark( FT_Face face,
|
268
|
269
|
btest_t* test,
|
269
|
270
|
int max_iter,
|
270
|
|
- double max_time )
|
|
271
|
+ double max_time,
|
|
272
|
+ double warmup )
|
271
|
273
|
{
|
272
|
|
- int n, done;
|
|
274
|
+ int n, w, done;
|
273
|
275
|
btimer_t timer;
|
274
|
276
|
|
275
|
277
|
|
... |
... |
@@ -279,6 +281,15 @@ |
279
|
281
|
test->bench( face, test->user_data );
|
280
|
282
|
}
|
281
|
283
|
|
|
284
|
+
|
|
285
|
+ TIMER_START(&timer);
|
|
286
|
+
|
|
287
|
+ for( w = 0; w < warmup; w++ )
|
|
288
|
+ test->bench(face, test->user_data);
|
|
289
|
+
|
|
290
|
+ TIMER_STOP(&timer);
|
|
291
|
+
|
|
292
|
+
|
282
|
293
|
printf( " %-25s ", test->title );
|
283
|
294
|
fflush( stdout );
|
284
|
295
|
|
... |
... |
@@ -986,6 +997,7 @@ |
986
|
997
|
FACE_SIZE );
|
987
|
998
|
fprintf( stderr,
|
988
|
999
|
" -t T Use at most T seconds per bench (default is %.0f).\n"
|
|
1000
|
+ " -w N Use N iterations for warming up before each test\n"
|
989
|
1001
|
"\n"
|
990
|
1002
|
" -b tests Perform chosen tests (default is all):\n",
|
991
|
1003
|
BENCH_TIME );
|
... |
... |
@@ -1042,6 +1054,7 @@ |
1042
|
1054
|
unsigned int size = FACE_SIZE;
|
1043
|
1055
|
int max_iter = 0;
|
1044
|
1056
|
double max_time = BENCH_TIME;
|
|
1057
|
+ int warmup_iter = WARMUP_ITER;
|
1045
|
1058
|
int j;
|
1046
|
1059
|
|
1047
|
1060
|
unsigned int versions[2] = { TT_INTERPRETER_VERSION_35,
|
... |
... |
@@ -1113,7 +1126,7 @@ |
1113
|
1126
|
int opt;
|
1114
|
1127
|
|
1115
|
1128
|
|
1116
|
|
- opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:v" );
|
|
1129
|
+ opt = getopt( argc, argv, "a:b:Cc:e:f:H:I:i:l:m:pr:s:t:w:v" );
|
1117
|
1130
|
|
1118
|
1131
|
if ( opt == -1 )
|
1119
|
1132
|
break;
|
... |
... |
@@ -1281,6 +1294,15 @@ |
1281
|
1294
|
printf( "\n" );
|
1282
|
1295
|
exit( 0 );
|
1283
|
1296
|
}
|
|
1297
|
+ break;
|
|
1298
|
+
|
|
1299
|
+ case 'w':
|
|
1300
|
+ warmup_iter = atoi( optarg );
|
|
1301
|
+ if ( warmup_iter < 0 )
|
|
1302
|
+ warmup_iter = -warmup_iter;
|
|
1303
|
+ break;
|
|
1304
|
+
|
|
1305
|
+
|
1284
|
1306
|
/* break; */
|
1285
|
1307
|
|
1286
|
1308
|
default:
|
... |
... |
@@ -1369,6 +1391,9 @@ |
1369
|
1391
|
if ( max_iter )
|
1370
|
1392
|
printf( "number of iterations for each test: at most %d\n",
|
1371
|
1393
|
max_iter );
|
|
1394
|
+ printf( "\n"
|
|
1395
|
+ "number of iterations as warmup in all tests: %d\n",
|
|
1396
|
+ warmup_iter );
|
1372
|
1397
|
|
1373
|
1398
|
printf( "\n"
|
1374
|
1399
|
"executing tests:\n" );
|
... |
... |
@@ -1392,7 +1417,7 @@ |
1392
|
1417
|
case FT_BENCH_LOAD_GLYPH:
|
1393
|
1418
|
test.title = "Load";
|
1394
|
1419
|
test.bench = test_load;
|
1395
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1420
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1396
|
1421
|
|
1397
|
1422
|
if ( cache_man )
|
1398
|
1423
|
{
|
... |
... |
@@ -1402,7 +1427,7 @@ |
1402
|
1427
|
{
|
1403
|
1428
|
test.title = "Load (image cached)";
|
1404
|
1429
|
test.bench = test_image_cache;
|
1405
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1430
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1406
|
1431
|
}
|
1407
|
1432
|
|
1408
|
1433
|
if ( !FTC_SBitCache_New( cache_man, &sbit_cache ) )
|
... |
... |
@@ -1410,7 +1435,7 @@ |
1410
|
1435
|
test.title = "Load (sbit cached)";
|
1411
|
1436
|
test.bench = test_sbit_cache;
|
1412
|
1437
|
if ( size )
|
1413
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1438
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1414
|
1439
|
else
|
1415
|
1440
|
printf( " %-25s disabled (size = 0)\n", test.title );
|
1416
|
1441
|
}
|
... |
... |
@@ -1423,24 +1448,24 @@ |
1423
|
1448
|
test.title = "Load_Advances (Normal)";
|
1424
|
1449
|
test.bench = test_load_advances;
|
1425
|
1450
|
flags = FT_LOAD_DEFAULT;
|
1426
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1451
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1427
|
1452
|
|
1428
|
1453
|
test.title = "Load_Advances (Fast)";
|
1429
|
1454
|
test.bench = test_load_advances;
|
1430
|
1455
|
flags = FT_LOAD_TARGET_LIGHT;
|
1431
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1456
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1432
|
1457
|
|
1433
|
1458
|
test.title = "Load_Advances (Unscaled)";
|
1434
|
1459
|
test.bench = test_load_advances;
|
1435
|
1460
|
flags = FT_LOAD_NO_SCALE;
|
1436
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1461
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1437
|
1462
|
break;
|
1438
|
1463
|
|
1439
|
1464
|
case FT_BENCH_RENDER:
|
1440
|
1465
|
test.title = "Render";
|
1441
|
1466
|
test.bench = test_render;
|
1442
|
1467
|
if ( size )
|
1443
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1468
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1444
|
1469
|
else
|
1445
|
1470
|
printf( " %-25s disabled (size = 0)\n", test.title );
|
1446
|
1471
|
break;
|
... |
... |
@@ -1448,13 +1473,13 @@ |
1448
|
1473
|
case FT_BENCH_GET_GLYPH:
|
1449
|
1474
|
test.title = "Get_Glyph";
|
1450
|
1475
|
test.bench = test_get_glyph;
|
1451
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1476
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1452
|
1477
|
break;
|
1453
|
1478
|
|
1454
|
1479
|
case FT_BENCH_GET_CBOX:
|
1455
|
1480
|
test.title = "Get_CBox";
|
1456
|
1481
|
test.bench = test_get_cbox;
|
1457
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1482
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1458
|
1483
|
break;
|
1459
|
1484
|
|
1460
|
1485
|
case FT_BENCH_GET_BBOX:
|
... |
... |
@@ -1466,7 +1491,7 @@ |
1466
|
1491
|
|
1467
|
1492
|
/* rotate outlines by 30 degrees so that CBox and BBox differ */
|
1468
|
1493
|
FT_Set_Transform( face, &rot30, NULL );
|
1469
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1494
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1470
|
1495
|
FT_Set_Transform( face, NULL, NULL );
|
1471
|
1496
|
}
|
1472
|
1497
|
break;
|
... |
... |
@@ -1485,7 +1510,7 @@ |
1485
|
1510
|
test.title = "Get_Char_Index";
|
1486
|
1511
|
test.bench = test_get_char_index;
|
1487
|
1512
|
|
1488
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1513
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1489
|
1514
|
|
1490
|
1515
|
if ( cache_man &&
|
1491
|
1516
|
!FTC_CMapCache_New( cache_man, &cmap_cache ) )
|
... |
... |
@@ -1494,7 +1519,7 @@ |
1494
|
1519
|
|
1495
|
1520
|
test.title = "Get_Char_Index (cached)";
|
1496
|
1521
|
test.bench = test_cmap_cache;
|
1497
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1522
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1498
|
1523
|
}
|
1499
|
1524
|
|
1500
|
1525
|
free( charset.code );
|
... |
... |
@@ -1505,20 +1530,20 @@ |
1505
|
1530
|
case FT_BENCH_CMAP_ITER:
|
1506
|
1531
|
test.title = "Iterate CMap";
|
1507
|
1532
|
test.bench = test_cmap_iter;
|
1508
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1533
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1509
|
1534
|
break;
|
1510
|
1535
|
|
1511
|
1536
|
case FT_BENCH_NEW_FACE:
|
1512
|
1537
|
test.title = "New_Face";
|
1513
|
1538
|
test.bench = test_new_face;
|
1514
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1539
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1515
|
1540
|
break;
|
1516
|
1541
|
|
1517
|
1542
|
case FT_BENCH_EMBOLDEN:
|
1518
|
1543
|
test.title = "Embolden";
|
1519
|
1544
|
test.bench = test_embolden;
|
1520
|
1545
|
if ( size )
|
1521
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1546
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1522
|
1547
|
else
|
1523
|
1548
|
printf( " %-25s disabled (size = 0)\n", test.title );
|
1524
|
1549
|
break;
|
... |
... |
@@ -1527,7 +1552,7 @@ |
1527
|
1552
|
test.title = "Stroke";
|
1528
|
1553
|
test.bench = test_stroke;
|
1529
|
1554
|
if ( size )
|
1530
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1555
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1531
|
1556
|
else
|
1532
|
1557
|
printf( " %-25s disabled (size = 0)\n", test.title );
|
1533
|
1558
|
break;
|
... |
... |
@@ -1535,7 +1560,7 @@ |
1535
|
1560
|
case FT_BENCH_NEW_FACE_AND_LOAD_GLYPH:
|
1536
|
1561
|
test.title = "New_Face & load glyph(s)";
|
1537
|
1562
|
test.bench = test_new_face_and_load_glyph;
|
1538
|
|
- benchmark( face, &test, max_iter, max_time );
|
|
1563
|
+ benchmark( face, &test, max_iter, max_time, warmup_iter );
|
1539
|
1564
|
break;
|
1540
|
1565
|
}
|
1541
|
1566
|
}
|
|