Skip to content

Commit 88936ea

Browse files
kbowers-jumpripatel-fd
authored andcommitted
Yet another key-val map code generator
By popular demand, this is a serial version of fd_map_slot_para. Because it is serial, the API can be and has been made a lot a simpler. As a result, this can also be thought of as version of fd_map_dynamic that has been updated to have the advanced features (sans lockfree concurrency) of fd_map_slot_para. This includes: - First class support for seeded hashing (this has also been backported to fd_map_dynamic). - First class support for upserting. - First class support for prefetching (including efficient handling of expensive key hashing between prefetch and use). - No requirement for a sentinel key. (Maps that do use sentinel keys are still supported.) - Improved support for key-val pairs that are not plain-old-data. - Bounded and configurable worst case algorithmic bounds (and, as a side effect, no requirement for the user to guarantee there is always at least one free element in the element store). - Iteration over all keys with a common hash (e.g. for maps that use structured hashing to group keys together). - A run-time data integrity verification function. See code comments for more details.
1 parent 48feae3 commit 88936ea

File tree

3 files changed

+1795
-1
lines changed

3 files changed

+1795
-1
lines changed

src/util/tmpl/Local.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
$(call add-hdrs,fd_bplus.c fd_deque.c fd_deque_dynamic.c fd_dlist.c fd_heap.c fd_map.c fd_map_chain.c fd_map_dynamic.c fd_map_giant.c fd_map_chain_para.c fd_map_slot_para.c fd_pool.c fd_pool_para.c fd_prq.c fd_queue.c fd_queue_dynamic.c fd_redblack.c fd_set.c fd_set_dynamic.c fd_smallset.c fd_sort.c fd_stack.c fd_treap.c fd_vec.c fd_voff.c)
1+
$(call add-hdrs,fd_bplus.c fd_deque.c fd_deque_dynamic.c fd_dlist.c fd_heap.c fd_map.c fd_map_chain.c fd_map_dynamic.c fd_map_giant.c fd_map_chain_para.c fd_map_slot.c fd_map_slot_para.c fd_pool.c fd_pool_para.c fd_prq.c fd_queue.c fd_queue_dynamic.c fd_redblack.c fd_set.c fd_set_dynamic.c fd_smallset.c fd_sort.c fd_stack.c fd_treap.c fd_vec.c fd_voff.c)
22
$(call add-objs,fd_map_util,fd_util)
33
$(call make-unit-test,test_bplus,test_bplus,fd_util)
44
$(call make-unit-test,test_deque,test_deque,fd_util)
@@ -17,6 +17,7 @@ $(call make-unit-test,test_map_giant_concur,test_map_giant_concur,fd_util)
1717
endif
1818
$(call make-unit-test,test_map_perfect,test_map_perfect,fd_util)
1919
$(call make-unit-test,test_map_chain_para,test_map_chain_para,fd_util)
20+
$(call make-unit-test,test_map_slot,test_map_slot,fd_util)
2021
$(call make-unit-test,test_map_slot_para,test_map_slot_para,fd_util)
2122
$(call make-unit-test,test_pool,test_pool,fd_util)
2223
$(call make-unit-test,test_pool_para,test_pool_para,fd_util)
@@ -47,6 +48,7 @@ $(call run-unit-test,test_map_dynamic,)
4748
$(call run-unit-test,test_map_giant,)
4849
$(call run-unit-test,test_map_giant_mem,)
4950
$(call run-unit-test,test_map_chain_para,)
51+
$(call run-unit-test,test_map_slot,)
5052
$(call run-unit-test,test_map_slot_para,)
5153
# FIXME: MAP_PERFECT?
5254
$(call run-unit-test,test_pool,)

0 commit comments

Comments
 (0)