mirror of
https://github.com/vim/vim.git
synced 2025-10-28 09:27:14 -04:00
patch 8.1.1752: resizing hashtable is inefficient
Problem: Resizing hashtable is inefficient. Solution: Avoid resizing when the final size is predictable.
This commit is contained in:
@@ -286,7 +286,6 @@ hash_lock(hashtab_T *ht)
|
||||
++ht->ht_locked;
|
||||
}
|
||||
|
||||
#if 0 /* currently not used */
|
||||
/*
|
||||
* Lock a hashtable at the specified number of entries.
|
||||
* Caller must make sure no more than "size" entries will be added.
|
||||
@@ -298,7 +297,6 @@ hash_lock_size(hashtab_T *ht, int size)
|
||||
(void)hash_may_resize(ht, size);
|
||||
++ht->ht_locked;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Unlock a hashtable: allow ht_array changes again.
|
||||
@@ -368,10 +366,10 @@ hash_may_resize(
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use specified size. */
|
||||
if ((long_u)minitems < ht->ht_used) /* just in case... */
|
||||
// Use specified size.
|
||||
if ((long_u)minitems < ht->ht_used) // just in case...
|
||||
minitems = (int)ht->ht_used;
|
||||
minsize = minitems * 3 / 2; /* array is up to 2/3 full */
|
||||
minsize = (minitems * 3 + 1) / 2; // array is up to 2/3 full
|
||||
}
|
||||
|
||||
newsize = HT_INIT_SIZE;
|
||||
|
||||
Reference in New Issue
Block a user