This is the testing result with google sparse hash's bench mark (time_hash_map.cc in google sparse hash's tar ball)
The only modify totime_hash_map.cc is added the test for gold_hash_map (see diff below)
87a88
> #include <febird/gold_hash_map.hpp>
172a174,178
> template<typename K, typename V, typename H>
> class EasyUse_gold_hash_map : public gold_hash_map<K,V,H> {
> public:
> void resize(size_t r) { this->rehash(r); }
> };
669a676,679
> measure_map< EasyUse_gold_hash_map<ObjType, int, HashFn>,
> EasyUse_gold_hash_map<ObjType*, int, HashFn> >(
> "gold_hash_map", obj_size, iters, stress_hash_function);
>
source:
gold_hash_map.hpp
Here is the result!
======
Linux ubuntu 2.6.32-35-generic #78-Ubuntu SMP Tue Oct 11 16:11:24 UTC 2011 x86_64
Average over 1000000 iterations
Current time (GMT): Sun Oct 23 09:39:22 2011
SPARSE_HASH_MAP (4 byte objects, 1000000 iterations):
map_grow 1610.0 ns ( 2677704 hashes, 5677753 copies)
map_predict/grow 630.0 ns ( 1000000 hashes, 4000005 copies)
map_replace 350.0 ns ( 3677704 hashes, 5677753 copies)
map_fetch_random 810.0 ns ( 3677704 hashes, 5677753 copies)
map_fetch_sequential 740.0 ns ( 3677704 hashes, 5677753 copies)
map_fetch_empty 370.0 ns ( 0 hashes, 1 copies)
map_remove 1120.0 ns ( 3677704 hashes, 6677753 copies)
map_toggle 2110.0 ns ( 2039999 hashes, 5159997 copies)
stresshashfunction map_size=256 stride=1: 3001.7ns/insertion
stresshashfunction map_size=256 stride=256: 2361.4ns/insertion
stresshashfunction map_size=1024 stride=1: 5443.1ns/insertion
stresshashfunction map_size=1024 stride=1024: 5883.4ns/insertion
DENSE_HASH_MAP (4 byte objects, 1000000 iterations):
map_grow 700.0 ns ( 2048576 hashes, 9242963 copies)
map_predict/grow 250.0 ns ( 1000000 hashes, 6097195 copies)
map_replace 200.0 ns ( 3048576 hashes, 9242963 copies)
map_fetch_random 230.0 ns ( 3048576 hashes, 9242963 copies)
map_fetch_sequential 200.0 ns ( 3048576 hashes, 9242963 copies)
map_fetch_empty 60.0 ns ( 0 hashes, 35 copies)
map_remove 400.0 ns ( 3048576 hashes, 10242963 copies)
map_toggle 1040.0 ns ( 2062499 hashes, 7499995 copies)
stresshashfunction map_size=256 stride=1: 1841.1ns/insertion
stresshashfunction map_size=256 stride=256: 520.3ns/insertion
stresshashfunction map_size=1024 stride=1: 2841.6ns/insertion
stresshashfunction map_size=1024 stride=1024: 1520.9ns/insertion
STANDARD HASH_MAP (4 byte objects, 1000000 iterations):
map_grow 240.0 ns ( 2025530 hashes, 4000000 copies)
map_predict/grow 230.0 ns ( 1000000 hashes, 4000000 copies)
map_replace 60.0 ns ( 3025530 hashes, 4000000 copies)
map_fetch_random 220.0 ns ( 3025530 hashes, 4000000 copies)
map_fetch_sequential 100.0 ns ( 3025530 hashes, 4000000 copies)
map_fetch_empty 130.0 ns ( 1000000 hashes, 0 copies)
map_remove 130.0 ns ( 3025530 hashes, 4000000 copies)
map_toggle 350.0 ns ( 2000000 hashes, 4000000 copies)
stresshashfunction map_size=256 stride=1: 160.1ns/insertion
stresshashfunction map_size=256 stride=256: 200.1ns/insertion
stresshashfunction map_size=1024 stride=1: 160.1ns/insertion
stresshashfunction map_size=1024 stride=1024: 160.1ns/insertion
gold_hash_map (4 byte objects, 1000000 iterations):
map_grow 200.0 ns ( 1000000 hashes, 2000000 copies)
map_predict/grow 200.0 ns ( 1000000 hashes, 2000000 copies)
map_replace 90.0 ns ( 2000000 hashes, 3000000 copies)
map_fetch_random 200.0 ns ( 2000000 hashes, 2000000 copies)
map_fetch_sequential 70.0 ns ( 2000000 hashes, 2000000 copies)
map_fetch_empty 50.0 ns ( 1000000 hashes, 0 copies)
map_remove 110.0 ns ( 2000000 hashes, 2000000 copies)
map_toggle 190.0 ns ( 2000000 hashes, 2000000 copies)
stresshashfunction map_size=256 stride=1: 200.1ns/insertion
stresshashfunction map_size=256 stride=256: 280.2ns/insertion
stresshashfunction map_size=1024 stride=1: 200.1ns/insertion
stresshashfunction map_size=1024 stride=1024: 160.1ns/insertion
STANDARD MAP (4 byte objects, 1000000 iterations):
map_grow 960.0 ns ( 0 hashes, 2000000 copies)
map_predict/grow 950.0 ns ( 0 hashes, 2000000 copies)
map_replace 660.0 ns ( 0 hashes, 2000000 copies)
map_fetch_random 1360.0 ns ( 0 hashes, 2000000 copies)
map_fetch_sequential 720.0 ns ( 0 hashes, 2000000 copies)
map_fetch_empty 50.0 ns ( 0 hashes, 0 copies)
map_remove 790.0 ns ( 0 hashes, 2000000 copies)
map_toggle 390.0 ns ( 0 hashes, 2000000 copies)
SPARSE_HASH_MAP (8 byte objects, 500000 iterations):
map_grow 1860.0 ns ( 1338843 hashes, 2838889 copies)
map_predict/grow 760.0 ns ( 500000 hashes, 2000005 copies)
map_replace 360.0 ns ( 1838843 hashes, 2838889 copies)
map_fetch_random 720.0 ns ( 1838843 hashes, 2838889 copies)
map_fetch_sequential 760.0 ns ( 1838843 hashes, 2838889 copies)
map_fetch_empty 380.0 ns ( 0 hashes, 1 copies)
map_remove 1140.0 ns ( 1838843 hashes, 3338889 copies)
map_toggle 2340.0 ns ( 1019999 hashes, 2579997 copies)
stresshashfunction map_size=256 stride=1: 2801.6ns/insertion
stresshashfunction map_size=256 stride=256: 1761.0ns/insertion
stresshashfunction map_size=1024 stride=1: 5042.9ns/insertion
stresshashfunction map_size=1024 stride=1024: 5443.1ns/insertion
DENSE_HASH_MAP (8 byte objects, 500000 iterations):
map_grow 680.0 ns ( 1024287 hashes, 4621515 copies)
map_predict/grow 300.0 ns ( 500000 hashes, 3048619 copies)
map_replace 200.0 ns ( 1524287 hashes, 4621515 copies)
map_fetch_random 200.0 ns ( 1524287 hashes, 4621515 copies)
map_fetch_sequential 180.0 ns ( 1524287 hashes, 4621515 copies)
map_fetch_empty 60.0 ns ( 0 hashes, 35 copies)
map_remove 380.0 ns ( 1524287 hashes, 5121515 copies)
map_toggle 980.0 ns ( 1031249 hashes, 3749995 copies)
stresshashfunction map_size=256 stride=1: 1360.8ns/insertion
stresshashfunction map_size=256 stride=256: 480.3ns/insertion
stresshashfunction map_size=1024 stride=1: 2481.4ns/insertion
stresshashfunction map_size=1024 stride=1024: 1440.8ns/insertion
STANDARD HASH_MAP (8 byte objects, 500000 iterations):
map_grow 300.0 ns ( 1005289 hashes, 2000000 copies)
map_predict/grow 260.0 ns ( 500000 hashes, 2000000 copies)
map_replace 80.0 ns ( 1505289 hashes, 2000000 copies)
map_fetch_random 200.0 ns ( 1505289 hashes, 2000000 copies)
map_fetch_sequential 120.0 ns ( 1505289 hashes, 2000000 copies)
map_fetch_empty 100.0 ns ( 500000 hashes, 0 copies)
map_remove 140.0 ns ( 1505289 hashes, 2000000 copies)
map_toggle 360.0 ns ( 1000000 hashes, 2000000 copies)
stresshashfunction map_size=256 stride=1: 160.1ns/insertion
stresshashfunction map_size=256 stride=256: 240.1ns/insertion
stresshashfunction map_size=1024 stride=1: 240.1ns/insertion
stresshashfunction map_size=1024 stride=1024: 240.1ns/insertion
gold_hash_map (8 byte objects, 500000 iterations):
map_grow 240.0 ns ( 500000 hashes, 1000000 copies)
map_predict/grow 280.0 ns ( 500000 hashes, 1000000 copies)
map_replace 100.0 ns ( 1000000 hashes, 1500000 copies)
map_fetch_random 200.0 ns ( 1000000 hashes, 1000000 copies)
map_fetch_sequential 100.0 ns ( 1000000 hashes, 1000000 copies)
map_fetch_empty 60.0 ns ( 500000 hashes, 0 copies)
map_remove 160.0 ns ( 1000000 hashes, 1000000 copies)
map_toggle 220.0 ns ( 1000000 hashes, 1000000 copies)
stresshashfunction map_size=256 stride=1: 240.1ns/insertion
stresshashfunction map_size=256 stride=256: 80.0ns/insertion
stresshashfunction map_size=1024 stride=1: 160.1ns/insertion
stresshashfunction map_size=1024 stride=1024: 160.1ns/insertion
STANDARD MAP (8 byte objects, 500000 iterations):
map_grow 1020.0 ns ( 0 hashes, 1000000 copies)
map_predict/grow 940.0 ns ( 0 hashes, 1000000 copies)
map_replace 640.0 ns ( 0 hashes, 1000000 copies)
map_fetch_random 1260.0 ns ( 0 hashes, 1000000 copies)
map_fetch_sequential 640.0 ns ( 0 hashes, 1000000 copies)
map_fetch_empty 80.0 ns ( 0 hashes, 0 copies)
map_remove 740.0 ns ( 0 hashes, 1000000 copies)
map_toggle 420.0 ns ( 0 hashes, 1000000 copies)
SPARSE_HASH_MAP (16 byte objects, 250000 iterations):
map_grow 1960.0 ns ( 669412 hashes, 1419455 copies)
map_predict/grow 880.0 ns ( 250000 hashes, 1000005 copies)
map_replace 400.0 ns ( 919412 hashes, 1419455 copies)
map_fetch_random 880.0 ns ( 919412 hashes, 1419455 copies)
map_fetch_sequential 680.0 ns ( 919412 hashes, 1419455 copies)
map_fetch_empty 360.0 ns ( 0 hashes, 1 copies)
map_remove 1160.0 ns ( 919412 hashes, 1669455 copies)
map_toggle 2240.0 ns ( 509999 hashes, 1289997 copies)
DENSE_HASH_MAP (16 byte objects, 250000 iterations):
map_grow 760.0 ns ( 512142 hashes, 2310787 copies)
map_predict/grow 360.0 ns ( 250000 hashes, 1524331 copies)
map_replace 200.0 ns ( 762142 hashes, 2310787 copies)
map_fetch_random 200.0 ns ( 762142 hashes, 2310787 copies)
map_fetch_sequential 240.0 ns ( 762142 hashes, 2310787 copies)
map_fetch_empty 80.0 ns ( 0 hashes, 35 copies)
map_remove 400.0 ns ( 762142 hashes, 2560787 copies)
map_toggle 1000.0 ns ( 515624 hashes, 1874995 copies)
STANDARD HASH_MAP (16 byte objects, 250000 iterations):
map_grow 360.0 ns ( 499010 hashes, 1000000 copies)
map_predict/grow 280.0 ns ( 250000 hashes, 1000000 copies)
map_replace 120.0 ns ( 749010 hashes, 1000000 copies)
map_fetch_random 240.0 ns ( 749010 hashes, 1000000 copies)
map_fetch_sequential 120.0 ns ( 749010 hashes, 1000000 copies)
map_fetch_empty 120.0 ns ( 250000 hashes, 0 copies)
map_remove 200.0 ns ( 749010 hashes, 1000000 copies)
map_toggle 440.0 ns ( 500000 hashes, 1000000 copies)
gold_hash_map (16 byte objects, 250000 iterations):
map_grow 320.0 ns ( 250000 hashes, 500000 copies)
map_predict/grow 280.0 ns ( 250000 hashes, 500000 copies)
map_replace 160.0 ns ( 500000 hashes, 750000 copies)
map_fetch_random 200.0 ns ( 500000 hashes, 500000 copies)
map_fetch_sequential 120.0 ns ( 500000 hashes, 500000 copies)
map_fetch_empty 80.0 ns ( 250000 hashes, 0 copies)
map_remove 160.0 ns ( 500000 hashes, 500000 copies)
map_toggle 280.0 ns ( 500000 hashes, 500000 copies)
STANDARD MAP (16 byte objects, 250000 iterations):
map_grow 1000.0 ns ( 0 hashes, 500000 copies)
map_predict/grow 880.0 ns ( 0 hashes, 500000 copies)
map_replace 640.0 ns ( 0 hashes, 500000 copies)
map_fetch_random 1040.0 ns ( 0 hashes, 500000 copies)
map_fetch_sequential 560.0 ns ( 0 hashes, 500000 copies)
map_fetch_empty 80.0 ns ( 0 hashes, 0 copies)
map_remove 760.0 ns ( 0 hashes, 500000 copies)
map_toggle 440.0 ns ( 0 hashes, 500000 copies)
SPARSE_HASH_MAP (256 byte objects, 31250 iterations):
map_grow 5760.0 ns ( 83659 hashes, 177443 copies)
map_predict/grow 1920.0 ns ( 31250 hashes, 125005 copies)
map_replace 1280.0 ns ( 114909 hashes, 177443 copies)
map_fetch_random 1600.0 ns ( 114909 hashes, 177443 copies)
map_fetch_sequential 1600.0 ns ( 114909 hashes, 177443 copies)
map_fetch_empty 320.0 ns ( 0 hashes, 1 copies)
map_remove 2560.0 ns ( 114909 hashes, 208693 copies)
map_toggle 3840.0 ns ( 63749 hashes, 161247 copies)
DENSE_HASH_MAP (256 byte objects, 31250 iterations):
map_grow 2880.0 ns ( 64013 hashes, 288883 copies)
map_predict/grow 1280.0 ns ( 31250 hashes, 190579 copies)
map_replace 1280.0 ns ( 95263 hashes, 288883 copies)
map_fetch_random 960.0 ns ( 95263 hashes, 288883 copies)
map_fetch_sequential 960.0 ns ( 95263 hashes, 288883 copies)
map_fetch_empty 320.0 ns ( 0 hashes, 35 copies)
map_remove 1280.0 ns ( 95263 hashes, 320133 copies)
map_toggle 2560.0 ns ( 64453 hashes, 234405 copies)
STANDARD HASH_MAP (256 byte objects, 31250 iterations):
map_grow 2880.0 ns ( 91756 hashes, 125000 copies)
map_predict/grow 1280.0 ns ( 31250 hashes, 125000 copies)
map_replace 960.0 ns ( 123006 hashes, 125000 copies)
map_fetch_random 960.0 ns ( 123006 hashes, 125000 copies)
map_fetch_sequential 960.0 ns ( 123006 hashes, 125000 copies)
map_fetch_empty 960.0 ns ( 31250 hashes, 0 copies)
map_remove 960.0 ns ( 123006 hashes, 125000 copies)
map_toggle 1920.0 ns ( 62500 hashes, 125000 copies)
gold_hash_map (256 byte objects, 31250 iterations):
map_grow 1280.0 ns ( 31250 hashes, 31250 copies)
map_predict/grow 1280.0 ns ( 31250 hashes, 31250 copies)
map_replace 1280.0 ns ( 62500 hashes, 31250 copies)
map_fetch_random 960.0 ns ( 62500 hashes, 31250 copies)
map_fetch_sequential 960.0 ns ( 62500 hashes, 31250 copies)
map_fetch_empty 960.0 ns ( 31250 hashes, 0 copies)
map_remove 960.0 ns ( 62500 hashes, 31250 copies)
map_toggle 2240.0 ns ( 62500 hashes, 31250 copies)
STANDARD MAP (256 byte objects, 31250 iterations):
map_grow 640.0 ns ( 0 hashes, 62500 copies)
map_predict/grow 640.0 ns ( 0 hashes, 62500 copies)
map_replace 320.0 ns ( 0 hashes, 62500 copies)
map_fetch_random 640.0 ns ( 0 hashes, 62500 copies)
map_fetch_sequential 640.0 ns ( 0 hashes, 62500 copies)
map_fetch_empty 0.0 ns ( 0 hashes, 0 copies)
map_remove 640.0 ns ( 0 hashes, 62500 copies)
map_toggle 640.0 ns ( 0 hashes, 62500 copies)
分享到:
相关推荐
TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_...
gen_lex_hash for pc,mysql交叉编译需要用到的文件,5.1.51 and 5.1.63两个版本,5.1.67版本始终编译不出来。有需要的下载。
基于应变和应力的Vumat子程序_hashin失效准则_动态应变_拉伸失效_hashin_vumat.zip
Nginx:一致性哈希(第三方模块ngx_http_consistent_hash):ngx_http_consistent_hash-master.zip
一键修复 Chrome浏览器崩溃 STATUS_INVALID_IMAGE_HASH Win10中Edge浏览器此页存在问题 STATUS_INVALID_IMAGE_HASH
NGINX第三方模块:nginx_upstream_hash-0.3.1.tar.gz。
sparse-map一个高效hash map和hash set的C 实现
用于复合材料损伤分析,三维损伤umat子程序
jg :: dense_hash_map 一个简单的std::unordered_map替代品,具有更好的性能,但失去了稳定的寻址方式,这是一种折衷方案。 在此处查看此哈希图的详细说明: : 生成状态: 特拉维斯(Travis):
Nginx如何配置url_hash转发方式.docx
在获取到mysql用户的hash后, 可用hash直接登陆mysql进行操作 比如我们注入出数据库的hash,但是没办法拿到webshell 我们可以使用mysql_hash,用hash登陆并控制数据库 使用方法: mysql_hash.exe -u root -p Enter ...
Hash在线解密平台最新版php实现纯txt存储哈希跟明文对应表查询
url_hash 是nginx的第三方模块,nginx本身不支持,需要打patch . Url_hash 你nginx在做负载均衡的时候。把转发的URL 以hash的形式保存。这样可以保证同一个URL始终 分给同一个real server,来提高访问速度。
linux 下hash_map的基本原理及使用,希望对大家有帮助。
hash_map
大数据 Map 哈希 价值五亿美元 Big Data Map hash value of five hundred million U.S. dollars
代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...
NGINX第三方模块:nginx_upstream_hash-0.3.2版本。。。
Hash基础知识_Hash基础知识_Hash基础知识_Hash基础知识_Hash基础知识_Hash基础知识_
基于ABAQUS的hashin和Tong-Norrius准则的umat子程序