2025-03-04 10:23:37 +00:00
2025-03-04 09:08:42 +00:00
2025-03-04 10:23:37 +00:00
2025-03-04 09:07:12 +00:00
2025-03-04 09:07:48 +00:00
2025-03-04 09:09:07 +00:00
2025-03-04 09:07:58 +00:00
2025-03-04 09:13:34 +00:00
2025-03-03 11:38:47 +01:00
2025-03-04 09:14:01 +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
28.59 6.00 5.21
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.26 10.90 16.73 4 3.3525 4.13 4.46 4.44 5 2.4274 5.18 5.80 5.78
12 9 0.3151 17.05 15.60 17.53 5 1.0369 4.90 5.02 5.00 8 0.4244 7.02 8.85 8.90
16 11 0.0455 20.18 18.85 16.50 6 0.4138 5.48 5.40 5.54 11 0.0782 9.43 13.89 13.90
20 14 0.0084 27.89 23.18 16.90 7 0.1936 6.58 5.98 5.95 14 0.0163 11.68 15.81 15.74
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.97 3.28 3.37 5 3.0203 4.89 5.09 5.09 5 2.3232 5.57 6.72 6.88
12 8 0.5360 2.51 3.18 3.15 6 0.8293 5.43 5.50 5.55 8 0.3758 8.17 10.06 10.09
16 11 0.1169 5.74 5.84 3.95 7 0.2824 6.26 6.36 6.32 11 0.0581 16.69 14.14 14.16
20 14 0.0304 5.70 5.75 3.93 8 0.1197 6.72 6.59 6.59 14 0.0131 11.99 17.48 17.43

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
32.44 19.73 6.97
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 13.27 12.52 17.43 4 3.3462 4.83 5.13 5.16 5 2.4515 6.23 6.76 6.77
12 9 0.3146 19.13 17.95 17.82 5 1.0310 5.26 5.41 5.41 8 0.4244 8.92 12.08 10.86
16 11 0.0456 28.88 27.02 18.22 6 0.4035 7.63 7.43 8.00 11 0.0776 11.70 15.92 15.95
20 14 0.0066 68.82 56.40 20.36 7 0.1879 13.57 12.67 13.48 14 0.0153 19.09 22.27 23.50
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.51 3.97 4.00 5 3.0448 5.66 5.86 5.84 5 2.3208 6.40 7.79 8.02
12 8 0.5407 3.14 4.22 3.73 6 0.8244 5.97 6.59 6.70 8 0.3758 13.05 16.09 14.44
16 11 0.1174 12.12 10.02 6.13 7 0.2885 9.22 9.06 9.87 11 0.0641 21.83 17.47 20.76
20 14 0.0276 19.50 21.11 12.89 8 0.1185 21.14 17.08 15.69 14 0.0120 21.77 33.49 31.51

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.90 4.25 3.49
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.43 9.05 15.45 4 3.3525 3.32 4.04 3.95 5 2.4274 3.11 3.60 3.63
12 9 0.3151 14.01 13.66 16.54 5 1.0369 3.90 4.56 4.73 8 0.4244 2.70 3.36 3.35
16 11 0.0455 17.42 16.57 15.81 6 0.4138 4.36 5.07 5.09 11 0.0782 5.64 6.45 6.22
20 14 0.0084 20.29 21.05 16.02 7 0.1936 4.86 5.88 5.86 14 0.0163 5.89 6.91 6.89
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.59 2.53 2.53 5 3.0203 3.88 4.69 4.57 5 2.3232 3.17 3.52 3.51
12 8 0.5360 2.15 2.27 2.27 6 0.8293 4.52 5.31 5.29 8 0.3758 3.77 3.79 3.75
16 11 0.1169 4.16 4.42 3.20 7 0.2824 4.96 6.00 6.20 11 0.0581 5.87 6.13 6.09
20 14 0.0304 4.14 4.37 3.18 8 0.1197 2.87 3.34 3.32 14 0.0131 6.33 7.08 7.27

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
33.16 17.06 7.04
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.14 10.79 16.41 4 3.3462 3.91 4.76 4.48 5 2.4515 3.69 4.35 4.35
12 9 0.3146 19.37 17.35 17.32 5 1.0310 5.00 5.87 5.70 8 0.4244 3.56 4.52 4.10
16 11 0.0456 27.96 28.43 20.45 6 0.4035 9.90 9.33 11.14 11 0.0776 8.18 9.02 8.84
20 14 0.0066 53.09 55.83 23.28 7 0.1879 12.81 15.55 12.51 14 0.0153 10.33 12.90 14.41
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.09 3.09 3.12 5 3.0448 4.62 5.37 5.26 5 2.3208 3.77 4.23 4.21
12 8 0.5407 2.67 3.06 2.93 6 0.8244 5.81 6.21 6.36 8 0.3758 4.78 4.75 4.68
16 11 0.1174 7.92 6.67 4.88 7 0.2885 7.52 10.47 11.39 11 0.0641 8.01 9.36 10.84
20 14 0.0276 13.13 15.63 11.42 8 0.1185 8.12 8.06 10.07 14 0.0120 11.72 14.15 14.89

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.05 6.08 3.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.1635 10.39 8.41 13.70 4 3.3525 1.66 2.00 1.70 5 2.4274 2.67 2.81 1.87
12 9 0.3151 14.54 9.19 15.24 5 1.0369 1.56 2.03 1.96 8 0.4244 2.97 2.34 2.87
16 11 0.0455 18.06 11.34 16.51 6 0.4138 1.93 2.20 2.15 11 0.0782 6.31 4.75 3.59
20 14 0.0084 25.53 13.86 14.87 7 0.1936 3.26 2.60 2.79 14 0.0163 6.97 7.66 5.59
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.94 3.15 2.54 5 3.0203 3.60 2.14 2.87 5 2.3232 3.10 3.33 2.90
12 8 0.5360 2.69 2.93 3.08 6 0.8293 3.19 5.40 3.51 8 0.3758 4.74 3.97 3.02
16 11 0.1169 7.76 4.71 2.62 7 0.2824 2.62 2.71 2.37 11 0.0581 10.16 8.02 4.58
20 14 0.0304 4.13 3.89 3.15 8 0.1197 5.48 2.54 2.29 14 0.0131 7.89 7.10 5.82

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
38.06 19.47 11.30
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 13.03 12.14 26.49 4 3.3462 7.13 5.44 8.80 5 2.4515 7.85 7.85 7.33
12 9 0.3146 53.74 40.81 33.47 5 1.0310 12.92 10.09 8.82 8 0.4244 13.06 15.07 14.39
16 11 0.0456 76.57 60.59 33.50 6 0.4035 16.14 14.53 15.14 11 0.0776 26.43 21.64 20.95
20 14 0.0066 102.78 65.70 30.70 7 0.1879 18.65 16.30 12.28 14 0.0153 32.10 23.93 23.70
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 5.72 7.42 9.38 5 3.0448 4.04 4.78 7.52 5 2.3208 7.91 9.24 9.00
12 8 0.5407 9.76 12.15 11.27 6 0.8244 11.79 10.71 12.33 8 0.3758 15.98 16.96 15.57
16 11 0.1174 19.46 14.62 12.26 7 0.2885 11.53 10.52 9.17 11 0.0641 18.79 16.10 18.18
20 14 0.0276 14.54 16.33 9.13 8 0.1185 11.20 8.94 9.06 14 0.0120 25.80 23.71 19.69

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
36.71 5.87 4.23
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 12.16 12.68 17.26 4 3.3525 5.86 4.35 4.30 5 2.4274 7.97 5.72 5.69
12 9 0.3151 18.73 18.06 17.76 5 1.0369 7.02 5.03 4.86 8 0.4244 11.72 8.68 8.57
16 11 0.0455 23.99 21.78 16.87 6 0.4138 8.61 5.61 5.36 11 0.0782 15.65 11.29 11.13
20 14 0.0084 31.45 27.59 17.71 7 0.1936 10.03 6.05 6.11 14 0.0163 18.04 14.74 14.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.7402 3.41 3.91 4.01 5 3.0203 7.00 5.27 5.29 5 2.3232 11.74 5.64 5.66
12 8 0.5360 2.98 4.90 4.10 6 0.8293 8.01 6.06 5.93 8 0.3758 15.35 8.74 7.89
16 11 0.1169 4.92 7.04 5.35 7 0.2824 9.33 6.55 6.56 11 0.0581 15.97 10.38 10.61
20 14 0.0304 5.00 7.08 5.28 8 0.1197 10.43 7.42 7.56 14 0.0131 18.88 12.98 13.65

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
45.25 23.35 9.73
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.69 14.58 17.97 4 3.3462 7.10 4.48 4.48 5 2.4515 9.35 6.49 6.71
12 9 0.3146 27.17 26.06 19.59 5 1.0310 8.79 5.20 5.21 8 0.4244 14.76 11.24 11.49
16 11 0.0456 34.38 32.06 19.27 6 0.4035 12.30 7.89 7.67 11 0.0776 21.19 16.19 17.35
20 14 0.0066 70.20 48.01 22.26 7 0.1879 20.23 18.24 16.92 14 0.0153 31.78 31.05 23.68
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.69 4.22 4.27 5 3.0448 7.95 5.58 5.59 5 2.3208 9.51 6.25 6.28
12 8 0.5407 3.30 5.35 4.45 6 0.8244 9.40 6.57 6.42 8 0.3758 15.60 9.34 8.70
16 11 0.1174 6.39 9.17 8.65 7 0.2885 14.96 18.74 11.08 11 0.0641 20.81 14.67 15.95
20 14 0.0276 13.69 17.54 15.28 8 0.1185 20.70 24.99 23.78 14 0.0120 36.47 27.49 27.03

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
60.14 31.64 16.88
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.11 41.20 35.91 4 3.3200 12.38 15.91 15.91 5 2.4144 16.22 20.13 20.16
12 9 0.3118 36.81 63.19 39.03 5 1.0423 17.29 19.45 19.23 8 0.4200 20.98 26.74 26.80
16 11 0.0453 44.44 77.32 38.14 6 0.3972 17.55 18.52 18.42 11 0.0783 29.02 33.08 32.99
20 14 0.0062 52.25 89.41 35.33 7 0.1886 17.26 18.57 18.57 14 0.0149 33.83 35.90 35.87
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.59 13.56 5 3.0523 16.08 19.75 19.69 5 2.3168 30.50 22.20 22.15
12 8 0.5186 12.81 16.48 15.88 6 0.8142 16.09 18.69 18.58 8 0.3742 39.58 28.92 28.98
16 11 0.1230 14.49 19.49 19.47 7 0.2784 18.06 18.57 18.29 11 0.0667 64.56 45.76 45.66
20 14 0.0297 22.95 24.04 24.04 8 0.1259 18.17 19.59 19.59 14 0.0106 75.98 53.92 53.92

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
68.75 103.33 20.37
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.94 43.35 39.65 4 3.3441 13.00 16.44 16.48 5 2.4525 16.94 21.15 21.17
12 9 0.3184 36.82 63.06 40.78 5 1.0317 17.30 19.48 19.29 8 0.4209 21.15 25.76 25.74
16 11 0.0455 43.71 75.13 38.51 6 0.4015 17.15 18.64 18.50 11 0.0783 28.73 33.24 33.42
20 14 0.0068 55.48 95.11 37.63 7 0.1883 18.06 19.01 19.19 14 0.0158 35.57 37.65 38.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.7396 10.85 13.98 13.98 5 3.0511 16.52 19.82 19.84 5 2.3280 33.96 23.20 23.20
12 8 0.5422 12.76 16.45 15.71 6 0.8206 16.13 18.76 18.71 8 0.3751 40.43 29.36 29.41
16 11 0.1202 14.40 18.93 19.07 7 0.2865 18.01 18.70 18.30 11 0.0645 65.60 47.05 47.08
20 14 0.0284 24.93 25.67 25.62 8 0.1200 19.35 20.06 20.18 14 0.0117 79.83 57.33 57.59

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
61.44 10.18 7.14
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.69 22.55 26.60 4 3.3200 9.46 12.32 12.33 5 2.4144 12.64 16.00 16.00
12 9 0.3118 19.34 34.93 29.06 5 1.0423 11.91 14.03 14.01 8 0.4200 17.25 22.42 22.51
16 11 0.0453 24.75 47.09 29.84 6 0.3972 13.63 15.32 15.33 11 0.0783 23.88 31.94 31.97
20 14 0.0062 32.28 59.97 30.14 7 0.1886 14.48 16.26 16.54 14 0.0149 30.00 36.96 36.98
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.95 9.22 9.25 5 3.0523 11.67 13.82 13.76 5 2.3168 13.12 16.60 16.50
12 8 0.5186 11.56 13.90 13.92 6 0.8142 13.59 15.21 15.21 8 0.3742 17.68 22.27 22.25
16 11 0.1230 13.61 17.52 17.52 7 0.2784 14.53 16.66 16.64 11 0.0667 25.37 30.66 30.61
20 14 0.0297 17.09 21.86 21.88 8 0.1259 15.81 17.76 17.75 14 0.0106 32.91 35.64 35.67

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
72.53 41.86 9.82
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 14.05 22.66 28.08 4 3.3441 9.60 12.47 12.51 5 2.4525 12.65 16.53 16.55
12 9 0.3184 18.94 34.16 29.60 5 1.0317 11.82 13.72 13.75 8 0.4209 16.76 21.49 21.80
16 11 0.0455 24.18 47.06 30.05 6 0.4015 13.38 14.84 14.82 11 0.0783 23.82 32.71 32.75
20 14 0.0068 31.28 60.00 30.10 7 0.1883 14.27 15.68 15.75 14 0.0158 29.81 36.73 36.63
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.17 9.41 9.42 5 3.0511 11.86 13.99 13.93 5 2.3280 13.24 17.56 17.53
12 8 0.5422 11.19 13.77 13.78 6 0.8206 13.23 14.86 14.87 8 0.3751 17.80 21.67 21.62
16 11 0.1202 13.07 16.44 16.49 7 0.2865 14.15 16.13 16.14 11 0.0645 25.48 30.94 30.97
20 14 0.0284 16.22 21.05 21.03 8 0.1200 15.43 17.36 17.37 14 0.0117 33.01 35.15 35.18

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
42.01 8.58 6.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.1546 55.19 52.60 36.37 4 3.3200 18.16 17.38 20.50 5 2.4144 20.20 39.81 39.85
12 9 0.3118 85.00 79.15 40.00 5 1.0423 20.34 18.80 21.14 8 0.4200 24.72 58.51 56.44
16 11 0.0453 105.85 96.79 38.40 6 0.3972 21.66 19.12 20.50 11 0.0783 36.39 77.37 77.47
20 14 0.0062 134.36 121.71 39.89 7 0.1886 23.71 20.54 21.23 14 0.0149 41.95 92.72 92.82
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.32 23.66 23.80 5 3.0523 21.80 22.38 24.85 5 2.3168 22.93 40.30 40.69
12 8 0.5350 16.04 32.90 23.95 6 0.8142 23.57 24.08 25.30 8 0.3742 29.37 56.95 57.46
16 11 0.1194 26.62 54.87 39.14 7 0.2784 25.90 26.36 27.23 11 0.0667 41.89 76.53 80.21
20 14 0.0262 25.05 55.09 36.48 8 0.1259 28.03 28.94 29.06 14 0.0106 47.47 91.57 92.98

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
62.94 36.48 12.01
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 62.40 56.67 40.45 4 3.3441 19.66 18.01 22.45 5 2.4525 22.34 40.61 40.65
12 9 0.3184 98.03 90.06 44.56 5 1.0317 22.73 19.45 22.13 8 0.4209 27.34 62.13 60.88
16 11 0.0455 139.03 144.55 46.11 6 0.4015 28.44 24.61 25.18 11 0.0783 42.69 82.54 82.78
20 14 0.0068 244.87 207.55 55.80 7 0.1883 40.86 32.67 34.31 14 0.0158 54.87 104.95 106.84
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 17.02 28.91 28.94 5 3.0511 24.07 24.98 28.37 5 2.3280 25.64 41.64 41.82
12 8 0.5375 17.88 40.55 30.98 6 0.8206 27.76 27.78 30.44 8 0.3751 36.54 63.58 65.96
16 11 0.1187 35.95 80.13 59.83 7 0.2865 35.66 37.91 36.51 11 0.0645 51.64 83.70 87.35
20 14 0.0287 41.58 90.14 70.26 8 0.1200 44.04 48.61 48.92 14 0.0117 62.64 106.05 108.63
Description
Mirrored via gitea-mirror
Readme 2.6 MiB
Languages
Python 68.8%
Shell 31.2%