static void single_run (void) { const int max_channels = 10 ; int k ; printf ("\n CPU name : %s\n", get_cpu_name ()) ; puts ( "\n" " Converter Channels Duration Throughput\n" " ---------------------------------------------------------------------" ) ; for (k = 1 ; k <= max_channels / 2 ; k++) throughput_test (SRC_SINC_FASTEST, k, 0) ; puts ("") ; for (k = 1 ; k <= max_channels / 2 ; k++) throughput_test (SRC_SINC_MEDIUM_QUALITY, k, 0) ; puts ("") ; for (k = 1 ; k <= max_channels ; k++) throughput_test (SRC_SINC_BEST_QUALITY, k, 0) ; puts ("") ; return ; } /* single_run */
void main_test(){ //Initialize parameters to be tested uint32_t time_interval[] = {80,75,70,65,60,57,55,52,50,47,45,42,40,37,35,32,30,27,25,20,15,10}; uint32_t key_len[5] = {4,8,16,32,64}; uint32_t value_len[9] = {8,16,32,64,128,256,512,1024}; uint32_t hash[2] = {0,1}; double ops_comb[4][2] = { {0.6,0.05}, {0.05,0.6}, {0.6,0.35}, {0.35,0.6} }; //Set default values of these parameters const uint32_t normal_key = 16; const uint32_t normal_value = 128; const uint32_t normal_hash = 1; const double normal_get = 0.6; const double normal_set = 0.05; const uint32_t time_interval_list_len = (uint32_t)(sizeof(time_interval)/sizeof(uint32_t)); //Test each input bundle for (uint32_t i=0;i<5;i++){ throughput_test(time_interval, time_interval_list_len, key_len[i], normal_value, normal_hash, normal_get,normal_set); } for (uint32_t i=0;i<9;i++){ throughput_test(time_interval, time_interval_list_len, normal_key, value_len[i], normal_hash, normal_get,normal_set); } for (uint32_t i=0;i<2;i++){ throughput_test(time_interval, time_interval_list_len, normal_key, normal_value, hash[i], normal_get,normal_set); } for (uint32_t i=0;i<4;i++){ throughput_test(time_interval, time_interval_list_len, normal_key, normal_value, normal_hash, ops_comb[i][0],ops_comb[i][1]); } }
static void multi_run (int run_count) { int k, ch ; printf ("\n CPU name : %s\n", get_cpu_name ()) ; puts ( "\n" " Converter Channels Duration Throughput Best Throughput\n" " ----------------------------------------------------------------------------------------" ) ; for (ch = 1 ; ch <= 5 ; ch++) { long sinc_fastest = 0, sinc_medium = 0, sinc_best = 0 ; for (k = 0 ; k < run_count ; k++) { sinc_fastest = throughput_test (SRC_SINC_FASTEST, ch, sinc_fastest) ; sinc_medium = throughput_test (SRC_SINC_MEDIUM_QUALITY, ch, sinc_medium) ; sinc_best = throughput_test (SRC_SINC_BEST_QUALITY, ch, sinc_best) ; puts ("") ; /* Let the CPU cool down. We might be running on a laptop. */ sleep (10) ; } ; puts ( "\n" " Converter Best Throughput\n" " ------------------------------------------------" ) ; printf (" %-30s %10ld\n", src_get_name (SRC_SINC_FASTEST), sinc_fastest) ; printf (" %-30s %10ld\n", src_get_name (SRC_SINC_MEDIUM_QUALITY), sinc_medium) ; printf (" %-30s %10ld\n", src_get_name (SRC_SINC_BEST_QUALITY), sinc_best) ; } ; puts ("") ; } /* multi_run */