Settings
KEY_COUNT: 20000000
KEY_COUNT_MEASUREMENT_INTERVAL: 50000
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
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Total time to insert N nonexisting keys
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Total time to insert N nonexisting keys
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to erase 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to erase 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to erase 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to replace 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to replace 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to replace 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to erase 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to erase 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to erase 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to look up 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to look up 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to look up 1,000 existing keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to look up 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to look up 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to look up 1,000 nonexisting keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
32-bit integer key, 32-bit value: Time to iterate over 5,000 keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
64-bit integer key, 448-bit value: Time to iterate over 5,000 keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
16-char c-string key, 64-bit value: Time to iterate over 5,000 keys with N keys in the map
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
Linear time from zero ⟶
N keys
4,000,000
8,000,000
12,000,000
16,000,000
Total time taken relative to the fastest table in the benchmark (lower is better)
ankerl
absl
boost
ska
std
tsl
CC
STC
klib
M*LIB
stb_ds
uthash
Verstable
M*LIB dict
32-bit integer key, 32-bit value:
Insert nonexisting
1.75
1.09
1.00
1.83
6.33
1.67
1.31
1.07
1.22
1.36
2.00
6.65
1.26
1.45
64-bit integer key, 448-bit value:
Insert nonexisting
1.33
1.50
1.07
1.66
4.85
2.03
1.27
1.00
1.14
1.54
1.37
4.22
1.35
1.03
16-char c-string key, 64-bit value:
Insert nonexisting
1.58
1.35
1.23
2.26
2.94
1.36
1.80
1.56
1.75
1.97
1.16
2.92
1.44
1.00
32-bit integer key, 32-bit value:
Erase existing
2.76
2.17
1.36
1.51
11.29
2.46
1.50
3.80
1.28
1.00
4.79
7.81
1.47
1.36
64-bit integer key, 448-bit value:
Erase existing
2.34
1.89
1.33
1.77
9.95
3.32
1.50
4.16
1.12
1.16
4.01
6.28
1.36
1.00
16-char c-string key, 64-bit value:
Erase existing
1.50
1.27
1.01
1.22
3.14
1.67
1.05
4.54
1.25
1.26
1.96
2.45
1.03
1.00
32-bit integer key, 32-bit value:
Replace existing
1.73
1.67
1.33
1.15
2.70
1.31
1.28
1.35
1.72
1.00
2.47
3.70
1.34
1.17
64-bit integer key, 448-bit value:
Replace existing
1.28
1.35
1.18
1.25
2.27
1.47
1.22
1.23
1.48
1.09
1.72
2.90
1.39
1.00
16-char c-string key, 64-bit value:
Replace existing
1.03
1.12
1.02
1.15
1.52
1.40
1.02
1.18
1.29
1.27
1.07
1.53
1.03
1.00
32-bit integer key, 32-bit value:
Erase nonexisting
1.67
1.16
1.00
1.60
5.18
1.85
1.17
2.36
2.18
2.59
3.82
3.67
1.14
2.65
64-bit integer key, 448-bit value:
Erase nonexisting
1.70
1.32
1.00
2.02
5.69
2.72
1.22
2.50
2.62
3.42
3.92
3.95
1.16
2.86
16-char c-string key, 64-bit value:
Erase nonexisting
1.18
1.08
1.00
1.69
2.35
1.94
1.07
2.24
2.49
2.57
2.03
2.12
1.05
1.63
32-bit integer key, 32-bit value:
Look up existing
1.24
1.67
1.24
1.23
2.28
1.26
1.20
1.26
1.51
1.00
2.41
2.44
1.17
1.07
64-bit integer key, 448-bit value:
Look up existing
1.12
1.52
1.40
1.37
2.16
1.51
1.27
1.27
1.59
1.17
1.97
2.17
1.08
1.00
16-char c-string key, 64-bit value:
Look up existing
1.00
1.13
1.03
1.18
1.52
1.42
1.03
1.20
1.29
1.30
1.07
1.48
1.03
1.02
32-bit integer key, 32-bit value:
Look up nonexisting
1.47
1.23
1.00
1.66
4.12
1.75
1.15
2.31
2.01
2.55
3.57
3.49
1.14
2.60
64-bit integer key, 448-bit value:
Look up nonexisting
1.41
1.17
1.00
1.93
4.15
2.18
1.12
2.24
2.12
3.04
3.20
3.48
1.05
2.48
16-char c-string key, 64-bit value:
Look up nonexisting
1.08
1.08
1.00
1.70
2.35
2.05
1.08
2.27
2.40
2.79
2.02
2.13
1.06
1.70
32-bit integer key, 32-bit value:
Iterate
1.00
3.92
2.72
7.43
89.28
5.47
4.12
5.14
6.79
5.47
1.04
40.62
3.34
17.19
64-bit integer key, 448-bit value:
Iterate
1.00
1.99
1.98
2.42
27.21
2.00
1.99
1.82
2.10
1.79
1.13
10.68
1.90
5.75
16-char c-string key, 64-bit value:
Iterate
1.00
3.28
2.31
6.02
80.95
4.56
3.78
4.34
5.50
4.51
1.08
29.70
2.82
16.06