2025-03-22 18:11:08 +00:00
2025-03-04 12:47:51 +01:00
2025-03-04 11:55:42 +00:00
2025-03-22 18:11:08 +00:00
2025-03-04 11:54:33 +00:00
2025-03-04 11:52:54 +00:00
2025-03-04 11:56:21 +00:00
2025-03-04 11:54:16 +00:00
2025-03-04 11:59:50 +00:00
2025-03-03 11:38:47 +01:00
2025-03-04 12:00:15 +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 six different 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 to use its 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.39 4.57 3.53
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.18 10.72 16.47 4 3.3525 4.02 4.36 4.37 5 2.4274 4.99 5.52 5.52
12 9 0.3151 17.06 15.66 17.41 5 1.0369 4.79 4.92 4.92 8 0.4244 6.84 8.82 8.85
16 11 0.0455 19.54 18.48 16.31 6 0.4138 5.36 5.29 5.42 11 0.0782 9.18 13.70 13.69
20 14 0.0084 26.54 23.32 16.69 7 0.1936 6.37 5.89 5.89 14 0.0163 11.25 15.64 15.65
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7402 2.93 3.26 3.31 5 3.0203 4.82 5.08 5.09 5 2.3232 5.49 6.69 6.85
12 8 0.5360 2.46 3.10 3.16 6 0.8293 5.43 5.50 5.50 8 0.3758 8.12 10.02 9.98
16 11 0.1169 5.69 5.84 3.94 7 0.2824 6.27 6.30 6.30 11 0.0581 16.81 14.25 14.07
20 14 0.0304 5.65 5.74 3.95 8 0.1197 6.72 6.57 6.58 14 0.0131 11.87 17.35 17.33

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
30.20 18.11 6.58
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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 11.76 11.21 16.83 4 3.3462 4.63 4.83 4.80 5 2.4515 5.74 6.59 6.59
12 9 0.3146 18.42 17.13 17.58 5 1.0310 5.40 5.05 5.22 8 0.4244 7.17 9.84 9.81
16 11 0.0456 25.68 23.77 17.90 6 0.4035 6.56 6.44 6.86 11 0.0776 11.01 15.15 15.52
20 14 0.0066 42.45 40.03 19.43 7 0.1879 10.32 9.27 8.71 14 0.0153 14.31 18.49 19.86
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7234 3.45 3.92 3.92 5 3.0448 5.52 5.70 5.74 5 2.3208 6.26 7.64 7.87
12 8 0.5407 2.75 3.41 3.39 6 0.8244 5.81 5.83 5.83 8 0.3758 8.85 10.69 10.76
16 11 0.1174 7.02 7.64 5.18 7 0.2885 7.59 7.72 7.47 11 0.0641 17.84 15.60 15.84
20 14 0.0276 11.73 10.32 7.55 8 0.1185 9.53 12.03 14.22 14 0.0120 17.53 21.92 22.00

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.40 4.08 3.35
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.34 8.87 15.33 4 3.3525 3.32 4.07 4.07 5 2.4274 3.04 3.57 3.58
12 9 0.3151 13.68 13.27 16.60 5 1.0369 3.84 4.56 4.74 8 0.4244 2.70 3.39 3.37
16 11 0.0455 17.35 16.77 15.81 6 0.4138 4.34 5.08 5.10 11 0.0782 5.64 6.47 6.23
20 14 0.0084 20.08 20.68 16.03 7 0.1936 4.83 5.89 5.86 14 0.0163 5.88 6.92 6.92
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7402 2.57 2.49 2.50 5 3.0203 3.90 4.70 4.59 5 2.3232 3.18 3.52 3.49
12 8 0.5360 2.14 2.25 2.26 6 0.8293 4.49 5.27 5.28 8 0.3758 3.72 3.74 3.73
16 11 0.1169 4.18 4.43 3.15 7 0.2824 4.96 6.01 6.02 11 0.0581 5.88 6.26 5.56
20 14 0.0304 4.18 4.39 3.20 8 0.1197 2.84 3.33 3.31 14 0.0131 6.29 7.01 7.22

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
31.89 15.37 6.06
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.42 8.81 15.22 4 3.3462 3.56 4.36 4.23 5 2.4515 3.34 3.85 3.85
12 9 0.3146 15.00 14.36 16.58 5 1.0310 4.10 4.78 4.92 8 0.4244 2.89 3.55 3.55
16 11 0.0456 19.72 19.38 16.52 6 0.4035 5.27 5.86 6.34 11 0.0776 6.48 7.37 7.09
20 14 0.0066 32.24 33.91 17.14 7 0.1879 6.81 7.66 8.06 14 0.0153 7.54 9.30 9.08
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7234 2.89 2.84 2.87 5 3.0448 4.25 5.03 4.92 5 2.3208 3.53 3.84 3.81
12 8 0.5407 2.32 2.41 2.41 6 0.8244 4.77 5.51 5.65 8 0.3758 3.93 3.97 4.03
16 11 0.1174 6.09 5.75 3.99 7 0.2885 5.68 6.82 6.77 11 0.0641 6.69 7.13 7.14
20 14 0.0276 6.15 6.52 4.59 8 0.1185 4.19 4.97 4.69 14 0.0120 8.07 9.45 9.81

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
22.11 4.47 3.41
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.28 5.16 12.02 4 3.3525 1.43 1.32 1.33 5 2.4274 2.62 1.87 1.89
12 9 0.3151 11.91 7.48 13.20 5 1.0369 1.52 1.44 1.44 8 0.4244 2.34 2.09 2.35
16 11 0.0455 15.09 9.26 11.91 6 0.4138 1.98 1.96 1.69 11 0.0782 4.45 3.64 3.22
20 14 0.0084 20.89 12.65 12.83 7 0.1936 2.11 2.23 2.77 14 0.0163 5.42 4.38 4.27
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7402 2.18 1.93 1.88 5 3.0203 1.75 1.43 1.43 5 2.3232 2.53 1.94 1.96
12 8 0.5360 1.66 1.50 1.52 6 0.8293 1.81 1.56 1.57 8 0.3758 3.12 2.50 2.46
16 11 0.1169 3.29 2.73 1.97 7 0.2824 1.94 1.76 1.77 11 0.0581 4.53 3.26 3.35
20 14 0.0304 3.17 3.22 1.90 8 0.1197 2.28 1.79 1.71 14 0.0131 5.12 4.28 4.47

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
37.27 18.18 12.17
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.14 10.47 20.24 4 3.3462 3.61 4.30 4.60 5 2.4515 3.50 3.70 4.19
12 9 0.3146 25.73 26.44 26.54 5 1.0310 6.52 6.52 7.08 8 0.4244 8.41 10.48 8.99
16 11 0.0456 47.48 44.00 27.10 6 0.4035 14.74 13.42 9.55 11 0.0776 16.75 16.21 15.65
20 14 0.0066 72.32 61.79 28.66 7 0.1879 12.10 10.78 11.66 14 0.0153 21.70 20.69 20.54
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7234 3.07 4.14 5.24 5 3.0448 3.07 3.22 4.09 5 2.3208 4.00 4.81 4.71
12 8 0.5407 5.88 7.00 8.00 6 0.8244 6.86 7.42 8.24 8 0.3758 10.55 11.37 13.76
16 11 0.1174 17.07 12.61 9.21 7 0.2885 9.99 10.37 9.22 11 0.0641 16.44 14.40 14.88
20 14 0.0276 13.75 15.09 9.08 8 0.1185 10.09 9.45 9.21 14 0.0120 21.51 20.97 14.86

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
34.85 5.62 3.46
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.92 12.45 16.92 4 3.3525 5.79 4.19 4.21 5 2.4274 7.84 5.55 5.52
12 9 0.3151 18.53 17.52 17.50 5 1.0369 6.92 4.72 4.87 8 0.4244 11.63 8.49 8.39
16 11 0.0455 23.46 21.37 16.83 6 0.4138 8.66 5.27 5.27 11 0.0782 15.17 10.88 10.91
20 14 0.0084 30.82 26.95 17.47 7 0.1936 9.86 6.09 5.87 14 0.0163 18.17 14.17 14.25
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7402 3.35 3.91 3.92 5 3.0203 6.94 5.23 5.24 5 2.3232 9.15 5.54 5.56
12 8 0.5360 2.84 4.81 4.05 6 0.8293 8.01 5.95 5.82 8 0.3758 16.65 8.66 7.90
16 11 0.1169 4.93 7.06 5.36 7 0.2824 9.25 6.54 6.53 11 0.0581 15.88 10.38 10.39
20 14 0.0304 4.89 7.01 5.38 8 0.1197 10.37 7.34 7.33 14 0.0131 18.81 12.49 13.43

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
41.89 21.44 7.53
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.58 13.10 17.68 4 3.3462 7.01 4.49 4.57 5 2.4515 9.23 6.30 6.44
12 9 0.3146 23.40 20.17 18.58 5 1.0310 9.08 5.49 5.66 8 0.4244 17.13 10.88 10.95
16 11 0.0456 46.34 44.54 19.16 6 0.4035 12.52 7.33 8.51 11 0.0776 25.36 17.57 18.25
20 14 0.0066 78.08 61.86 22.86 7 0.1879 16.43 11.12 14.34 14 0.0153 31.03 23.49 26.51
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7234 3.96 4.23 4.22 5 3.0448 7.96 5.58 5.70 5 2.3208 9.54 6.27 6.27
12 8 0.5407 3.43 5.36 4.71 6 0.8244 9.47 6.68 6.71 8 0.3758 18.18 10.49 10.28
16 11 0.1174 9.34 12.43 10.38 7 0.2885 13.60 8.10 7.27 11 0.0641 19.67 12.92 13.33
20 14 0.0276 12.68 12.65 9.75 8 0.1185 14.50 10.36 14.10 14 0.0120 29.96 20.10 17.65

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
60.61 29.57 14.09
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.00 41.50 36.01 4 3.3200 12.39 15.85 15.92 5 2.4144 16.31 20.49 20.59
12 9 0.3118 37.11 63.49 39.21 5 1.0423 17.35 19.46 19.30 8 0.4200 21.29 26.66 26.74
16 11 0.0453 44.42 77.59 38.22 6 0.3972 17.38 18.65 18.55 11 0.0783 28.92 33.39 33.30
20 14 0.0062 56.26 96.16 37.46 7 0.1886 18.25 18.82 18.83 14 0.0149 35.33 37.73 37.78
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7635 10.54 13.61 13.61 5 3.0523 16.12 19.70 19.74 5 2.3168 30.41 22.18 22.19
12 8 0.5186 12.89 16.49 15.91 6 0.8142 16.05 18.69 18.65 8 0.3742 39.52 29.10 29.04
16 11 0.1230 14.52 19.41 19.48 7 0.2784 18.07 18.64 18.29 11 0.0667 64.27 45.84 45.89
20 14 0.0297 24.06 25.56 25.61 8 0.1259 18.91 20.02 20.04 14 0.0106 77.96 55.45 55.56

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
70.06 97.60 17.80
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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.64 42.82 39.27 4 3.3441 12.81 16.14 16.28 5 2.4525 16.68 20.64 20.60
12 9 0.3184 36.98 62.89 40.59 5 1.0317 17.44 19.69 19.55 8 0.4209 21.44 25.89 25.82
16 11 0.0455 44.71 77.40 39.24 6 0.4015 17.62 19.50 18.91 11 0.0783 29.78 35.23 34.67
20 14 0.0068 60.49 99.95 39.75 7 0.1883 20.14 21.16 21.13 14 0.0158 38.55 42.71 43.93
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7396 10.74 13.80 13.78 5 3.0511 16.31 19.91 19.94 5 2.3280 32.87 22.48 22.51
12 8 0.5422 12.73 16.37 15.78 6 0.8206 16.30 18.87 18.98 8 0.3751 40.70 29.79 29.58
16 11 0.1202 15.02 19.95 19.31 7 0.2865 18.69 19.27 18.66 11 0.0645 65.75 49.03 48.21
20 14 0.0284 27.08 29.66 30.02 8 0.1200 20.74 22.41 21.62 14 0.0117 82.22 59.95 60.43

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
61.70 10.16 7.00
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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 13.58 22.26 26.36 4 3.3200 9.38 12.24 12.08 5 2.4144 12.32 15.87 15.98
12 9 0.3118 19.28 33.85 28.66 5 1.0423 11.39 14.05 13.99 8 0.4200 17.15 22.24 22.41
16 11 0.0453 24.77 47.24 29.64 6 0.3972 13.49 15.16 15.30 11 0.0783 23.80 31.92 31.73
20 14 0.0062 31.41 60.34 30.09 7 0.1886 14.46 16.24 16.20 14 0.0149 29.86 36.84 36.91
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7635 6.96 9.30 9.32 5 3.0523 11.67 13.81 13.34 5 2.3168 13.23 16.34 16.67
12 8 0.5186 11.48 13.86 13.91 6 0.8142 13.48 15.22 15.23 8 0.3742 17.42 22.12 21.36
16 11 0.1230 12.94 16.97 17.02 7 0.2784 14.50 16.33 15.84 11 0.0667 25.47 30.39 30.21
20 14 0.0297 16.32 21.91 21.74 8 0.1259 15.80 17.55 17.36 14 0.0106 32.93 35.59 35.54

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
71.64 40.57 9.71
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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 13.87 22.64 27.82 4 3.3441 9.43 12.30 12.43 5 2.4525 12.79 16.26 16.41
12 9 0.3184 19.19 34.03 29.09 5 1.0317 11.79 13.64 13.69 8 0.4209 16.82 21.90 22.06
16 11 0.0455 24.36 46.35 29.59 6 0.4015 13.35 14.71 14.78 11 0.0783 23.57 32.07 32.07
20 14 0.0068 30.94 59.51 29.64 7 0.1883 14.10 15.52 15.64 14 0.0158 29.47 36.31 36.26
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7396 7.14 9.33 9.37 5 3.0511 11.79 13.90 13.87 5 2.3280 13.27 17.40 17.32
12 8 0.5422 11.18 13.85 13.83 6 0.8206 13.33 15.01 14.98 8 0.3751 17.86 21.98 21.94
16 11 0.1202 13.20 16.69 16.67 7 0.2865 14.21 16.23 16.22 11 0.0645 25.72 30.91 30.92
20 14 0.0284 16.09 20.99 20.95 8 0.1200 15.36 17.21 17.19 14 0.0117 32.84 34.72 34.59

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
40.46 8.53 6.59
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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 54.58 51.83 35.84 4 3.3200 18.09 17.43 20.51 5 2.4144 19.94 39.61 39.79
12 9 0.3118 84.97 79.01 39.92 5 1.0423 20.43 18.83 21.23 8 0.4200 24.72 58.54 56.46
16 11 0.0453 105.70 96.90 38.46 6 0.3972 21.51 19.08 20.57 11 0.0783 36.43 77.52 77.76
20 14 0.0062 135.32 123.03 40.09 7 0.1886 23.80 20.91 21.34 14 0.0149 42.09 92.79 92.94
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7253 16.28 23.73 23.75 5 3.0523 21.97 22.02 24.79 5 2.3168 22.93 40.26 40.71
12 8 0.5350 15.99 32.43 23.83 6 0.8142 23.21 23.72 25.01 8 0.3742 29.64 56.80 57.51
16 11 0.1194 26.37 54.68 39.04 7 0.2784 25.77 26.21 27.71 11 0.0667 41.70 76.43 80.47
20 14 0.0262 24.83 54.74 36.21 8 0.1259 27.16 28.52 29.60 14 0.0106 47.24 91.56 92.88

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
58.54 35.16 10.63
filter<K> filter<1,block<uint64_t,K>> filter<1,multiblock<uint64_t,K>>
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 61.88 56.56 40.29 4 3.3441 19.64 17.86 22.20 5 2.4525 22.12 40.21 40.32
12 9 0.3184 91.27 82.65 42.69 5 1.0317 21.80 20.88 22.04 8 0.4209 27.20 61.38 57.52
16 11 0.0455 117.08 109.57 44.28 6 0.4015 23.86 20.42 21.58 11 0.0783 40.75 79.44 81.77
20 14 0.0068 160.90 148.74 43.92 7 0.1883 27.98 22.36 23.37 14 0.0158 46.18 94.98 95.24
filter<K,fast_multiblock32<K>> filter<1,block<uint64_t, K>,1> filter<1,multiblock<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 5 2.7254 16.85 28.57 28.47 5 3.0511 23.83 24.33 27.76 5 2.3280 25.66 41.02 41.48
12 8 0.5375 16.31 35.93 27.26 6 0.8206 25.74 26.61 27.48 8 0.3751 32.14 57.35 57.81
16 11 0.1187 30.67 73.55 54.40 7 0.2865 38.27 34.53 36.04 11 0.0645 50.59 83.14 87.74
20 14 0.0287 47.83 95.78 72.78 8 0.1200 42.99 45.78 46.96 14 0.0117 81.88 122.32 127.17
Description
Mirrored via gitea-mirror
Readme 2.6 MiB
Languages
Python 68.8%
Shell 31.2%