diff options
| author | gingerBill <bill@gingerbill.org> | 2020-05-21 16:27:40 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2020-05-21 16:27:40 +0100 |
| commit | d09ac8943ac38b955e9a10d22e5c2f3fba8e7eaa (patch) | |
| tree | b1c8ec516f93d0c15eef14812442bda09c3d750c /src/string_map.cpp | |
| parent | 8e63c943939619cb74266ff43a0cff20293d5b70 (diff) | |
Minor fixes to improve hash map/set performance
Diffstat (limited to 'src/string_map.cpp')
| -rw-r--r-- | src/string_map.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/string_map.cpp b/src/string_map.cpp index 485048154..7a446937a 100644 --- a/src/string_map.cpp +++ b/src/string_map.cpp @@ -7,7 +7,7 @@ struct StringMapFindResult { struct StringHashKey { u64 hash; - String string; + String string; }; StringHashKey string_hashing_proc(void const *data, isize len) { @@ -65,8 +65,11 @@ template <typename T> void string_map_rehash (StringMap<T> *h, isize n template <typename T> gb_inline void string_map_init(StringMap<T> *h, gbAllocator a, isize capacity) { - array_init(&h->hashes, a, 0, capacity); + array_init(&h->hashes, a, capacity); array_init(&h->entries, a, 0, capacity); + for (isize i = 0; i < capacity; i++) { + h->hashes.data[i] = -1; + } } template <typename T> @@ -136,7 +139,7 @@ template <typename T> void string_map_rehash(StringMap<T> *h, isize new_count) { isize i, j; StringMap<T> nh = {}; - string_map_init(&nh, h->hashes.allocator); + string_map_init(&nh, h->hashes.allocator, new_count); array_resize(&nh.hashes, new_count); array_reserve(&nh.entries, h->entries.count); for (i = 0; i < new_count; i++) { |