Changeset: b4b727e5ef14 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b4b727e5ef14 Modified Files: gdk/gdk_select.c Branch: Oct2014 Log Message:
Since buninsfix already uses if, we might as well not use predication.
In the fullscan_str version this actually makes a difference, so
presumably in the other cases as well.
diffs (184 lines):
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -427,11 +427,13 @@ do {
\
while (p < q) { \
CAND; \
v = src[o-off]; \
- buninsfix(bn, dst, cnt, o, \
- (BUN) ((dbl) cnt / (dbl) (p-r) \
- * (dbl) (q-p) * 1.1 + 1024), \
- BATcapacity(bn) + q - p, BUN_NONE); \
- cnt += (TEST); \
+ if (TEST) { \
+ buninsfix(bn, dst, cnt, o, \
+ (BUN) ((dbl) cnt / (dbl) (p-r) \
+ * (dbl) (q-p) * 1.1 + 1024), \
+ BATcapacity(bn) + q - p, BUN_NONE); \
+ cnt++; \
+ } \
p++; \
} \
} else { \
@@ -579,11 +581,13 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
while (p < q) {
o = *candlist++;
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((*cmp)(tl, v) == 0);
+ if ((*cmp)(tl, v) == 0) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
} else if (anti) {
@@ -595,17 +599,19 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
while (p < q) {
o = *candlist++;
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((lval &&
- ((c = (*cmp)(tl, v)) > 0 ||
- (!li && c == 0))) ||
- (hval &&
- ((c = (*cmp)(th, v)) < 0 ||
- (!hi && c == 0)))));
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((lval &&
+ ((c = (*cmp)(tl, v)) > 0 ||
+ (!li && c == 0))) ||
+ (hval &&
+ ((c = (*cmp)(th, v)) < 0 ||
+ (!hi && c == 0))))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
} else {
@@ -617,17 +623,19 @@ candscan_any (BAT *b, BAT *s, BAT *bn, c
while (p < q) {
o = *candlist++;
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((!lval ||
- (c = cmp(tl, v)) < 0 ||
- (li && c == 0)) &&
- (!hval ||
- (c = cmp(th, v)) > 0 ||
- (hi && c == 0))));
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((!lval ||
+ (c = cmp(tl, v)) < 0 ||
+ (li && c == 0)) &&
+ (!hval ||
+ (c = cmp(th, v)) > 0 ||
+ (hi && c == 0)))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
}
@@ -661,11 +669,13 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
while (p < q) {
o = (oid)(p + off);
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((*cmp)(tl, v) == 0);
+ if ((*cmp)(tl, v) == 0) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
} else if (anti) {
@@ -677,17 +687,19 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
while (p < q) {
o = (oid)(p + off);
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((lval &&
- ((c = (*cmp)(tl, v)) > 0 ||
- (!li && c == 0))) ||
- (hval &&
- ((c = (*cmp)(th, v)) < 0 ||
- (!hi && c == 0)))));
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((lval &&
+ ((c = (*cmp)(tl, v)) > 0 ||
+ (!li && c == 0))) ||
+ (hval &&
+ ((c = (*cmp)(th, v)) < 0 ||
+ (!hi && c == 0))))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
} else {
@@ -699,17 +711,19 @@ fullscan_any(BAT *b, BAT *s, BAT *bn, co
while (p < q) {
o = (oid)(p + off);
v = BUNtail(bi,(BUN)(o-off));
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p-r)
- * (dbl) (q-p) * 1.1 + 1024),
- BATcapacity(bn) + q - p, BUN_NONE);
- cnt += ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((!lval ||
- (c = cmp(tl, v)) < 0 ||
- (li && c == 0)) &&
- (!hval ||
- (c = cmp(th, v)) > 0 ||
- (hi && c == 0))));
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((!lval ||
+ (c = cmp(tl, v)) < 0 ||
+ (li && c == 0)) &&
+ (!hval ||
+ (c = cmp(th, v)) > 0 ||
+ (hi && c == 0)))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p-r)
+ * (dbl) (q-p) * 1.1 + 1024),
+ BATcapacity(bn) + q - p, BUN_NONE);
+ cnt++;
+ }
p++;
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
