2025-06-11 05:53:56 -05:00
2025-06-11 12:44:42 +02:00
2025-06-11 05:53:56 -05:00
2025-03-30 17:13:29 +00:00
2025-03-30 17:20:44 +00:00
2025-03-30 17:13:27 +00:00
2025-03-30 17:22:11 +00:00
2025-03-30 17:17:26 +00:00
2025-03-30 17:26:00 +00:00
2025-03-03 11:38:47 +01:00
2025-06-11 12:44:42 +02: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
27.45 4.68 3.73
filter<K> filter<1,block<uint64_t,K>> filter<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 11.17 10.66 16.53 4 3.3525 4.01 4.35 4.35 5 3.0203 4.87 5.05 5.05
12 9 0.3151 16.95 15.54 17.62 5 1.0369 4.79 4.93 4.95 6 0.8293 5.41 5.51 5.50
16 11 0.0455 20.23 18.84 16.53 6 0.4138 5.38 5.31 5.30 7 0.2824 6.23 6.26 6.27
20 14 0.0084 26.90 23.13 16.81 7 0.1936 6.41 6.06 5.92 8 0.1197 6.71 6.59 6.60
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.08 5.73 5.73 5 2.3232 5.54 6.73 6.88 5 2.7402 2.96 3.27 3.28
12 8 0.4244 7.08 8.87 8.88 8 0.3758 8.18 10.06 10.07 8 0.5360 2.47 3.11 3.12
16 11 0.0782 9.19 13.70 13.75 11 0.0581 16.88 14.16 14.23 11 0.1169 5.75 5.79 3.91
20 13 0.0132 11.03 15.44 15.47 14 0.0131 12.06 17.50 17.53 13 0.0280 5.87 5.87 3.93
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.98 3.26 3.25 5 2.4404 4.40 5.09 5.02 5 2.3234 4.53 5.03 5.06
12 8 0.4455 3.04 3.32 3.34 8 0.4197 3.24 4.48 4.49 8 0.3827 4.46 5.11 5.10
16 11 0.0840 5.49 5.56 3.86 11 0.0761 7.06 7.71 5.94 11 0.0629 7.89 7.53 5.84
20 13 0.0183 5.50 5.59 3.80 13 0.0154 8.14 9.14 6.04 14 0.0121 8.32 9.06 5.93

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
30.99 18.54 6.58
filter<K> filter<1,block<uint64_t,K>> filter<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 12.21 11.06 16.94 4 3.3462 4.44 4.73 4.73 5 3.0448 5.23 5.37 5.38
12 9 0.3146 18.09 17.08 17.86 5 1.0310 5.02 5.07 5.15 6 0.8244 6.87 6.34 6.28
16 11 0.0456 28.67 29.43 17.81 6 0.4035 6.30 6.48 6.31 7 0.2885 7.43 7.29 7.57
20 14 0.0066 46.54 39.91 19.26 7 0.1879 10.08 10.49 9.53 8 0.1185 9.68 9.08 9.68
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.68 6.49 6.50 5 2.3208 6.06 7.47 7.71 5 2.7234 3.37 3.80 3.75
12 8 0.4244 7.39 9.45 9.36 8 0.3758 8.20 10.08 10.12 8 0.5407 2.72 3.38 3.35
16 11 0.0776 11.28 15.08 15.13 11 0.0641 17.90 15.65 15.55 11 0.1174 6.76 6.87 4.87
20 13 0.0148 14.39 20.03 18.67 14 0.0120 16.41 22.94 22.46 13 0.0277 9.38 9.60 6.48
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.36 3.73 3.70 5 2.4388 4.92 5.65 5.58 5 2.3198 5.03 5.49 5.57
12 8 0.4428 3.35 3.69 3.67 8 0.4190 3.46 4.77 4.76 8 0.3747 4.81 5.52 5.46
16 11 0.0866 6.69 7.18 5.10 11 0.0781 8.63 9.82 7.79 11 0.0651 9.80 9.55 7.63
20 13 0.0180 9.08 9.05 7.13 13 0.0147 11.60 13.64 9.10 14 0.0112 11.29 15.12 16.84

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.46 4.21 3.48
filter<K> filter<1,block<uint64_t,K>> filter<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.27 9.01 15.62 4 3.3525 3.33 4.07 3.96 5 3.0203 3.88 4.56 4.59
12 9 0.3151 13.89 13.63 16.57 5 1.0369 3.84 4.73 4.57 6 0.8293 4.48 5.30 5.30
16 11 0.0455 17.29 16.60 15.92 6 0.4138 4.35 5.26 5.09 7 0.2824 4.91 5.98 5.99
20 14 0.0084 20.13 22.66 15.89 7 0.1936 4.82 5.70 5.70 8 0.1197 2.95 3.28 3.29
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.04 3.59 3.59 5 2.3232 3.16 3.48 3.52 5 2.7402 2.59 2.51 2.49
12 8 0.4244 2.72 3.36 3.37 8 0.3758 3.71 3.71 3.74 8 0.5360 2.14 2.27 2.30
16 11 0.0782 5.65 6.23 6.43 11 0.0581 5.89 6.19 6.12 11 0.1169 4.21 4.40 3.23
20 13 0.0132 6.03 6.67 6.69 14 0.0131 6.31 7.31 7.08 13 0.0280 4.22 4.38 3.17
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.59 2.35 2.36 5 2.4404 3.58 4.08 4.08 5 2.3234 3.70 3.94 3.93
12 8 0.4455 2.70 2.40 2.39 8 0.4197 2.90 3.73 3.73 8 0.3827 3.90 4.04 4.04
16 11 0.0840 4.24 4.32 2.97 11 0.0761 5.54 6.12 4.59 11 0.0629 5.68 5.97 4.53
20 13 0.0183 4.28 4.33 2.97 13 0.0154 6.74 7.15 4.94 14 0.0121 6.81 7.02 4.67

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
32.58 16.87 6.60
filter<K> filter<1,block<uint64_t,K>> filter<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 10.84 10.51 16.47 4 3.3462 3.83 4.63 4.49 5 3.0448 4.49 5.19 5.19
12 9 0.3146 15.69 15.37 16.96 5 1.0310 4.29 5.10 4.96 6 0.8244 4.98 5.78 5.73
16 11 0.0456 23.83 24.82 16.99 6 0.4035 5.46 6.31 6.13 7 0.2885 6.17 7.83 7.52
20 14 0.0066 42.24 39.92 20.02 7 0.1879 8.79 9.61 15.23 8 0.1185 5.61 6.20 5.94
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.53 4.13 4.10 5 2.3208 3.57 3.95 3.95 5 2.7234 3.03 3.02 3.04
12 8 0.4244 3.03 3.69 3.66 8 0.3758 4.05 4.18 4.22 8 0.5407 2.47 2.55 2.55
16 11 0.0776 7.07 7.79 7.99 11 0.0641 7.26 8.07 8.04 11 0.1174 5.45 5.85 4.45
20 13 0.0148 9.10 10.99 10.58 14 0.0120 9.62 11.68 12.15 13 0.0277 7.77 8.39 7.29
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.07 2.92 2.95 5 2.4388 4.18 4.73 4.71 5 2.3198 4.27 4.60 4.57
12 8 0.4428 2.96 2.79 2.78 8 0.4190 3.20 4.05 4.13 8 0.3747 4.33 4.53 4.66
16 11 0.0866 5.54 5.62 3.92 11 0.0781 6.62 7.53 5.91 11 0.0651 7.03 7.61 6.42
20 13 0.0180 9.88 9.24 6.20 13 0.0147 10.04 11.53 8.07 14 0.0112 10.14 11.20 7.99

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
19.76 4.32 3.02
filter<K> filter<1,block<uint64_t,K>> filter<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 7.35 4.38 11.90 4 3.3525 1.39 1.26 1.31 5 3.0203 1.74 1.40 1.40
12 9 0.3151 9.44 7.49 12.88 5 1.0369 1.41 1.49 1.49 6 0.8293 1.80 1.57 1.56
16 11 0.0455 14.72 9.32 12.07 6 0.4138 1.64 1.66 1.67 7 0.2824 1.82 1.80 1.76
20 14 0.0084 15.54 10.68 11.22 7 0.1936 4.16 2.08 2.00 8 0.1197 1.93 1.66 1.77
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.49 3.62 1.85 5 2.3232 2.40 1.89 1.93 5 2.7402 2.14 1.89 1.81
12 8 0.4244 2.20 2.88 2.23 8 0.3758 3.02 2.39 2.29 8 0.5360 1.70 1.51 1.44
16 11 0.0782 4.17 3.13 3.14 11 0.0581 4.38 3.19 3.19 11 0.1169 3.21 2.70 1.93
20 13 0.0132 5.15 4.23 4.13 14 0.0131 5.22 4.20 4.21 13 0.0280 3.19 3.17 1.83
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.13 1.85 1.88 5 2.4274 2.48 1.84 1.82 5 2.3232 2.51 1.89 1.87
12 8 0.4455 2.36 1.73 1.74 8 0.4244 2.46 2.08 2.08 8 0.3758 2.98 2.35 2.47
16 11 0.0840 3.16 2.45 1.92 11 0.0782 4.41 2.93 3.06 11 0.0581 4.69 3.10 3.03
20 13 0.0183 2.94 2.85 1.75 13 0.0132 6.98 3.76 4.11 14 0.0131 4.92 3.81 3.78

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
28.50 13.79 8.01
filter<K> filter<1,block<uint64_t,K>> filter<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.56 7.92 17.75 4 3.3462 1.95 3.56 3.32 5 3.0448 2.78 2.83 2.85
12 9 0.3146 23.43 21.49 22.68 5 1.0310 5.86 6.51 4.65 6 0.8244 5.33 5.76 5.96
16 11 0.0456 40.51 32.73 22.26 6 0.4035 8.98 8.13 7.84 7 0.2885 9.18 9.25 8.74
20 14 0.0066 67.35 50.68 24.76 7 0.1879 9.51 10.22 9.37 8 0.1185 8.18 7.94 7.73
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.04 2.81 3.48 5 2.3208 3.48 3.91 3.67 5 2.7234 3.06 3.46 3.47
12 8 0.4244 7.57 7.39 7.99 8 0.3758 6.95 8.08 9.22 8 0.5407 2.73 6.67 6.46
16 11 0.0776 15.16 9.92 11.60 11 0.0641 15.35 12.67 11.48 11 0.1174 10.85 10.72 7.26
20 13 0.0148 17.77 17.05 18.43 14 0.0120 20.02 17.36 17.71 13 0.0277 11.06 13.68 8.15
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.24 4.32 3.19 5 2.4515 3.67 4.58 4.33 5 2.3208 3.24 4.29 4.17
12 8 0.4428 5.93 5.95 4.54 8 0.4244 7.68 8.47 9.15 8 0.3758 4.12 4.68 4.52
16 11 0.0866 7.36 7.47 5.01 11 0.0776 9.48 8.73 8.70 11 0.0641 9.46 8.53 8.50
20 13 0.0180 9.46 10.42 5.96 13 0.0148 14.29 13.25 13.52 14 0.0120 15.82 13.63 13.47

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
36.61 5.68 3.88
filter<K> filter<1,block<uint64_t,K>> filter<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.23 12.43 16.99 4 3.3525 5.85 4.30 4.31 5 3.0203 7.01 5.36 5.22
12 9 0.3151 18.77 17.78 17.61 5 1.0369 6.96 4.77 4.78 6 0.8293 8.00 5.92 5.96
16 11 0.0455 23.64 21.33 16.73 6 0.4138 8.59 5.34 5.41 7 0.2824 9.37 6.56 6.61
20 14 0.0084 31.12 27.63 17.32 7 0.1936 9.90 5.91 5.96 8 0.1197 10.45 7.45 7.47
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 8.01 5.62 5.60 5 2.3232 9.24 5.66 5.72 5 2.7402 3.41 3.98 3.97
12 8 0.4244 12.12 8.54 8.58 8 0.3758 16.33 8.07 7.95 8 0.5360 2.87 4.91 4.18
16 11 0.0782 15.45 11.20 11.05 11 0.0581 15.96 10.70 10.77 11 0.1169 5.09 7.12 5.39
20 13 0.0132 16.77 14.11 14.29 14 0.0131 19.38 13.57 13.64 13 0.0280 5.08 7.11 5.41
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.27 3.88 3.90 5 2.4404 4.51 5.47 5.55 5 2.3234 4.74 5.53 5.47
12 8 0.4455 3.29 5.58 4.75 8 0.4197 4.73 5.81 5.05 8 0.3827 6.96 7.08 6.22
16 11 0.0840 5.10 6.97 5.06 11 0.0761 10.04 9.46 7.55 11 0.0629 9.59 9.31 7.53
20 13 0.0183 5.18 6.94 5.07 13 0.0154 10.38 10.62 7.58 14 0.0121 10.24 10.29 7.40

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
46.11 23.31 9.69
filter<K> filter<1,block<uint64_t,K>> filter<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 14.84 13.05 17.91 4 3.3462 7.06 4.49 4.50 5 3.0448 8.11 5.74 5.85
12 9 0.3146 25.18 20.59 18.58 5 1.0310 9.13 5.44 5.50 6 0.8244 10.50 7.77 6.62
16 11 0.0456 36.55 39.31 19.46 6 0.4035 13.40 7.31 7.28 7 0.2885 12.04 8.91 14.47
20 14 0.0066 83.30 83.93 24.98 7 0.1879 16.31 12.64 15.82 8 0.1185 20.81 15.83 15.73
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 9.50 6.31 6.39 5 2.3208 9.61 6.45 6.43 5 2.7234 3.78 4.27 4.26
12 8 0.4244 15.75 10.51 11.30 8 0.3758 20.97 9.03 9.37 8 0.5407 3.52 6.14 4.50
16 11 0.0776 25.58 20.31 18.44 11 0.0641 27.35 15.24 19.41 11 0.1174 10.92 14.32 12.54
20 13 0.0148 34.78 30.36 33.15 14 0.0120 38.87 28.78 25.22 13 0.0277 14.16 19.46 13.75
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.67 4.18 4.23 5 2.4388 5.06 6.17 5.96 5 2.3198 5.12 5.82 5.86
12 8 0.4428 3.86 6.11 5.10 8 0.4190 5.78 8.72 7.16 8 0.3747 7.77 7.71 6.91
16 11 0.0866 6.94 8.87 8.60 11 0.0781 12.55 11.10 9.40 11 0.0651 12.32 15.23 15.45
20 13 0.0180 12.22 16.96 14.46 13 0.0147 18.56 24.02 18.81 14 0.0112 23.05 21.37 14.28

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
61.39 29.87 13.56
filter<K> filter<1,block<uint64_t,K>> filter<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.34 41.68 36.29 4 3.3200 12.46 15.91 15.91 5 3.0523 16.05 19.66 19.65
12 9 0.3118 36.64 63.02 39.31 5 1.0423 17.27 19.33 19.19 6 0.8142 16.04 18.59 18.55
16 11 0.0453 44.37 78.01 38.42 6 0.3972 17.23 18.39 18.44 7 0.2784 18.13 18.29 18.26
20 14 0.0062 57.23 97.26 37.66 7 0.1886 18.23 18.75 18.75 8 0.1259 18.99 20.01 20.01
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 16.20 20.49 20.45 5 2.3168 30.66 22.19 22.16 5 2.7635 10.74 13.77 13.76
12 8 0.4200 21.31 26.75 26.75 8 0.3742 39.70 29.00 29.01 8 0.5186 12.83 15.93 15.93
16 11 0.0783 29.28 33.18 33.17 11 0.0667 63.56 45.78 45.79 11 0.1230 14.47 19.54 19.56
20 13 0.0150 34.64 36.19 36.29 14 0.0106 77.64 55.49 55.45 13 0.0295 23.70 24.87 24.88
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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.62 16.09 15.73 5 2.4144 16.20 20.52 20.50 5 2.3168 30.62 22.21 22.17
12 8 0.4575 19.10 20.23 20.24 8 0.4200 21.35 26.79 26.81 8 0.3742 39.74 29.08 29.11
16 11 0.0876 27.81 24.99 25.02 11 0.0783 29.30 33.24 33.17 11 0.0667 63.48 45.76 45.80
20 13 0.0171 34.25 35.23 35.26 13 0.0150 34.62 36.12 36.24 14 0.0106 77.55 55.50 55.46

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
73.82 106.48 18.70
filter<K> filter<1,block<uint64_t,K>> filter<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 27.63 42.72 39.43 4 3.3441 12.82 16.23 16.45 5 3.0511 16.37 19.97 20.67
12 9 0.3184 37.45 64.72 41.97 5 1.0317 18.35 32.36 30.92 6 0.8206 18.38 23.37 19.92
16 11 0.0455 47.68 79.11 41.24 6 0.4015 20.25 22.58 22.23 7 0.2865 20.41 21.59 30.56
20 14 0.0068 150.48 244.20 80.98 7 0.1883 43.01 43.24 49.31 8 0.1200 54.14 51.30 52.50
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 17.86 22.00 21.62 5 2.3280 36.18 25.42 24.57 5 2.7396 11.10 14.77 14.80
12 8 0.4209 24.45 41.36 36.60 8 0.3751 59.20 41.89 53.83 8 0.5422 15.80 20.96 20.19
16 11 0.0783 60.85 58.22 41.10 11 0.0645 71.49 51.45 53.92 11 0.1202 16.97 25.03 21.61
20 13 0.0144 46.60 52.51 55.87 14 0.0117 102.73 90.36 96.33 13 0.0273 55.71 56.70 55.36
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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 15.57 16.83 16.22 5 2.4525 17.19 22.26 21.09 5 2.3280 37.15 25.04 23.51
12 8 0.4399 23.18 27.68 23.57 8 0.4209 24.06 34.61 39.44 8 0.3751 87.91 51.45 52.91
16 11 0.0859 84.48 48.90 44.01 11 0.0783 52.51 49.80 49.90 11 0.0645 74.83 55.10 58.84
20 13 0.0182 75.14 90.22 90.11 13 0.0144 59.57 71.47 67.87 14 0.0117 98.79 83.85 77.86

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
62.47 10.16 6.87
filter<K> filter<1,block<uint64_t,K>> filter<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 14.05 22.95 26.71 4 3.3200 9.47 12.30 12.31 5 3.0523 11.69 13.95 13.87
12 9 0.3118 19.68 35.24 28.87 5 1.0423 12.08 14.23 14.07 6 0.8142 13.49 15.36 15.38
16 11 0.0453 25.30 47.74 30.22 6 0.3972 13.77 15.45 15.44 7 0.2784 14.58 16.70 16.73
20 14 0.0062 31.49 60.74 30.99 7 0.1886 14.57 16.32 16.29 8 0.1259 15.88 17.81 17.81
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 12.60 16.20 16.05 5 2.3168 13.19 16.66 16.69 5 2.7635 7.19 9.44 9.33
12 8 0.4200 17.32 22.90 22.52 8 0.3742 18.35 22.30 22.32 8 0.5186 10.98 13.96 14.05
16 11 0.0783 23.99 32.13 32.10 11 0.0667 25.53 30.59 30.51 11 0.1230 12.67 17.54 17.53
20 13 0.0150 26.79 35.71 35.66 14 0.0106 33.00 35.77 35.73 13 0.0295 16.37 20.45 20.46
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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 6.56 9.36 9.40 5 2.4144 12.62 16.14 16.13 5 2.3168 13.19 16.69 16.67
12 8 0.4575 12.38 13.65 13.72 8 0.4200 17.36 22.48 22.47 8 0.3742 18.21 22.30 22.26
16 11 0.0876 13.07 17.61 17.63 11 0.0783 23.93 32.14 32.10 11 0.0667 25.54 30.55 30.61
20 13 0.0171 16.01 21.01 20.93 13 0.0150 26.89 35.70 35.74 14 0.0106 33.02 35.73 35.76

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
81.70 46.58 11.35
filter<K> filter<1,block<uint64_t,K>> filter<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 14.43 23.24 28.29 4 3.3441 9.66 12.58 12.86 5 3.0511 13.05 14.65 14.10
12 9 0.3184 20.77 36.76 30.42 5 1.0317 12.85 14.97 14.49 6 0.8206 13.82 18.54 15.10
16 11 0.0455 25.61 50.22 37.84 6 0.4015 26.17 34.22 31.58 7 0.2865 30.07 33.84 32.24
20 14 0.0068 92.90 137.34 33.53 7 0.1883 20.24 19.16 29.40 8 0.1200 26.50 37.36 46.77
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 13.26 17.35 16.71 5 2.3280 14.02 20.00 20.69 5 2.7396 7.50 9.90 9.80
12 8 0.4209 17.92 29.53 24.81 8 0.3751 27.92 33.97 26.86 8 0.5422 10.14 14.31 16.01
16 11 0.0783 47.64 47.47 40.15 11 0.0645 33.45 43.09 40.68 11 0.1202 17.99 29.05 20.86
20 13 0.0144 53.77 60.61 61.38 14 0.0117 76.12 64.65 62.99 13 0.0273 33.03 34.94 39.37
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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 6.71 9.57 9.51 5 2.4525 12.63 16.72 16.73 5 2.3280 13.34 17.49 17.47
12 8 0.4399 11.79 13.62 14.44 8 0.4209 17.36 23.99 23.19 8 0.3751 20.54 23.46 23.84
16 11 0.0859 14.27 21.80 26.74 11 0.0783 47.90 76.52 67.15 11 0.0645 41.49 71.83 68.31
20 13 0.0182 47.06 40.61 37.34 13 0.0144 54.78 65.31 62.56 14 0.0117 63.00 65.54 74.15

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
42.15 8.80 6.69
filter<K> filter<1,block<uint64_t,K>> filter<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 59.86 54.86 41.56 4 3.3200 22.14 20.45 24.74 5 3.0523 27.08 26.82 29.58
12 9 0.3118 89.90 86.27 46.43 5 1.0423 24.28 21.92 24.31 6 0.8142 27.32 29.55 30.46
16 11 0.0453 111.30 98.48 43.24 6 0.3972 25.24 22.89 24.52 7 0.2784 29.96 32.05 31.51
20 14 0.0062 140.87 127.73 46.58 7 0.1886 28.18 24.55 25.19 8 0.1259 31.23 33.59 34.35
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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 23.72 45.59 46.05 5 2.3168 27.45 45.60 46.24 5 2.7253 18.62 24.84 25.21
12 8 0.4200 28.35 60.94 60.67 8 0.3742 33.53 62.59 62.40 8 0.5350 17.70 37.07 25.95
16 11 0.0783 40.41 84.24 83.79 11 0.0667 45.19 82.22 82.66 11 0.1194 29.20 55.22 39.67
20 13 0.0150 44.04 93.45 93.82 14 0.0106 52.03 97.98 98.59 13 0.0276 29.29 56.23 41.13
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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 18.86 26.45 26.53 5 2.4524 20.69 29.57 29.35 5 2.3084 20.90 31.25 31.26
12 8 0.4562 21.33 46.87 35.01 8 0.4164 18.69 40.76 27.98 8 0.3847 21.51 52.77 39.94
16 11 0.0862 28.71 54.95 38.98 11 0.0758 33.27 53.40 35.52 11 0.0626 32.33 61.44 43.66
20 13 0.0188 28.76 55.28 39.57 13 0.0109 33.87 64.72 44.78 14 0.0103 33.23 63.88 44.88

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
58.96 34.99 11.18
filter<K> filter<1,block<uint64_t,K>> filter<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 67.28 59.84 46.47 4 3.3441 23.39 21.85 33.63 5 3.0511 30.00 29.49 33.26
12 9 0.3184 101.69 107.76 53.51 5 1.0317 35.75 23.19 27.66 6 0.8206 33.72 35.03 38.62
16 11 0.0455 152.73 121.60 55.53 6 0.4015 32.07 28.12 33.77 7 0.2865 46.50 49.26 40.48
20 14 0.0068 196.65 216.06 67.01 7 0.1883 33.74 28.83 31.33 8 0.1200 47.80 80.51 56.13
filter<1,multiblock<uint64_t,K>> filter<1,multiblock<uint64_t,K>,1> filter<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.89 46.38 48.59 5 2.3280 31.77 46.44 49.00 5 2.7254 20.10 30.09 31.60
12 8 0.4209 37.09 76.69 73.11 8 0.3751 42.91 68.64 75.95 8 0.5375 23.11 53.75 35.66
16 11 0.0783 48.14 88.14 87.50 11 0.0645 57.75 90.68 103.45 11 0.1187 41.35 71.90 49.69
20 13 0.0144 60.09 105.63 105.52 14 0.0117 68.18 116.67 117.98 13 0.0277 76.29 126.09 85.78
filter<1,fast_multiblock32<K>,1> filter<1,fast_multiblock64<K>> filter<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 21.71 32.49 32.65 5 2.4414 30.95 38.67 43.15 5 2.3147 24.24 38.87 37.45
12 8 0.4402 25.53 58.12 44.08 8 0.4194 21.15 47.33 33.34 8 0.3773 25.74 60.60 43.97
16 11 0.0851 30.66 60.02 43.31 11 0.0779 34.41 56.06 40.34 11 0.0652 33.06 64.49 46.83
20 13 0.0183 35.57 65.13 48.51 13 0.0146 38.30 73.67 58.61 14 0.0112 43.60 71.70 52.20
Description
Mirrored via gitea-mirror
Readme 2.6 MiB
Languages
Python 68.8%
Shell 31.2%