hyb
hyb
F14VectorMap use continuous memory(empty slot is only in the back of vector) to store data which is some different with the others open addressing hash table(ska, absl, tsl, emhash, ...)....
@camel-cdr I have add your new changes into my benchmark, It's a single cpp file and easy to be benchmarked and compared with each other. https://github.com/ktprime/emhash/blob/master/bench/martinus_bench.cpp hyb@LAPTOP-8JBPPNI4:/mnt/d/emhash/bench$ make BF=1 SW=1...
ping-pong 服务 发送100K,出现各种奇怪错误,20K以内比较稳定 force_push: msg_id = 38, remain = 16, size = 64 force_push: k = 0, cc = 1, rem_cc = 1 fail: send, there is no receiver on...
from my benchmark( https://github.com/ktprime/emhash/blob/master/bench/martinus_bench.cpp ), unordered_flat_map seems to be the fastest in most cases.
`但不支持相同超时的定时器按FIFO顺序触发;` 节点优先级比较实现一下就能达到目的,比如按插入序号,时间之类的。
Most flat hash map can't set high load factor for performance issue, but my emhash7 can set load factor to 0.999. The following benchmark shows that emhash has amazing performance...
a good hash map, it's quite same as one of my emhash8(https://github.com/ktprime/emhash/blob/master/hash_table8.hpp) design I have added it into my bench (https://github.com/ktprime/emhash/blob/master/bench/ebench.cpp).
if index moves from node to bucket, your hashmap will be more efficient(memory and performance)
I use the following bucket vector as index(metadata) ``` struct Bucket { size_type next; //next collision index in current bucket vector. size_type index; //index in node vector }; ..... Bucket...
huangyuanbing1@ubuntu:~/map_benchmark/build ``` ./bench_jiwan_dense_hash_map__robin_hood_hash IterateIntegers ``` "jg::dense_hash_map"; "robin_hood::hash"; "IterateIntegers"; "01"; "iterate while adding"; 20833333325000; 0.63688; 2.08984 "jg::dense_hash_map"; "robin_hood::hash"; "IterateIntegers"; "02"; "iterate while removing"; 62498750000000; 0.636369; 2.08984 ``` huangyuanbing1@ubuntu:~/map_benchmark/build ./bench_ktprime_hash_table8__robin_hood_hash IterateIntegers ```...