X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=inline;f=lib%2Fsorter%2Fsort-test.c;h=e7d5873020d2bb527e2ac0efb312bbe5ff0b8e4f;hb=ca2850c6c8941faecb6e07be3379127330feb04a;hp=71c6a12ff75790b82bfeb6d2c216352fe94ea6fa;hpb=1f1ccf1786a62973de953e3f5c43392ad485770d;p=libucw.git diff --git a/lib/sorter/sort-test.c b/lib/sorter/sort-test.c index 71c6a12f..e7d58730 100644 --- a/lib/sorter/sort-test.c +++ b/lib/sorter/sort-test.c @@ -21,6 +21,13 @@ #include #include +/*** A hack for overriding radix-sorter configuration ***/ + +#ifdef FORCE_RADIX_BITS +#undef CONFIG_UCW_RADIX_SORTER_BITS +#define CONFIG_UCW_RADIX_SORTER_BITS FORCE_RADIX_BITS +#endif + /*** Time measurement ***/ static timestamp_t timer; @@ -390,7 +397,7 @@ static int s5_gen(struct s5_pair *p) { if (s5_j >= s5_N) { - if (s5_i >= s5_N-1) + if (!s5_N || s5_i >= s5_N-1) return 0; s5_j = 0; s5_i++; @@ -513,6 +520,8 @@ test_graph(uns mode, u64 size) uns N = 3; while ((u64)N*(N+2)*4 < size) N = nextprime(N); + if (!size) + N = 0; msg(L_INFO, ">>> Graph%s (N=%u)", (mode ? "" : " with custom presorting"), N); s5_N = N; s5_K = N/4*3; @@ -663,9 +672,20 @@ main(int argc, char **argv) goto usage; break; case 't': - t = atol(optarg); - if (t >= TMAX) - goto usage; + { + char *w[32]; + int f = sepsplit(optarg, ',', w, ARRAY_SIZE(w)); + if (f < 0) + goto usage; + t = 0; + for (int i=0; i= TMAX) + goto usage; + t |= 1 << j; + } + } break; case 'v': sorter_trace++; @@ -678,10 +698,8 @@ main(int argc, char **argv) if (optind != argc) goto usage; - if (t != ~0U) - run_test(t, size); - else - for (uns i=0; i