2025-06-11 11:52:29 +00:00
2025-06-11 12:44:42 +02:00
2025-06-11 05:53:56 -05:00
2025-06-11 06:55:29 -04:00
2025-06-11 07:52:07 -04:00
2025-06-11 07:07:23 -04:00
2025-06-11 07:31:38 -04:00
2025-06-11 12:55:16 +02:00
2025-06-11 13:18:28 +02:00
2025-03-03 11:38:47 +01:00
2025-06-11 11:52:29 +00:00

Experimental results for candidate Boost Bloom Library

The tables show the false positive rate (FPR) and execution times in nanoseconds per operation for several configurations of boost::bloom::filter<int, ...> where N elements have been inserted. Filters are constructed with a capacity c*N (bits), so c is the number of bits used per element. For each combination of c and a given filter configuration, we have selected the optimum value of K (that yielding the minimum FPR). Standard release-mode settings are used; AVX2 is indicated for Visual Studio builds (/arch:AVX2) and 64-bit GCC/Clang builds (-mavx2), which causes fast_multiblock32 and fast_multiblock64 to use their AVX2 variant.

For reference, we provide also insertion, successful lookup and unsuccessful lookup times for a boost::unordered_flat_set<int> with the same number of elements N.

Results

GCC 14, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.93 5.57 4.50
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1635 12.85 11.69 18.00 4 3.3525 3.86 4.60 4.60 5 3.0203 4.84 4.96 4.97
12 9 0.3151 19.41 16.96 18.84 5 1.0369 4.41 5.05 5.06 6 0.8293 5.21 5.46 5.47
16 11 0.0455 23.09 20.02 17.70 6 0.4138 5.00 5.30 5.30 7 0.2824 5.84 5.94 5.94
20 14 0.0084 28.26 25.02 18.10 7 0.1936 5.58 5.77 5.78 8 0.1197 6.26 6.26 6.26
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4274 5.20 5.52 5.53 5 2.3232 5.47 6.66 6.66 5 2.7402 3.22 3.39 3.39
12 8 0.4244 7.07 7.74 7.73 8 0.3758 8.21 10.15 10.15 8 0.5360 2.56 3.09 3.14
16 11 0.0782 10.19 11.34 11.34 11 0.0581 22.42 13.51 13.52 11 0.1169 6.17 5.87 4.19
20 13 0.0132 11.26 13.06 13.09 14 0.0131 12.31 15.95 15.94 13 0.0280 6.22 5.89 4.17
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4803 3.21 3.21 3.28 5 2.4404 4.61 5.20 5.20 5 2.3234 4.69 5.02 5.02
12 8 0.4455 3.35 3.34 3.29 8 0.4197 3.42 4.46 4.47 8 0.3827 4.73 5.16 5.17
16 11 0.0840 5.62 5.53 4.00 11 0.0761 7.53 8.14 6.27 11 0.0629 8.91 7.94 6.17
20 13 0.0183 5.66 5.57 3.96 13 0.0154 9.13 9.46 6.35 14 0.0121 8.96 9.09 6.22
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.2994 6.19 7.66 15.02 6 2.2649 12.38 9.73 19.35 7 2.3451 10.86 10.95 10.96
12 7 0.4106 8.82 9.81 13.80 7 0.3873 13.10 10.18 15.58 10 0.3354 14.67 14.24 14.24
16 9 0.0845 10.88 11.39 13.44 10 0.0708 15.73 12.60 16.65 11 0.0510 16.40 16.15 16.16
20 12 0.0198 13.28 13.93 14.76 12 0.0147 17.10 14.84 16.15 15 0.0087 21.04 21.19 21.21

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
48.42 24.30 15.28
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1566 17.90 15.33 20.61 4 3.3462 5.50 6.30 6.26 5 3.0448 6.05 5.97 5.99
12 9 0.3146 44.15 40.78 24.67 5 1.0310 10.46 11.07 11.01 6 0.8244 11.73 12.27 11.69
16 11 0.0456 87.31 82.44 31.10 6 0.4035 16.46 17.98 17.98 7 0.2885 18.81 18.75 18.75
20 14 0.0066 126.87 116.19 36.57 7 0.1879 21.86 21.84 21.83 8 0.1185 25.59 22.65 22.63
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4515 5.99 6.34 6.32 5 2.3208 7.98 9.39 9.48 5 2.7234 4.72 4.91 4.88
12 8 0.4244 13.32 13.74 13.71 8 0.3758 17.50 20.20 20.27 8 0.5407 7.41 8.54 8.48
16 11 0.0776 29.55 29.82 29.83 11 0.0641 37.34 32.44 32.43 11 0.1174 19.18 20.14 14.84
20 13 0.0148 39.40 39.07 39.09 14 0.0120 41.10 51.00 51.00 13 0.0277 22.37 23.37 16.63
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4625 4.24 4.63 4.39 5 2.4388 7.30 8.55 8.17 5 2.3198 5.58 6.07 6.07
12 8 0.4428 8.13 8.94 8.96 8 0.4190 8.84 10.69 10.52 8 0.3747 10.05 11.87 11.87
16 11 0.0866 17.93 18.71 14.52 11 0.0781 23.62 25.96 21.39 11 0.0651 25.48 25.83 20.65
20 13 0.0180 20.96 21.38 16.34 13 0.0147 32.57 35.91 24.89 14 0.0112 29.88 33.12 24.18
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3301 8.17 9.71 16.91 6 2.2943 13.94 11.93 22.72 7 2.3317 19.38 19.18 19.08
12 7 0.4128 18.92 19.00 18.55 7 0.3893 23.53 21.60 20.16 10 0.3489 32.25 32.25 32.22
16 9 0.0838 27.05 26.97 20.94 10 0.0718 39.12 33.20 25.06 11 0.0492 47.68 50.25 50.31
20 12 0.0197 41.64 41.89 24.57 12 0.0151 51.57 50.00 27.55 15 0.0076 78.60 73.53 73.58

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.23 6.53 4.26
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1635 9.59 10.62 17.14 4 3.3525 3.57 4.05 4.05 5 3.0203 4.12 4.66 4.66
12 9 0.3151 14.47 15.41 18.42 5 1.0369 4.15 4.66 4.67 6 0.8293 4.67 5.50 5.49
16 11 0.0455 17.74 18.47 17.01 6 0.4138 4.63 5.05 5.05 7 0.2824 5.00 5.96 5.95
20 14 0.0084 21.81 23.12 17.49 7 0.1936 5.00 5.61 5.60 8 0.1197 3.30 3.49 3.49
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4274 3.33 3.90 3.90 5 2.3232 3.39 3.73 3.73 5 2.7402 2.84 2.53 2.53
12 8 0.4244 2.98 4.74 4.74 8 0.3758 4.00 4.91 4.89 8 0.5360 2.26 2.31 2.31
16 11 0.0782 6.03 7.85 7.76 11 0.0581 6.14 7.56 7.56 11 0.1169 4.41 4.35 3.25
20 13 0.0132 6.50 8.46 8.46 14 0.0131 7.00 8.59 8.63 13 0.0280 4.44 4.38 3.20
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4803 2.83 2.37 2.38 5 2.4404 3.90 4.13 4.13 5 2.3234 3.97 3.94 3.94
12 8 0.4455 2.90 2.42 2.42 8 0.4197 3.22 3.83 3.83 8 0.3827 4.12 4.05 4.06
16 11 0.0840 4.53 4.31 3.00 11 0.0761 5.86 6.34 4.67 11 0.0629 6.08 6.12 4.49
20 13 0.0183 4.56 4.31 2.99 13 0.0154 6.99 7.13 4.65 14 0.0121 7.29 6.85 4.44
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.2994 6.95 6.99 13.88 6 2.2649 13.30 8.16 18.54 7 2.3451 10.59 11.06 11.06
12 7 0.4106 9.46 9.59 13.72 7 0.3873 13.63 9.98 15.64 10 0.3354 14.54 14.44 14.99
16 9 0.0845 11.56 11.24 13.52 10 0.0708 16.86 12.67 16.68 11 0.0510 16.08 16.53 15.48
20 12 0.0198 15.19 13.60 14.01 12 0.0147 18.46 14.79 16.20 15 0.0087 23.08 21.47 21.05

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
50.59 23.72 14.31
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1566 15.09 16.30 20.03 4 3.3462 4.69 5.28 5.30 5 3.0448 5.06 5.74 5.75
12 9 0.3146 41.42 43.35 25.34 5 1.0310 8.87 9.59 9.66 6 0.8244 10.75 12.01 12.02
16 11 0.0456 70.44 73.32 29.70 6 0.4035 16.26 17.55 17.56 7 0.2885 16.81 20.44 20.45
20 14 0.0066 103.98 103.69 35.11 7 0.1879 19.37 21.53 21.58 8 0.1185 13.60 15.31 15.30
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4515 3.97 4.54 4.55 5 2.3208 5.47 6.21 6.31 5 2.7234 3.55 3.38 3.35
12 8 0.4244 8.05 10.34 10.34 8 0.3758 8.78 11.20 11.28 8 0.5407 6.41 6.65 6.62
16 11 0.0776 19.70 22.46 22.44 11 0.0641 19.80 22.42 22.41 11 0.1174 14.83 16.08 11.94
20 13 0.0148 24.37 30.31 30.32 14 0.0120 25.03 31.58 31.60 13 0.0277 17.13 18.19 13.45
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4625 3.73 3.45 3.45 5 2.4388 4.66 5.05 5.06 5 2.3198 5.52 5.84 5.85
12 8 0.4428 7.53 7.58 7.59 8 0.4190 7.85 8.99 9.08 8 0.3747 10.36 11.78 11.80
16 11 0.0866 14.92 16.11 11.68 11 0.0781 19.83 21.41 16.97 11 0.0651 19.86 21.19 16.84
20 13 0.0180 17.35 18.28 13.21 13 0.0147 24.97 26.91 19.80 14 0.0112 25.37 26.91 19.44
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3301 8.58 8.52 15.32 6 2.2943 13.86 9.73 20.08 7 2.3317 13.63 14.45 14.27
12 7 0.4128 16.86 16.40 17.67 7 0.3893 22.50 20.48 19.99 10 0.3489 29.65 29.73 30.34
16 9 0.0838 27.92 27.00 21.72 10 0.0718 42.13 33.14 25.16 11 0.0492 47.06 47.36 47.65
20 12 0.0197 44.48 41.83 24.42 12 0.0151 53.67 50.28 27.84 15 0.0076 80.17 73.52 73.42

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
18.75 2.41 1.99
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1635 6.33 4.38 11.34 4 3.3525 1.31 1.19 1.18 5 3.0203 1.61 1.29 1.29
12 9 0.3151 9.49 6.63 11.73 5 1.0369 1.36 1.34 1.34 6 0.8293 1.70 1.41 1.41
16 11 0.0455 12.41 8.19 10.97 6 0.4138 1.53 1.54 1.54 7 0.2824 1.74 1.57 1.57
20 14 0.0084 15.61 10.74 11.22 7 0.1936 1.73 1.75 1.75 8 0.1197 1.80 1.58 1.58
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4274 2.28 1.70 1.70 5 2.3232 2.27 1.74 1.75 5 2.7402 2.03 1.70 1.69
12 8 0.4244 2.16 1.84 1.84 8 0.3758 2.73 2.22 2.13 8 0.5360 1.49 1.35 1.35
16 11 0.0782 4.07 2.89 2.90 11 0.0581 4.08 3.01 3.02 11 0.1169 2.91 2.38 1.74
20 13 0.0132 4.54 3.32 3.33 14 0.0131 4.66 3.58 3.60 13 0.0280 2.93 2.93 1.74
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4803 2.02 1.70 1.67 5 2.4274 2.30 1.70 1.70 5 2.3232 2.27 1.73 1.74
12 8 0.4455 2.02 1.58 1.58 8 0.4244 2.15 1.84 1.84 8 0.3758 2.80 2.14 2.15
16 11 0.0840 2.88 2.39 1.74 11 0.0782 4.08 2.92 2.92 11 0.0581 4.07 3.02 3.02
20 13 0.0183 2.88 2.85 1.72 13 0.0132 4.62 3.36 3.44 14 0.0131 4.70 3.58 3.58
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.2994 3.13 3.17 10.13 6 2.2649 6.99 3.91 12.64 7 2.3451 7.72 4.88 4.88
12 7 0.4106 4.27 4.29 9.89 7 0.3873 7.43 4.58 10.47 10 0.3354 10.95 6.91 6.91
16 9 0.0845 5.41 5.19 9.65 10 0.0708 8.57 5.79 11.23 11 0.0510 12.07 7.57 7.58
20 12 0.0198 6.86 6.23 10.11 12 0.0147 9.52 6.41 10.75 15 0.0087 17.68 10.68 10.66

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
23.51 10.96 6.04
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1566 7.73 6.33 13.02 4 3.3462 2.04 1.97 1.99 5 3.0448 2.18 2.12 2.13
12 9 0.3146 13.83 12.20 16.03 5 1.0310 3.63 3.29 3.38 6 0.8244 3.24 3.33 3.31
16 11 0.0456 30.48 25.52 17.61 6 0.4035 6.58 6.33 6.21 7 0.2885 6.51 6.01 6.52
20 14 0.0066 54.21 40.91 20.82 7 0.1879 8.97 7.80 7.81 8 0.1185 7.66 6.82 6.51
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4515 2.73 2.55 2.63 5 2.3208 2.74 2.66 2.65 5 2.7234 2.41 2.56 2.58
12 8 0.4244 3.90 4.25 4.28 8 0.3758 4.31 4.79 4.78 8 0.5407 2.77 3.35 3.64
16 11 0.0776 10.38 9.50 9.55 11 0.0641 11.31 9.78 9.73 11 0.1174 8.50 8.03 5.47
20 13 0.0148 15.63 13.04 13.12 14 0.0120 15.82 13.30 12.94 13 0.0277 9.57 10.51 6.13
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4625 2.37 2.59 2.61 5 2.4515 2.75 2.59 2.62 5 2.3208 2.76 2.66 2.68
12 8 0.4428 3.12 3.43 3.44 8 0.4244 4.19 4.53 4.34 8 0.3758 4.35 4.75 4.55
16 11 0.0866 7.58 7.79 5.35 11 0.0776 11.07 10.19 9.87 11 0.0641 10.86 9.65 9.70
20 13 0.0180 10.47 11.22 6.42 13 0.0148 15.55 12.71 12.52 14 0.0120 16.74 13.74 13.34
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3301 4.59 4.25 11.31 6 2.2943 8.92 5.00 13.60 7 2.3317 9.08 6.98 6.91
12 7 0.4128 7.94 7.21 12.22 7 0.3893 13.43 8.32 13.11 10 0.3489 15.28 12.28 12.56
16 9 0.0838 16.31 13.91 14.12 10 0.0718 24.36 15.09 15.94 11 0.0492 26.49 22.91 22.83
20 12 0.0197 22.52 17.90 15.22 12 0.0151 30.21 21.19 17.29 15 0.0076 49.89 38.45 38.76

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
25.17 5.16 3.68
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1635 9.26 10.50 14.08 4 3.3525 3.71 3.44 3.43 5 3.0203 4.27 4.11 4.08
12 9 0.3151 13.57 14.83 14.80 5 1.0369 4.33 3.86 3.82 6 0.8293 4.95 4.72 4.61
16 11 0.0455 16.32 18.07 13.79 6 0.4138 5.43 4.27 4.23 7 0.2824 5.56 5.06 5.07
20 14 0.0084 28.09 49.72 17.14 7 0.1936 7.25 4.65 4.65 8 0.1197 6.15 5.49 5.51
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4274 5.28 4.22 4.22 5 2.3232 7.86 4.54 4.57 5 2.7402 2.85 2.10 2.09
12 8 0.4244 8.16 6.96 6.93 8 0.3758 12.93 6.88 6.84 8 0.5360 2.79 2.91 2.29
16 11 0.0782 10.47 9.24 9.14 11 0.0581 12.53 10.20 10.33 11 0.1169 4.25 4.37 3.05
20 13 0.0132 11.89 19.27 19.23 14 0.0131 14.12 12.22 12.20 13 0.0280 7.94 4.38 3.05
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4803 2.84 1.90 1.90 5 2.4404 3.71 3.18 3.18 5 2.3234 3.77 2.99 2.99
12 8 0.4455 3.20 3.25 2.58 8 0.4197 4.19 3.74 3.16 8 0.3827 5.96 4.45 3.78
16 11 0.0840 4.55 4.20 2.91 11 0.0761 7.76 6.31 4.83 11 0.0629 9.33 6.19 4.79
20 13 0.0183 4.39 4.23 2.88 13 0.0154 12.28 6.82 4.82 14 0.0121 8.66 6.66 4.81
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.2994 6.89 6.52 11.25 6 2.2649 9.62 8.80 13.97 7 2.3451 9.93 8.82 8.86
12 7 0.4106 9.73 9.62 11.88 7 0.3873 11.57 11.07 13.08 10 0.3354 13.77 12.80 12.79
16 9 0.0845 11.37 16.57 15.02 10 0.0708 13.99 13.17 12.54 11 0.0510 15.29 20.89 21.11
20 12 0.0198 14.51 13.82 12.43 12 0.0147 16.04 15.03 12.32 15 0.0087 23.40 40.43 43.24

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
42.35 23.78 15.89
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1566 9.97 11.01 15.46 4 3.3462 4.07 3.72 3.71 5 3.0448 4.62 4.41 4.45
12 9 0.3146 16.91 17.02 16.42 5 1.0310 6.22 5.75 5.60 6 0.8244 7.07 6.68 6.63
16 11 0.0456 66.89 77.31 25.65 6 0.4035 15.45 14.79 14.76 7 0.2885 16.25 15.88 15.92
20 14 0.0066 96.38 109.69 29.54 7 0.1879 19.55 16.60 16.63 8 0.1185 20.38 22.50 22.57
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4515 5.96 4.58 4.55 5 2.3208 8.11 4.93 4.92 5 2.7234 3.20 2.36 2.29
12 8 0.4244 10.44 9.23 9.04 8 0.3758 15.56 20.01 20.00 8 0.5407 5.06 5.09 4.49
16 11 0.0776 25.81 23.60 23.68 11 0.0641 29.92 28.22 28.24 11 0.1174 14.11 15.56 11.03
20 13 0.0148 35.77 34.58 34.76 14 0.0120 39.59 37.71 37.71 13 0.0277 16.33 17.82 12.30
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4625 7.67 6.09 6.09 5 2.4388 4.10 3.45 3.43 5 2.3198 4.16 3.22 3.19
12 8 0.4428 5.23 5.19 4.35 8 0.4190 6.21 5.55 5.11 8 0.3747 8.08 6.77 6.07
16 11 0.0866 15.69 15.80 11.12 11 0.0781 22.86 18.34 15.43 11 0.0651 23.67 18.81 15.83
20 13 0.0180 19.24 18.86 12.84 13 0.0147 29.40 26.49 18.73 14 0.0112 29.71 24.34 18.67
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3301 7.53 7.29 12.01 6 2.2943 10.21 9.63 14.67 7 2.3317 11.38 9.93 9.92
12 7 0.4128 11.29 12.33 13.84 7 0.3893 15.22 15.15 14.96 10 0.3489 15.71 14.03 14.03
16 9 0.0838 25.43 26.85 20.03 10 0.0718 33.17 32.55 19.68 11 0.0492 40.43 39.89 39.96
20 12 0.0197 35.60 34.93 23.03 12 0.0151 42.41 41.36 21.84 15 0.0076 67.85 63.58 63.72

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
74.43 38.06 14.40
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1546 27.96 44.69 38.08 4 3.3200 13.38 18.11 17.87 5 3.0523 17.26 20.11 20.87
12 9 0.3118 41.61 67.44 40.49 5 1.0423 18.39 21.26 21.51 6 0.8142 16.20 18.94 18.99
16 11 0.0453 50.69 83.29 40.16 6 0.3972 17.48 19.26 19.80 7 0.2784 17.33 21.08 21.09
20 14 0.0062 64.28 105.14 39.96 7 0.1886 18.55 20.85 20.82 8 0.1259 19.14 21.99 23.00
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4144 19.39 22.62 22.56 5 2.3168 25.59 26.31 26.57 5 2.7635 12.54 15.75 15.74
12 8 0.4200 25.83 29.50 29.60 8 0.3742 36.31 32.48 32.46 8 0.5186 14.13 17.74 17.70
16 11 0.0783 32.15 35.80 35.70 11 0.0667 68.75 49.07 49.22 11 0.1230 16.77 20.69 20.71
20 13 0.0150 36.18 40.22 40.43 14 0.0106 82.49 58.28 58.06 13 0.0295 24.25 24.92 25.15
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4627 14.39 16.06 16.02 5 2.4144 19.61 22.67 22.64 5 2.3168 25.58 26.35 26.43
12 8 0.4575 19.29 19.73 19.50 8 0.4200 26.54 29.49 29.69 8 0.3742 36.33 32.50 32.46
16 11 0.0876 23.06 23.95 23.93 11 0.0783 32.11 35.78 35.71 11 0.0667 68.72 49.03 49.18
20 13 0.0171 31.80 32.95 32.79 13 0.0150 36.22 40.25 40.29 14 0.0106 82.54 58.34 58.09
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3219 17.91 24.52 27.26 6 2.2856 32.83 30.09 35.90 7 2.3420 31.83 34.52 34.37
12 7 0.4140 31.42 38.24 29.15 7 0.3818 45.95 39.64 32.86 10 0.3419 43.03 44.43 44.35
16 9 0.0858 37.65 45.02 28.69 10 0.0720 48.45 47.85 34.34 11 0.0511 44.75 47.17 47.17
20 12 0.0216 42.33 50.57 29.70 12 0.0148 51.43 51.37 34.23 15 0.0066 62.72 65.06 64.93

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
108.02 126.24 26.58
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1489 30.11 47.44 43.05 4 3.3441 13.73 18.68 18.64 5 3.0511 20.13 25.57 24.62
12 9 0.3184 90.80 130.05 61.12 5 1.0317 27.32 33.77 33.81 6 0.8206 25.73 31.56 30.80
16 11 0.0455 171.93 247.79 77.64 6 0.4015 38.22 41.54 46.42 7 0.2865 38.65 50.21 50.21
20 14 0.0068 269.41 405.98 104.13 7 0.1883 47.22 61.95 62.06 8 0.1200 61.09 64.71 64.61
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4525 25.80 28.99 28.98 5 2.3280 33.08 36.50 36.76 5 2.7396 16.28 20.02 20.28
12 8 0.4209 41.74 44.47 44.64 8 0.3751 57.02 54.74 54.78 8 0.5422 25.24 28.79 28.81
16 11 0.0783 64.63 68.66 69.10 11 0.0645 101.69 82.11 81.72 11 0.1202 41.78 44.59 44.60
20 13 0.0144 87.58 93.30 93.27 14 0.0117 133.99 108.93 108.83 13 0.0273 69.73 76.28 76.31
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4723 16.66 19.46 18.31 5 2.4525 22.76 26.54 26.48 5 2.3280 29.64 33.06 32.98
12 8 0.4399 28.55 28.76 28.66 8 0.4209 39.57 43.52 43.56 8 0.3751 51.85 49.14 48.94
16 11 0.0859 53.24 47.41 47.42 11 0.0783 67.73 72.12 72.06 11 0.0645 101.96 80.59 80.71
20 13 0.0182 82.14 86.56 85.15 13 0.0144 86.45 93.21 93.42 14 0.0117 134.36 109.31 109.14
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3203 20.55 28.19 30.06 6 2.2996 35.91 35.78 40.26 7 2.3251 41.08 40.39 40.88
12 7 0.4161 44.52 52.24 37.96 7 0.3865 60.70 54.16 44.00 10 0.3470 64.64 66.11 66.36
16 9 0.0852 65.68 73.95 47.24 10 0.0713 84.47 86.74 57.97 11 0.0480 90.83 93.52 93.41
20 12 0.0196 83.55 91.11 56.27 12 0.0155 103.33 105.73 66.63 15 0.0075 141.98 141.51 143.52

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
79.11 14.35 8.55
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1546 15.89 22.95 28.12 4 3.3200 12.20 13.46 13.46 5 3.0523 14.83 16.34 16.20
12 9 0.3118 22.29 33.86 28.80 5 1.0423 15.34 16.59 16.62 6 0.8142 17.15 18.80 18.75
16 11 0.0453 27.83 46.58 29.42 6 0.3972 17.57 19.12 19.13 7 0.2784 20.68 21.58 21.58
20 14 0.0062 35.72 54.59 29.97 7 0.1886 21.05 22.04 22.02 8 0.1259 23.28 24.37 24.21
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4144 17.28 17.03 17.05 5 2.3168 16.08 17.21 17.19 5 2.7635 7.82 8.72 8.68
12 8 0.4200 21.99 26.00 25.98 8 0.3742 24.27 26.09 26.07 8 0.5186 11.07 12.40 12.41
16 11 0.0783 34.28 36.44 36.38 11 0.0667 33.43 35.51 35.59 11 0.1230 13.57 15.41 15.39
20 13 0.0150 37.32 38.82 38.83 14 0.0106 42.25 40.66 40.74 13 0.0295 17.62 20.30 20.26
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4627 7.25 8.64 8.49 5 2.4144 17.28 17.03 17.16 5 2.3168 16.12 17.20 17.18
12 8 0.4575 10.95 12.16 12.17 8 0.4200 21.99 25.96 25.95 8 0.3742 24.27 26.09 26.10
16 11 0.0876 13.03 15.29 15.30 11 0.0783 34.30 36.41 36.43 11 0.0667 33.38 35.60 35.54
20 13 0.0171 17.54 19.07 19.08 13 0.0150 37.34 38.83 38.82 14 0.0106 42.35 40.70 40.78
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3219 17.09 18.16 22.51 6 2.2856 47.06 40.79 40.77 7 2.3420 26.11 27.38 28.36
12 7 0.4140 26.63 27.58 23.32 7 0.3818 51.51 45.68 38.85 10 0.3419 36.64 35.47 35.08
16 9 0.0858 32.26 34.69 23.31 10 0.0720 59.27 53.37 40.26 11 0.0511 39.16 38.01 37.76
20 12 0.0216 38.45 45.38 28.08 12 0.0148 62.76 57.35 42.17 15 0.0066 51.27 49.67 49.63

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
123.96 61.85 23.04
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1489 23.10 32.62 32.79 4 3.3441 14.84 16.33 16.32 5 3.0511 17.51 18.67 18.87
12 9 0.3184 56.03 74.83 41.32 5 1.0317 26.40 27.92 27.90 6 0.8206 26.97 30.89 30.81
16 11 0.0455 113.47 163.24 58.03 6 0.4015 39.03 47.52 47.38 7 0.2865 48.60 49.88 49.85
20 14 0.0068 165.36 239.18 71.63 7 0.1883 62.89 62.09 62.05 8 0.1200 66.54 65.52 65.36
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4525 20.28 20.10 19.89 5 2.3280 19.84 21.24 21.32 5 2.7396 10.21 11.25 11.26
12 8 0.4209 34.40 40.42 40.33 8 0.3751 40.96 43.10 43.06 8 0.5422 19.77 20.84 20.90
16 11 0.0783 69.19 70.53 70.52 11 0.0645 69.35 71.03 71.08 11 0.1202 37.95 39.16 40.09
20 13 0.0144 87.70 86.91 87.15 14 0.0117 94.08 91.09 91.22 13 0.0273 51.92 52.71 52.61
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4723 9.57 11.07 11.12 5 2.4525 20.16 20.05 20.25 5 2.3280 19.36 20.76 20.74
12 8 0.4399 21.08 23.06 21.66 8 0.4209 35.28 40.69 40.73 8 0.3751 39.52 42.21 42.20
16 11 0.0859 36.75 39.24 39.34 11 0.0783 68.79 68.31 68.29 11 0.0645 68.13 68.00 68.11
20 13 0.0182 51.79 52.82 52.76 13 0.0144 87.95 87.06 87.09 14 0.0117 94.35 93.51 93.56
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3203 20.30 21.36 24.85 6 2.2996 49.13 42.52 43.03 7 2.3251 34.48 37.30 35.32
12 7 0.4161 40.97 38.85 29.52 7 0.3865 66.39 59.02 49.34 10 0.3470 59.25 56.79 56.77
16 9 0.0852 62.37 63.12 38.87 10 0.0713 91.66 86.92 63.38 11 0.0480 88.36 82.09 81.96
20 12 0.0196 80.74 86.42 54.09 12 0.0155 108.60 104.77 73.29 15 0.0075 130.58 117.37 117.36

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
31.82 6.67 5.67
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1546 50.53 45.57 32.42 4 3.3200 18.25 20.10 21.64 5 3.0523 21.96 24.24 25.94
12 9 0.3118 77.19 66.01 34.77 5 1.0423 19.69 20.24 21.58 6 0.8142 25.12 25.35 26.93
16 11 0.0453 94.33 79.90 33.37 6 0.3972 23.16 23.04 24.30 7 0.2784 27.36 27.12 28.52
20 14 0.0062 122.07 101.03 33.49 7 0.1886 24.27 24.49 25.24 8 0.1259 28.87 29.58 30.02
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4144 21.09 38.26 38.39 5 2.3168 23.53 38.08 38.57 5 2.7253 16.04 27.61 27.22
12 8 0.4200 25.88 52.47 52.45 8 0.3742 29.99 52.81 52.62 8 0.5350 15.50 37.19 27.24
16 11 0.0783 35.62 72.67 73.49 11 0.0667 40.59 72.23 72.99 11 0.1194 25.54 53.74 36.84
20 13 0.0150 39.57 81.79 82.80 14 0.0106 46.01 85.83 88.61 13 0.0276 25.71 54.21 37.25
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4823 16.52 27.47 27.45 5 2.4524 18.52 29.64 29.64 5 2.3084 19.21 29.56 29.48
12 8 0.4562 16.55 43.81 34.28 8 0.4164 17.42 38.33 28.81 8 0.3847 19.01 46.66 37.02
16 11 0.0862 26.17 53.80 36.43 11 0.0758 29.99 57.64 39.58 11 0.0626 30.89 57.34 39.38
20 13 0.0188 26.00 54.09 36.90 13 0.0109 31.16 59.41 39.91 14 0.0103 31.99 59.13 39.94
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3219 24.62 41.58 30.77 6 2.2856 30.58 51.46 33.74 7 2.3420 34.61 58.01 58.09
12 7 0.4140 33.15 57.41 30.80 7 0.3818 37.83 58.14 31.86 10 0.3419 42.81 75.34 77.96
16 9 0.0858 38.29 70.84 30.85 10 0.0720 45.22 76.71 33.20 11 0.0511 45.81 82.77 84.09
20 12 0.0216 50.53 96.72 31.81 12 0.0148 54.56 95.82 32.92 15 0.0066 61.61 113.36 112.80

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
61.43 33.34 17.12
filter<int,K> filter<int,1,block<uint64_t,K>> filter<int,1,block<uint64_t,K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 6 2.1489 57.13 48.47 35.60 4 3.3441 18.51 20.33 22.14 5 3.0511 24.51 28.73 30.82
12 9 0.3184 104.49 113.07 48.22 5 1.0317 22.29 24.70 26.84 6 0.8206 30.33 28.78 30.13
16 11 0.0455 222.31 191.22 59.13 6 0.4015 35.68 35.47 37.06 7 0.2865 47.20 47.49 49.16
20 14 0.0068 351.17 295.42 73.14 7 0.1883 42.70 42.91 44.14 8 0.1200 59.22 58.78 60.52
filter<int,1,multiblock<uint64_t,K>> filter<int,1,multiblock<uint64_t,K>,1> filter<int,1,fast_multiblock32<K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4525 24.44 38.56 39.17 5 2.3280 26.46 38.39 38.80 5 2.7254 16.37 29.54 29.48
12 8 0.4209 32.43 54.42 54.58 8 0.3751 37.45 57.36 56.32 8 0.5375 18.92 41.18 30.09
16 11 0.0783 56.57 87.38 88.21 11 0.0645 63.68 88.78 89.15 11 0.1187 46.71 79.32 61.89
20 13 0.0144 73.78 105.21 106.08 14 0.0117 84.06 115.97 117.74 13 0.0277 58.29 92.41 74.72
filter<int,1,fast_multiblock32<K>,1> filter<int,1,fast_multiblock64<K>> filter<int,1,fast_multiblock64<K>,1>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.4632 16.79 29.09 29.07 5 2.4414 18.79 31.49 31.45 5 2.3147 19.66 36.65 36.72
12 8 0.4402 19.63 49.42 39.99 8 0.4194 19.59 41.59 32.58 8 0.3773 24.13 53.04 43.64
16 11 0.0851 48.31 78.57 62.42 11 0.0779 52.19 82.02 64.01 11 0.0652 53.24 82.71 64.72
20 13 0.0183 59.46 91.39 75.79 13 0.0146 61.15 96.86 77.98 14 0.0112 63.33 98.03 78.38
filter<int,1,block<uint64_t[8],K>> filter<int,1,block<uint64_t[8],K>,1> filter<int,1,multiblock<uint64_t[8],K>>
c K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
8 5 2.3203 32.74 48.09 39.23 6 2.2996 34.20 52.12 36.30 7 2.3251 36.79 58.39 58.56
12 7 0.4161 39.13 59.87 34.49 7 0.3865 46.37 67.59 43.43 10 0.3470 50.06 83.98 86.46
16 9 0.0852 57.01 84.05 46.11 10 0.0713 72.61 100.23 60.63 11 0.0480 75.89 103.59 104.42
20 12 0.0196 80.45 118.76 54.36 12 0.0155 93.86 129.54 70.91 15 0.0075 107.14 141.02 140.99
Description
Mirrored via gitea-mirror
Readme 2.6 MiB
Languages
Python 68.8%
Shell 31.2%