Skip to content

Commit 52c9111

Browse files
committed
Change load factor of concur. set from 0.5 to 0.75
This allows more tombstones to accumulate before a resize. We're hoping this improves time taken resizing per minute.
1 parent 01fea80 commit 52c9111

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

concurrent_set.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,6 @@ concurrent_set_try_resize_without_locking(VALUE old_set_obj, VALUE *set_obj_ptr)
209209
gettime(&resize_time_end);
210210
unsigned long long time_diff = time_diff_ns(resize_time_start, resize_time_end);
211211
rb_concur_set_resize_time_taken_ns += time_diff;
212-
unsigned long long time_taken_ms = time_diff / (1000 * 1000);
213212
rb_concur_set_resize_serial++;
214213
}
215214

@@ -322,7 +321,9 @@ rb_concurrent_set_find_or_insert(VALUE *set_obj_ptr, VALUE key, void *data)
322321

323322
rb_atomic_t prev_size = RUBY_ATOMIC_FETCH_ADD(set->size, 1);
324323

325-
if (UNLIKELY(prev_size > set->capacity / 2)) {
324+
double load_factor = (1.0 * prev_size) / (set->capacity);
325+
326+
if (UNLIKELY(load_factor >= 0.75)) {
326327
concurrent_set_try_resize(set_obj, set_obj_ptr);
327328

328329
goto retry;

0 commit comments

Comments
 (0)