Skip to content

Commit 90f62db

Browse files
committed
Minor code cleanup/optimization (logical operation son inetrval blocks)
1 parent e3cc082 commit 90f62db

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

src/bmfunc.h

+16-21
Original file line numberDiff line numberDiff line change
@@ -2168,43 +2168,38 @@ void gap_buff_op(T* BMRESTRICT dest,
21682168
*res = bitval;
21692169
++res;
21702170

2171+
T c1 = *cur1; T c2 = *cur2;
21712172
while (1)
21722173
{
21732174
bitval = (T) f(bitval1, bitval2);
21742175

21752176
// Check if GAP value changes and we need to
2176-
// start the next one.
2177-
if (bitval != bitval_prev)
2178-
{
2179-
++res;
2180-
bitval_prev = bitval;
2181-
}
2182-
2183-
if (*cur1 < *cur2)
2177+
// start the next one
2178+
//
2179+
res += (bitval != bitval_prev);
2180+
bitval_prev = bitval;
2181+
if (c1 < c2) // (*cur1 < *cur2)
21842182
{
2185-
*res = *cur1;
2186-
++cur1;
2183+
*res = c1;
2184+
++cur1; c1 = *cur1;
21872185
bitval1 ^= 1;
21882186
}
21892187
else // >=
21902188
{
2191-
*res = *cur2;
2192-
if (*cur2 < *cur1)
2189+
*res = c2;
2190+
if (c2 < c1) // (*cur2 < *cur1)
21932191
{
2194-
bitval2 ^= 1;
2192+
bitval2 ^= 1;
21952193
}
21962194
else // equal
21972195
{
2198-
if (*cur2 == (bm::gap_max_bits - 1))
2199-
{
2196+
if (c2 == (bm::gap_max_bits - 1))
22002197
break;
2201-
}
22022198

2203-
++cur1;
2204-
bitval1 ^= 1;
2205-
bitval2 ^= 1;
2199+
++cur1; c1 = *cur1;
2200+
bitval1 ^= 1; bitval2 ^= 1;
22062201
}
2207-
++cur2;
2202+
++cur2; c2 = *cur2;
22082203
}
22092204

22102205
} // while
@@ -4808,7 +4803,7 @@ gap_word_t* gap_operation_and(const gap_word_t* BMRESTRICT vect1,
48084803
gap_word_t* BMRESTRICT tmp_buf,
48094804
unsigned& dsize)
48104805
{
4811-
gap_buff_op(tmp_buf, vect1, 0, vect2, 0, and_op, dsize);
4806+
bm::gap_buff_op(tmp_buf, vect1, 0, vect2, 0, bm::and_op, dsize);
48124807
return tmp_buf;
48134808
}
48144809

0 commit comments

Comments
 (0)