mirror of
https://gitlab.freedesktop.org/freetype/freetype.git
synced 2026-05-08 10:28:01 +02:00
[ftbench] warmup added
added '-w N' argument (10 by default), runs N times of iterations before all tests.
This commit is contained in:
parent
e381b90efc
commit
8797ad3d53
1 changed files with 37 additions and 19 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue