mirror of
https://github.com/borgbackup/borg.git
synced 2026-07-16 13:33:03 -04:00
replace modulo with if to check for wraparound in hashmap
Integer division is slow, and this improves the speed of all operations on the hashmap. Benchmarked this patch on the rciorba/master-bench branch:9e5d61e03c/results.html(cherry picked from commit12e0f55991)
This commit is contained in:
parent
39f876229f
commit
2cdd4353b6
1 changed files with 8 additions and 2 deletions
|
|
@ -143,7 +143,10 @@ hashindex_lookup(HashIndex *index, const void *key)
|
|||
}
|
||||
return idx;
|
||||
}
|
||||
idx = (idx + 1) % index->num_buckets;
|
||||
idx++;
|
||||
if (idx >= index->num_buckets) {
|
||||
idx -= index->num_buckets;
|
||||
}
|
||||
if(idx == start) {
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -434,7 +437,10 @@ hashindex_set(HashIndex *index, const void *key, const void *value)
|
|||
}
|
||||
idx = hashindex_index(index, key);
|
||||
while(!BUCKET_IS_EMPTY(index, idx) && !BUCKET_IS_DELETED(index, idx)) {
|
||||
idx = (idx + 1) % index->num_buckets;
|
||||
idx++;
|
||||
if (idx >= index->num_buckets){
|
||||
idx -= index->num_buckets;
|
||||
}
|
||||
}
|
||||
if(BUCKET_IS_EMPTY(index, idx)){
|
||||
index->num_empty--;
|
||||
|
|
|
|||
Loading…
Reference in a new issue