Compare commits

...

3 Commits

Author SHA1 Message Date
niu niu
cd3395c2bf
Merge e2774d59aa into fb54d8b549 2023-05-22 17:40:06 -05:00
niugiaogiao
e2774d59aa Change Comment 2023-04-01 13:05:24 +08:00
niugiaogiao
e164847df4 Change algorithm 2023-04-01 12:30:00 +08:00
2 changed files with 13 additions and 5 deletions

View File

@ -11,7 +11,9 @@ import com.twitter.search.common.util.io.flushable.DataSerializer;
import com.twitter.search.common.util.io.flushable.FlushInfo; import com.twitter.search.common.util.io.flushable.FlushInfo;
import com.twitter.search.common.util.io.flushable.Flushable; import com.twitter.search.common.util.io.flushable.Flushable;
// Modeled after TwitterCharBlockPool, with a lot of simplification. /**
* Modeled after TwitterCharBlockPool, with a lot of simplification.
*/
public class IntBlockPool implements Flushable { public class IntBlockPool implements Flushable {
private static final SearchLongGauge INT_BLOCK_POOL_MAX_LENGTH = private static final SearchLongGauge INT_BLOCK_POOL_MAX_LENGTH =
SearchLongGauge.export("twitter_int_block_pool_max_size"); SearchLongGauge.export("twitter_int_block_pool_max_size");
@ -109,12 +111,16 @@ public class IntBlockPool implements Flushable {
return (currBlockIndex << BLOCK_SHIFT) + currBlockOffset - 1; return (currBlockIndex << BLOCK_SHIFT) + currBlockOffset - 1;
} }
// Returns number of ints in this blocks /**
* Returns number of ints in this blocks
*/
public int length() { public int length() {
return currBlockOffset + currBlockIndex * BLOCK_SIZE; return currBlockOffset + currBlockIndex * BLOCK_SIZE;
} }
// Gets an int from the specified index. /**
* Gets an int from the specified index.
*/
public final int get(int index) { public final int get(int index) {
return getBlock(index)[getOffsetInBlock(index)]; return getBlock(index)[getOffsetInBlock(index)];
} }
@ -132,7 +138,9 @@ public class IntBlockPool implements Flushable {
return pool.blocks[blockIndex]; return pool.blocks[blockIndex];
} }
// Sets an int value at the specified index. /**
* Sets an int value at the specified index.
*/
public void set(int index, int value) { public void set(int index, int value) {
final int blockIndex = index >>> BLOCK_SHIFT; final int blockIndex = index >>> BLOCK_SHIFT;
final int offset = index & BLOCK_MASK; final int offset = index & BLOCK_MASK;

View File

@ -21,7 +21,7 @@ public abstract class SearchSortUtils {
int high = end; int high = end;
Preconditions.checkState(comparator.compare(low, key) <= comparator.compare(high, key)); Preconditions.checkState(comparator.compare(low, key) <= comparator.compare(high, key));
while (low <= high) { while (low <= high) {
int mid = (low + high) >>> 1; int mid = (low & high) + ((low ^ high) >>> 1);
int result = comparator.compare(mid, key); int result = comparator.compare(mid, key);
if (result < 0) { if (result < 0) {
low = mid + 1; low = mid + 1;