Changeset: 6a406bfa0027 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6a406bfa0027 Modified Files: gdk/gdk_analytic_func.c sql/backends/monet5/sql_rank.c Branch: window-tunning Log Message:
Reduced number of cases for count and updated number of arguments check diffs (truncated from 405 to 300 lines): diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c --- a/gdk/gdk_analytic_func.c +++ b/gdk/gdk_analytic_func.c @@ -1070,7 +1070,7 @@ ANALYTICAL_MIN_MAX(min, MIN, >) ANALYTICAL_MIN_MAX(max, MAX, <) /* Counting no nils for fixed sizes */ -#define ANALYTICAL_COUNT_NO_NIL_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE) \ +#define ANALYTICAL_COUNT_FIXED_UNBOUNDED_TILL_CURRENT_ROW(TPE) \ do { \ curval = 0; \ if (count_all) { \ @@ -1098,7 +1098,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <) } \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \ +#define ANALYTICAL_COUNT_FIXED_CURRENT_ROW_TILL_UNBOUNDED(TPE) \ do { \ curval = 0; \ if (count_all) { \ @@ -1129,7 +1129,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <) k = i; \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_FIXED_ALL_ROWS(TPE) \ +#define ANALYTICAL_COUNT_FIXED_ALL_ROWS(TPE) \ do { \ if (count_all) { \ curval = i - k; \ @@ -1144,7 +1144,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <) } \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_FIXED_CURRENT_ROW(TPE) \ +#define ANALYTICAL_COUNT_FIXED_CURRENT_ROW(TPE) \ do { \ if (count_all) { \ for (; k < i; k++) \ @@ -1155,7 +1155,7 @@ ANALYTICAL_MIN_MAX(max, MAX, <) } \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_FIXED_OTHERS(TPE) \ +#define ANALYTICAL_COUNT_FIXED_OTHERS(TPE) \ do { \ if (count_all) { \ for (; k < i; k++) \ @@ -1174,240 +1174,163 @@ ANALYTICAL_MIN_MAX(max, MAX, <) } while (0) /* Counting no nils for other types */ -#define ANALYTICAL_COUNT_NO_NIL_OTHERS_UNBOUNDED_TILL_CURRENT_ROW \ +#define ANALYTICAL_COUNT_OTHERS_UNBOUNDED_TILL_CURRENT_ROW \ do { \ curval = 0; \ if (count_all) { \ - if (isvarsized) { \ - for (; k < i; ) { \ - j = k++; \ + for (; k < i; ) { \ + j = k++; \ + curval++; \ + while (k < i && !op[k]) { \ curval++; \ - while (k < i && !op[k]) { \ - curval++; \ - k++; \ - } \ - for (; j < k; j++) \ - rb[j] = curval; \ + k++; \ } \ - } else { \ - for (; k < i; ) { \ - j = k++; \ - curval++; \ - while (k < i && !op[k]) { \ - curval++; \ - k++; \ - } \ - for (; j < k; j++) \ - rb[j] = curval; \ - } \ + for (; j < k; j++) \ + rb[j] = curval; \ } \ } else { \ - if (isvarsized) { \ - for (; k < i; ) { \ - j = k++; \ - const void *v = base + ((const var_t *) bheap)[j]; \ - curval += cmp(v, nil) != 0; \ - while (k < i && !op[k]) { \ - curval += cmp(base + ((const var_t *) bheap)[k], nil) != 0; \ - k++; \ - } \ - for (; j < k; j++) \ - rb[j] = curval; \ + for (; k < i; ) { \ + j = k++; \ + const void *v = BUNtail(bpi, j); \ + curval += cmp(v, nil) != 0; \ + while (k < i && !op[k]) { \ + curval += cmp(BUNtail(bpi, k), nil) != 0; \ + k++; \ } \ - } else { \ - for (; k < i; ) { \ - j = k++; \ - const void *v = BUNtail(bpi, j); \ - curval += cmp(v, nil) != 0; \ - while (k < i && !op[k]) { \ - curval += cmp(BUNtail(bpi, k), nil) != 0; \ - k++; \ - } \ - for (; j < k; j++) \ - rb[j] = curval; \ - } \ + for (; j < k; j++) \ + rb[j] = curval; \ } \ } \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_OTHERS_CURRENT_ROW_TILL_UNBOUNDED \ +#define ANALYTICAL_COUNT_OTHERS_CURRENT_ROW_TILL_UNBOUNDED \ do { \ curval = 0; \ if (count_all) { \ - if (isvarsized) { \ - for (j = i - 1; j >= k; ) { \ - l = j--; \ + for (j = i - 1; j >= k; ) { \ + l = j--; \ + curval++; \ + while (j >= k && !op[j]) { \ curval++; \ - while (j >= k && !op[j]) { \ - curval++; \ - j--; \ - } \ - m = MAX(k, j); \ - for (; l >= m; l--) \ - rb[l] = curval; \ - } \ - } else { \ - for (j = i - 1; j >= k; ) { \ - l = j--; \ - curval++; \ - while (j >= k && !op[j]) { \ - curval++; \ - j--; \ - } \ - m = MAX(k, j); \ - for (; l >= m; l--) \ - rb[l] = curval; \ - } \ - } \ + j--; \ + } \ + m = MAX(k, j); \ + for (; l >= m; l--) \ + rb[l] = curval; \ + } \ } else { \ - if (isvarsized) { \ - for (j = i - 1; j >= k; ) { \ - l = j--; \ - const void *v = base + ((const var_t *) bheap)[l]; \ - curval += cmp(v, nil) != 0; \ - while (j >= k && !op[j]) { \ - curval += cmp(base + ((const var_t *) bheap)[j], nil) != 0; \ - j--; \ - } \ - m = MAX(k, j); \ - for (; l >= m; l--) \ - rb[l] = curval; \ - } \ - } else { \ - for (j = i - 1; j >= k; ) { \ - l = j--; \ - const void *v = Tloc(b, l); \ - curval += cmp(v, nil) != 0; \ - while (j >= k && !op[j]) { \ - curval += cmp(BUNtail(bpi, j), nil) != 0; \ - j--; \ - } \ - m = MAX(k, j); \ - for (; l >= m; l--) \ - rb[l] = curval; \ - } \ - } \ - } \ + for (j = i - 1; j >= k; ) { \ + l = j--; \ + const void *v = Tloc(b, l); \ + curval += cmp(v, nil) != 0; \ + while (j >= k && !op[j]) { \ + curval += cmp(BUNtail(bpi, j), nil) != 0; \ + j--; \ + } \ + m = MAX(k, j); \ + for (; l >= m; l--) \ + rb[l] = curval; \ + } \ + } \ k = i; \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_OTHERS_ALL_ROWS \ +#define ANALYTICAL_COUNT_OTHERS_ALL_ROWS \ do { \ curval = 0; \ if (count_all) { \ curval = i - k; \ } else { \ - if (isvarsized) { \ - for (; j < i; j++) \ - curval += cmp(nil, base + ((const var_t *) bheap)[j]) != 0; \ - } else { \ - for (; j < i; j++) \ - curval += cmp(BUNtail(bpi, j), nil) != 0; \ - } \ + for (; j < i; j++) \ + curval += cmp(BUNtail(bpi, j), nil) != 0; \ } \ for (; k < i; k++) \ rb[k] = curval; \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_OTHERS_CURRENT_ROW \ +#define ANALYTICAL_COUNT_OTHERS_CURRENT_ROW \ do { \ if (count_all) { \ for (; k < i; k++) \ rb[k] = 1; \ } else { \ - if (isvarsized) { \ - for (; k < i; k++) \ - rb[k] = cmp(nil, base + ((const var_t *) bheap)[k]) != 0; \ - } else { \ - for (; k < i; k++) \ - rb[k] = cmp(BUNtail(bpi, k), nil) != 0; \ - } \ + for (; k < i; k++) \ + rb[k] = cmp(BUNtail(bpi, k), nil) != 0; \ } \ } while (0) -#define ANALYTICAL_COUNT_NO_NIL_OTHERS_OTHERS \ +#define ANALYTICAL_COUNT_OTHERS_OTHERS \ do { \ if (count_all) { \ for (; k < i; k++) \ rb[k] = (end[k] > start[k]) ? (end[k] - start[k]) : 0; \ } else { \ curval = 0; \ - if (isvarsized) { \ - for (; k < i; k++) { \ - j = start[k]; \ - l = end[k]; \ - for (; j < l; j++) \ - curval += cmp(nil, base + ((const var_t *) bheap)[j]) != 0; \ - rb[k] = curval; \ - curval = 0; \ - } \ - } else { \ - for (; k < i; k++) { \ - j = start[k]; \ - l = end[k]; \ - for (; j < l; j++) \ - curval += cmp(BUNtail(bpi, j), nil) != 0; \ - rb[k] = curval; \ - curval = 0; \ - } \ + for (; k < i; k++) { \ + j = start[k]; \ + l = end[k]; \ + for (; j < l; j++) \ + curval += cmp(BUNtail(bpi, j), nil) != 0; \ + rb[k] = curval; \ + curval = 0; \ } \ } \ } while (0) /* Now do the count analytic function branches */ -#define ANALYTICAL_COUNT_NO_NIL_FIXED_PARTITIONS(TPE, IMP) \ +#define ANALYTICAL_COUNT_FIXED_PARTITIONS(TPE, IMP) \ do { \ TPE *bp = (TPE*) bheap; \ if (p) { \ for (; i < cnt; i++) { \ if (np[i]) \ - ANALYTICAL_COUNT_NO_NIL_FIXED_##IMP(TPE); \ + ANALYTICAL_COUNT_FIXED_##IMP(TPE); \ } \ } \ i = cnt; \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list