Skip to content

Commit 58cc379

Browse files
authored
Improve performance of LongLongHash#removeAndAdd (#114230)
remove some unnecessary manipulation of the keys in the method removeAndAdd.
1 parent 7decd52 commit 58cc379

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

server/src/main/java/org/elasticsearch/common/util/LongLongHash.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,16 @@ private void append(long id, long key1, long key2) {
104104
keys.set(keyOffset + 1, key2);
105105
}
106106

107-
private void reset(long key1, long key2, long id) {
107+
private void reset(long id) {
108+
final LongArray keys = this.keys;
109+
final long keyOffset = id * 2;
110+
final long key1 = keys.get(keyOffset);
111+
final long key2 = keys.get(keyOffset + 1);
108112
final long slot = slot(hash(key1, key2), mask);
109113
for (long index = slot;; index = nextSlot(index, mask)) {
110114
final long curId = id(index);
111115
if (curId == -1) { // means unset
112116
setId(index, id);
113-
append(id, key1, key2);
114117
break;
115118
}
116119
}
@@ -134,10 +137,7 @@ public long add(long key1, long key2) {
134137
protected void removeAndAdd(long index) {
135138
final long id = getAndSetId(index, -1);
136139
assert id >= 0;
137-
long keyOffset = id * 2;
138-
final long key1 = keys.getAndSet(keyOffset, 0);
139-
final long key2 = keys.getAndSet(keyOffset + 1, 0);
140-
reset(key1, key2, id);
140+
reset(id);
141141
}
142142

143143
@Override

0 commit comments

Comments
 (0)