@@ -497,13 +497,12 @@ get_max_ele_idx_in_dbl_ary (double *array, int size)
497
497
498
498
499
499
/**
500
- * @param size 分组大小
501
- * @param whole_sources 被分组的整体
502
- * @param whole_speeds 被分组的整体的速度值记录
503
- * @param grp_cursor_in_whole 分组在整体的下标中所处的位置
500
+ * @param sources 所有待测源
501
+ * @param size 待测源的数量
502
+ * @param[out] speed_records 速度值记录
504
503
*/
505
504
void
506
- measure_speed_in_group ( int size , SourceInfo whole_sources [], double whole_speeds [], int grp_cursor_in_whole )
505
+ measure_speed_for_every_source ( SourceInfo sources [], int size , double speed_records [] )
507
506
{
508
507
bool get_measured [size ]; /* 是否测速了 */
509
508
int get_measured_n = 0 ; /* 测速了几个 */
@@ -515,7 +514,7 @@ measure_speed_in_group (int size, SourceInfo whole_sources[], double whole_speed
515
514
516
515
for (int i = 0 ; i < size ; i ++ )
517
516
{
518
- SourceInfo src = whole_sources [ i + grp_cursor_in_whole ];
517
+ SourceInfo src = sources [ i ];
519
518
const char * url = src .mirror -> __bigfile_url ;
520
519
if (NULL == url )
521
520
{
@@ -530,7 +529,7 @@ measure_speed_in_group (int size, SourceInfo whole_sources[], double whole_speed
530
529
chsrc_warn (xy_strjoin (3 , msg1 , src .mirror -> code , msg2 ));
531
530
speed = 0 ;
532
531
}
533
- whole_speeds [ i + grp_cursor_in_whole ] = speed ;
532
+ speed_records [ i ] = speed ;
534
533
get_measured [i ] = false;
535
534
measure_msgs [i ] = NULL ;
536
535
}
@@ -565,15 +564,15 @@ measure_speed_in_group (int size, SourceInfo whole_sources[], double whole_speed
565
564
{
566
565
char * curl_result = measure_speed_for_url (url_ );
567
566
double speed = parse_and_say_curl_result (curl_result );
568
- whole_speeds [ i + grp_cursor_in_whole ] = speed ;
567
+ speed_records [ i ] = speed ;
569
568
}
570
569
}
571
570
}
572
571
573
572
574
573
if (CliOpt_Parallel )
575
574
{
576
- /* 一组汇总 */
575
+ /* 汇总 */
577
576
char * * curl_results = xy_malloc0 (sizeof (char * ) * size );
578
577
for (int i = 0 ; i < size ; i ++ )
579
578
{
@@ -590,7 +589,7 @@ measure_speed_in_group (int size, SourceInfo whole_sources[], double whole_speed
590
589
{
591
590
printf ("%s" , measure_msgs [i ]);
592
591
double speed = parse_and_say_curl_result (curl_results [i ]);
593
- whole_speeds [ i + grp_cursor_in_whole ] = speed ;
592
+ speed_records [ i ] = speed ;
594
593
}
595
594
}
596
595
/* 汇总结束 */
@@ -604,9 +603,9 @@ measure_speed_in_group (int size, SourceInfo whole_sources[], double whole_speed
604
603
*
605
604
* @translation Done
606
605
*/
607
- #define auto_select (s ) auto_select_ (s##_sources, s##_sources_n, (char*)#s+3)
606
+ #define auto_select_mirror (s ) select_mirror_autoly (s##_sources, s##_sources_n, (char*)#s+3)
608
607
int
609
- auto_select_ (SourceInfo * sources , size_t size , const char * target_name )
608
+ select_mirror_autoly (SourceInfo * sources , size_t size , const char * target_name )
610
609
{
611
610
{
612
611
char * msg = NULL ;
@@ -649,36 +648,16 @@ auto_select_ (SourceInfo *sources, size_t size, const char *target_name)
649
648
650
649
/* 总测速记录值 */
651
650
double speed_records [size ];
652
-
653
- // 跳过 upstream
654
- speed_records [0 ] = 0.0 ;
655
- int grp_cursor = 1 ;
656
-
657
- if (CliOpt_Parallel )
658
- {
659
- // 跳过 upstream
660
- int cpu_cores = chsrc_get_cpucore () ;
661
- int group_size = (size - 1 ) > cpu_cores ? cpu_cores : (size - 1 );
662
- int ngroup = (size - 1 ) / group_size ;
663
- int rest = (size - 1 ) % group_size ;
664
-
665
- for (int i = 0 ; i < ngroup ; i ++ , grp_cursor += group_size )
666
- measure_speed_in_group (group_size , sources , speed_records , grp_cursor );
667
- if (rest > 0 )
668
- measure_speed_in_group (rest , sources , speed_records , grp_cursor );
669
- }
670
- else
671
- {
672
- measure_speed_in_group (size - 1 , sources , speed_records , grp_cursor );
673
- }
674
-
651
+ measure_speed_for_every_source (sources , size , speed_records );
675
652
say ("" );
676
653
677
654
/* DEBUG */
678
- // for (int i=0; i<size; i++)
679
- // {
680
- // printf ("speed_records[%d] = %f\n", i, speed_records[i]);
681
- // }
655
+ /*
656
+ for (int i=0; i<size; i++)
657
+ {
658
+ printf ("speed_records[%d] = %f\n", i, speed_records[i]);
659
+ }
660
+ */
682
661
683
662
int fast_idx = get_max_ele_idx_in_dbl_ary (speed_records , size );
684
663
@@ -705,7 +684,7 @@ auto_select_ (SourceInfo *sources, size_t size, const char *target_name)
705
684
706
685
707
686
#define use_specific_mirror_or_auto_select (input , s ) \
708
- (NULL!=(input)) ? find_mirror(s, input) : auto_select (s)
687
+ (NULL!=(input)) ? find_mirror(s, input) : auto_select_mirror (s)
709
688
710
689
711
690
0 commit comments