0
0
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:
Bram Moolenaar
2019-07-26 21:26:34 +02:00
parent 9d5ffceb3f
commit 7b73d7ebf7
4 changed files with 10 additions and 5 deletions

View File

@@ -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;