Settings
KEY_COUNT: 200000
KEY_COUNT_MEASUREMENT_INTERVAL: 500
RUN_COUNT: 14
DISCARDED_RUNS_COUNT: 4
MAX_LOAD_FACTOR: 0.875
APPROXIMATE_CACHE_SIZE: 20000000
MILLISECOND_COOLDOWN_BETWEEN_BENCHMARKS: 1000
32-bit integer key, 32-bit value: Total time to insert N nonexisting keys
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Total time to insert N nonexisting keys
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Total time to insert N nonexisting keys
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to erase 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to erase 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to erase 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to replace 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to replace 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to replace 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to erase 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to erase 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to erase 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to look up 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to look up 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to look up 1,000 existing keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to look up 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to look up 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to look up 1,000 nonexisting keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
32-bit integer key, 32-bit value: Time to iterate over 5,000 keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
64-bit integer key, 448-bit value: Time to iterate over 5,000 keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
16-char c-string key, 64-bit value: Time to iterate over 5,000 keys with N keys in the table
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
Linear time from zero ⟶
N keys
40,000
80,000
120,000
160,000
Total time taken relative to the fastest table in the benchmark (lower/lighter is better)
absl
ankerl
boost
emilib2
ska
std
tsl
CC
khash
DICT
DICT_OA
stb_ds
STC
uthash
Verstable
32-bit integer key, 32-bit value:
Insert nonexisting
1.33
1.75
1.00
1.09
1.93
3.27
1.98
1.56
1.63
1.70
1.44
2.02
1.19
4.98
1.47
64-bit integer key, 448-bit value:
Insert nonexisting
2.00
1.19
1.38
2.03
1.63
2.55
1.80
1.43
1.20
1.00
1.52
1.26
1.18
3.38
1.64
16-char c-string key, 64-bit value:
Insert nonexisting
1.11
1.16
1.00
1.16
1.35
1.78
1.24
1.23
1.20
1.00
1.21
1.15
1.19
2.10
1.14
32-bit integer key, 32-bit value:
Erase existing
1.94✝
4.68
1.00✝
1.04✝
2.03
7.41
3.54
1.80
1.62✝
1.59✝
1.43✝
5.78✝
6.54
8.14
1.78
64-bit integer key, 448-bit value:
Erase existing
1.72✝
2.92
1.00✝
1.37✝
1.76
6.25
3.07
1.44
1.08✝
1.05✝
1.09✝
4.21✝
4.79
5.99
1.44
16-char c-string key, 64-bit value:
Erase existing
1.33✝
2.09
1.00✝
1.02✝
1.31
3.00
1.90
1.15
1.23✝
1.04✝
1.18✝
2.46✝
5.05
3.30
1.14
32-bit integer key, 32-bit value:
Replace existing
1.00
2.36
1.29
1.05
1.28
2.23
2.28
1.19
1.83
1.94
1.35
2.70
1.54
4.19
1.22
64-bit integer key, 448-bit value:
Replace existing
1.10
1.42
1.16
1.10
1.17
1.97
1.53
1.17
1.32
1.00
1.17
1.64
1.34
3.10
1.44
16-char c-string key, 64-bit value:
Replace existing
1.09
1.24
1.00
1.11
1.14
1.79
1.56
1.08
1.31
1.14
1.23
1.27
1.27
2.28
1.08
32-bit integer key, 32-bit value:
Erase nonexisting
1.37
2.76
1.00
1.30
2.41
4.15
3.12
2.14
3.36
3.74
3.76
5.22
3.91
5.18
2.08
64-bit integer key, 448-bit value:
Erase nonexisting
1.40
2.66
1.00
1.27
2.73
5.54
3.90
2.07
3.36
3.70
4.49
4.90
4.03
6.12
2.01
16-char c-string key, 64-bit value:
Erase nonexisting
1.04
1.27
1.00
1.09
1.44
1.86
1.72
1.15
1.81
1.55
1.87
1.92
1.81
2.26
1.14
32-bit integer key, 32-bit value:
Look up existing
1.00
1.64
1.06
1.02
1.18
1.80
1.65
1.06
1.43
1.29
1.22
2.19
1.37
2.82
1.04
64-bit integer key, 448-bit value:
Look up existing
1.20
1.22
1.16
1.22
1.28
1.98
1.58
1.20
1.32
1.00
1.21
1.64
1.49
2.62
1.07
16-char c-string key, 64-bit value:
Look up existing
1.07
1.18
1.00
1.04
1.19
1.73
1.51
1.08
1.24
1.09
1.17
1.23
1.24
2.13
1.04
32-bit integer key, 32-bit value:
Look up nonexisting
1.00
1.18
1.01
1.10
1.84
2.72
2.19
1.59
2.42
2.73
2.86
3.64
2.91
3.96
1.57
64-bit integer key, 448-bit value:
Look up nonexisting
1.06
1.19
1.00
1.11
2.10
3.70
3.03
1.64
2.55
2.74
3.49
3.56
3.18
4.76
1.57
16-char c-string key, 64-bit value:
Look up nonexisting
1.06
1.07
1.00
1.03
1.22
1.72
1.57
1.07
1.64
1.44
1.82
1.73
1.65
2.12
1.03
32-bit integer key, 32-bit value:
Iterate
6.55
1.00
3.65
3.54
10.14
15.32
7.95
6.36
9.91
8.76
7.93
1.67
7.40
10.57
5.06
64-bit integer key, 448-bit value:
Iterate
2.99
1.00
2.36
2.59
4.65
13.86
3.75
3.46
4.75
5.54
4.16
1.19
3.33
8.08
2.75
16-char c-string key, 64-bit value:
Iterate
4.53
1.00
2.77
3.11
7.31
20.29
6.38
5.31
7.81
8.62
6.66
1.42
5.75
11.71
3.84
✝ Relies on tombstones or a tombstone-like mechanism