Changeset: 8c7b9598349a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c7b9598349a Modified Files: gdk/gdk_calc.c gdk/gdk_calc_compare.h Branch: default Log Message:
Extract constants from loops (just to make sure they are always extracted). I did run the testweb twice. diffs (truncated from 1337 to 300 lines): diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c --- a/gdk/gdk_calc.c +++ b/gdk/gdk_calc.c @@ -87,8 +87,8 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ const TYPE1 *restrict src = (const TYPE1 *) Tloc(b, 0); \ TYPE2 *restrict dst = (TYPE2 *) Tloc(bn, 0); \ - for (i = 0; i < ci.ncand; i++) { \ - x = canditer_next(&ci) - b->hseqbase; \ + for (i = 0; i < ncand; i++) { \ + x = canditer_next(&ci) - bhseqbase; \ if (is_##TYPE1##_nil(src[x])) { \ nils++; \ dst[i] = TYPE2##_nil; \ @@ -102,8 +102,8 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ const TYPE1 *restrict src = (const TYPE1 *) Tloc(b, 0); \ TYPE2 *restrict dst = (TYPE2 *) Tloc(bn, 0); \ - for (i = 0; i < ci.ncand; i++) { \ - x = canditer_next(&ci) - b->hseqbase; \ + for (i = 0; i < ncand; i++) { \ + x = canditer_next(&ci) - bhseqbase; \ if (is_##TYPE1##_nil(src[x])) { \ nils++; \ dst[i] = TYPE2##_nil; \ @@ -120,7 +120,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -135,7 +135,7 @@ checkbats(BAT *b1, BAT *b2, const char * } \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -156,7 +156,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -173,7 +173,7 @@ checkbats(BAT *b1, BAT *b2, const char * } \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -198,7 +198,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -212,7 +212,7 @@ checkbats(BAT *b1, BAT *b2, const char * } \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -232,7 +232,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -242,7 +242,7 @@ checkbats(BAT *b1, BAT *b2, const char * ((TYPE3 *) dst)[k] = FUNC(v1, v2); \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -258,7 +258,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -270,7 +270,7 @@ checkbats(BAT *b1, BAT *b2, const char * on_overflow; \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -288,7 +288,7 @@ checkbats(BAT *b1, BAT *b2, const char * do { \ i = j = 0; \ if (ci1->tpe == cand_dense && ci2->tpe == cand_dense) { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next_dense(ci1) - candoff1; \ if (incr2) \ @@ -314,7 +314,7 @@ checkbats(BAT *b1, BAT *b2, const char * } \ } \ } else { \ - for (k = 0; k < ci1->ncand; k++) { \ + for (k = 0; k < ncand; k++) { \ if (incr1) \ i = canditer_next(ci1) - candoff1; \ if (incr2) \ @@ -355,7 +355,7 @@ BATcalcnot(BAT *b, BAT *s) BAT *bn; BUN nils = 0; BUN i, ncand; - oid x; + oid x, bhseqbase = b->hseqbase; struct canditer ci; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -387,8 +387,8 @@ BATcalcnot(BAT *b, BAT *s) if (ci.ncand % 32 != 0) dst[ci.ncand / 32] &= (1U << (ci.ncand % 32)) - 1; } else { - for (i = 0; i < ci.ncand; i++) { - x = canditer_next(&ci) - b->hseqbase; + for (i = 0; i < ncand; i++) { + x = canditer_next(&ci) - bhseqbase; mskSetVal(bn, i, !mskGetVal(b, x)); } } @@ -529,7 +529,7 @@ BATcalcnegate(BAT *b, BAT *s) BAT *bn; BUN nils = 0; BUN i, ncand; - oid x; + oid x, bhseqbase = b->hseqbase; struct canditer ci; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -657,7 +657,7 @@ BATcalcabsolute(BAT *b, BAT *s) BAT *bn; BUN nils= 0; BUN i, ncand; - oid x; + oid x, bhseqbase = b->hseqbase; struct canditer ci; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -789,7 +789,7 @@ BATcalciszero(BAT *b, BAT *s) BAT *bn; BUN nils = 0; BUN i, ncand; - oid x; + oid x, bhseqbase = b->hseqbase; struct canditer ci; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -919,7 +919,7 @@ BATcalcsign(BAT *b, BAT *s) BAT *bn; BUN nils = 0; BUN i, ncand; - oid x; + oid x, bhseqbase = b->hseqbase; struct canditer ci; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -1046,8 +1046,8 @@ VARcalcsign(ValPtr ret, const ValRecord #define ISNIL_TYPE(TYPE, NOTNIL) \ do { \ const TYPE *restrict src = (const TYPE *) Tloc(b, 0); \ - for (i = 0; i < ci.ncand; i++) { \ - x = canditer_next(&ci) - b->hseqbase; \ + for (i = 0; i < ncand; i++) { \ + x = canditer_next(&ci) - bhseqbase; \ dst[i] = (bit) (is_##TYPE##_nil(src[x]) ^ NOTNIL); \ } \ } while (0) @@ -1062,6 +1062,7 @@ BATcalcisnil_implementation(BAT *b, BAT struct canditer ci; bit *restrict dst; BUN nils = 0; + oid bhseqbase = b->hseqbase; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -1118,8 +1119,8 @@ BATcalcisnil_implementation(BAT *b, BAT int (*atomcmp)(const void *, const void *) = ATOMcompare(b->ttype); const void *nil = ATOMnilptr(b->ttype); - for (i = 0; i < ci.ncand; i++) { - x = canditer_next(&ci) - b->hseqbase; + for (i = 0; i < ncand; i++) { + x = canditer_next(&ci) - bhseqbase; dst[i] = (bit) (((*atomcmp)(BUNtail(bi, x), nil) == 0) ^ notnil); } break; @@ -1182,8 +1183,8 @@ VARcalcisnotnil(ValPtr ret, const ValRec do { \ TYPE *tb1 = Tloc(b1, 0), *tb2 = Tloc(b2, 0), *restrict tbn = Tloc(bn, 0); \ for (BUN i = 0; i < ncand; i++) { \ - oid x1 = canditer_next(&ci1) - b1->hseqbase; \ - oid x2 = canditer_next(&ci2) - b2->hseqbase; \ + oid x1 = canditer_next(&ci1) - b1hseqbase; \ + oid x2 = canditer_next(&ci2) - b2hseqbase; \ TYPE p1 = tb1[x1], p2 = tb2[x2]; \ if (is_##TYPE##_nil(p1) || is_##TYPE##_nil(p2)) { \ nils = true; \ @@ -1202,6 +1203,7 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA bool nils = false; BUN ncand; struct canditer ci1, ci2; + oid b1hseqbase = b1->hseqbase, b2hseqbase = b2->hseqbase; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -1253,8 +1255,8 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA int (*cmp)(const void *, const void *) = ATOMcompare(b1->ttype); for (BUN i = 0; i < ncand; i++) { - oid x1 = canditer_next(&ci1) - b1->hseqbase; - oid x2 = canditer_next(&ci2) - b2->hseqbase; + oid x1 = canditer_next(&ci1) - b1hseqbase; + oid x2 = canditer_next(&ci2) - b2hseqbase; const void *p1 = BUNtail(b1i, x1); const void *p2 = BUNtail(b2i, x2); if (cmp(p1, nil) == 0 || cmp(p2, nil) == 0) { @@ -1301,8 +1303,8 @@ BATcalcmin(BAT *b1, BAT *b2, BAT *s1, BA do { \ TYPE *tb1 = Tloc(b1, 0), *tb2 = Tloc(b2, 0), *restrict tbn = Tloc(bn, 0); \ for (BUN i = 0; i < ncand; i++) { \ - oid x1 = canditer_next(&ci1) - b1->hseqbase; \ - oid x2 = canditer_next(&ci2) - b2->hseqbase; \ + oid x1 = canditer_next(&ci1) - b1hseqbase; \ + oid x2 = canditer_next(&ci2) - b2hseqbase; \ TYPE p1 = tb1[x1], p2 = tb2[x2]; \ if (is_##TYPE##_nil(p1)) { \ if (is_##TYPE##_nil(p2)) { \ @@ -1325,6 +1327,7 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT bool nils = false; BUN ncand; struct canditer ci1, ci2; + oid b1hseqbase = b1->hseqbase, b2hseqbase = b2->hseqbase; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -1376,8 +1379,8 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT int (*cmp)(const void *, const void *) = ATOMcompare(b1->ttype); for (BUN i = 0; i < ncand; i++) { - oid x1 = canditer_next(&ci1) - b1->hseqbase; - oid x2 = canditer_next(&ci2) - b2->hseqbase; + oid x1 = canditer_next(&ci1) - b1hseqbase; + oid x2 = canditer_next(&ci2) - b2hseqbase; const void *p1 = BUNtail(b1i, x1); const void *p2 = BUNtail(b2i, x2); if (cmp(p1, nil) == 0) { @@ -1428,7 +1431,7 @@ BATcalcmin_no_nil(BAT *b1, BAT *b2, BAT do { \ TYPE *restrict tb = Tloc(b, 0), *restrict tbn = Tloc(bn, 0), pp2 = *(TYPE*) p2; \ for (BUN i = 0; i < ncand; i++) { \ - oid x = canditer_next(&ci) - b->hseqbase; \ + oid x = canditer_next(&ci) - bhseqbase; \ TYPE p1 = tb[x]; \ if (is_##TYPE##_nil(p1)) { \ nils = true; \ @@ -1450,6 +1453,7 @@ BATcalcmincst(BAT *b, const ValRecord *v const void *p2; const void *restrict nil = ATOMnilptr(b->ttype); int (*cmp)(const void *, const void *) = ATOMcompare(b->ttype); + oid bhseqbase = b->hseqbase; TRC_DEBUG_IF(ALGO) t0 = GDKusec(); @@ -1498,7 +1502,7 @@ BATcalcmincst(BAT *b, const ValRecord *v BATiter bi = bat_iterator(b); for (BUN i = 0; i < ncand; i++) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list