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

Reply via email to