2025-03-30 19:06:29 +02:00
2025-03-04 12:47:51 +01:00
2025-03-22 18:12:56 +00:00
2025-03-22 18:11:08 +00:00
2025-03-22 18:13:38 +00:00
2025-03-22 18:11:20 +00:00
2025-03-22 18:16:59 +00:00
2025-03-22 18:14:06 +00:00
2025-03-22 18:19:23 +00:00
2025-03-03 11:38:47 +01:00
2025-03-22 18:19:46 +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
25.99 4.47 3.54
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.08 10.58 16.51 4 3.3525 3.95 4.29 4.29 5 2.4274 5.05 5.72 5.74
12 9 0.3151 16.78 15.53 17.67 5 1.0369 4.81 4.94 5.00 8 0.4244 6.98 8.79 8.81
16 11 0.0455 19.59 18.70 16.64 6 0.4138 5.35 5.29 5.29 11 0.0782 9.15 13.70 13.75
20 14 0.0084 26.41 22.11 15.99 7 0.1936 6.40 6.06 5.90 14 0.0163 11.43 15.55 15.56
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.26 3.26 5 3.0203 4.82 5.03 5.03 5 2.3232 5.48 6.61 6.79
12 8 0.5360 2.47 3.11 3.10 6 0.8293 5.40 5.48 5.49 8 0.3758 8.06 10.02 9.89
16 11 0.1169 5.71 5.73 3.89 7 0.2824 6.22 6.27 6.29 11 0.0581 16.72 14.11 14.08
20 14 0.0304 5.66 5.72 3.88 8 0.1197 6.68 6.54 6.54 14 0.0131 11.83 17.21 17.21

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
29.93 17.52 6.39
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 12.88 12.05 17.22 4 3.3462 4.43 4.71 4.73 5 2.4515 5.79 6.58 6.56
12 9 0.3146 18.37 17.56 17.69 5 1.0310 5.16 5.59 5.54 8 0.4244 7.61 9.37 9.38
16 11 0.0456 24.79 23.25 17.40 6 0.4035 6.42 6.08 6.14 11 0.0776 10.65 14.60 14.61
20 14 0.0066 37.13 35.52 18.00 7 0.1879 9.00 8.41 8.13 14 0.0153 13.97 18.09 17.88
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.42 3.86 3.87 5 3.0448 5.53 5.71 5.72 5 2.3208 6.27 7.63 7.89
12 8 0.5407 2.73 3.45 3.38 6 0.8244 5.85 5.89 5.89 8 0.3758 8.67 10.56 10.63
16 11 0.1174 7.15 6.83 4.77 7 0.2885 7.22 7.25 8.01 11 0.0641 17.70 15.40 15.32
20 14 0.0276 8.13 7.84 5.80 8 0.1185 8.93 8.43 8.98 14 0.0120 15.33 19.88 20.35

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
26.64 4.17 3.47
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 8.70 8.22 14.66 4 3.3525 3.16 3.71 3.71 5 2.4274 2.87 3.37 3.37
12 9 0.3151 12.43 12.48 15.83 5 1.0369 3.65 4.32 4.48 8 0.4244 2.51 3.16 3.15
16 11 0.0455 16.37 15.04 14.79 6 0.4138 4.13 4.85 5.03 11 0.0782 5.18 5.69 5.85
20 14 0.0084 20.76 19.12 15.44 7 0.1936 4.75 5.66 5.68 14 0.0163 5.44 6.55 6.62
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.43 2.33 2.33 5 3.0203 3.72 4.32 4.33 5 2.3232 2.95 3.23 3.30
12 8 0.5360 1.98 2.10 2.11 6 0.8293 4.28 5.26 5.05 8 0.3758 3.43 3.53 3.46
16 11 0.1169 3.92 4.09 2.96 7 0.2824 4.84 5.94 6.03 11 0.0581 5.39 5.68 5.56
20 14 0.0304 3.86 4.13 2.93 8 0.1197 2.64 3.04 3.03 14 0.0131 5.90 6.57 6.52

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
32.46 16.85 6.99
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.26 10.94 16.65 4 3.3462 4.06 4.74 4.69 5 2.4515 3.78 4.44 4.46
12 9 0.3146 15.81 16.57 17.72 5 1.0310 5.06 5.79 5.94 8 0.4244 3.35 4.05 4.06
16 11 0.0456 23.78 25.43 17.30 6 0.4035 6.75 7.39 7.45 11 0.0776 7.30 8.64 8.37
20 14 0.0066 43.65 47.55 20.26 7 0.1879 10.61 11.41 11.30 14 0.0153 10.51 12.85 13.42
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.13 3.12 3.21 5 3.0448 4.68 5.51 5.46 5 2.3208 3.83 4.37 4.41
12 8 0.5407 2.87 3.36 3.03 6 0.8244 6.10 7.13 6.76 8 0.3758 4.81 5.30 5.48
16 11 0.1174 6.85 7.43 5.51 7 0.2885 8.36 9.24 8.81 11 0.0641 8.15 9.52 9.44
20 14 0.0276 8.80 9.64 6.97 8 0.1185 6.68 7.85 7.26 14 0.0120 10.97 13.98 13.33

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
22.30 4.41 3.27
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.34 5.01 12.47 4 3.3525 1.38 1.30 1.30 5 2.4274 3.38 1.85 1.81
12 9 0.3151 11.67 7.59 13.20 5 1.0369 1.55 1.44 1.40 8 0.4244 2.23 2.06 2.22
16 11 0.0455 14.93 9.44 11.77 6 0.4138 1.86 1.68 1.66 11 0.0782 4.53 3.20 3.18
20 14 0.0084 16.29 10.68 11.27 7 0.1936 2.05 2.11 1.90 14 0.0163 4.50 3.76 3.66
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.89 1.76 5 3.0203 1.61 1.28 1.28 5 2.3232 2.66 1.98 1.78
12 8 0.5360 1.50 1.36 1.49 6 0.8293 1.81 1.57 1.56 8 0.3758 3.09 2.37 2.53
16 11 0.1169 3.46 2.67 1.92 7 0.2824 1.84 1.83 1.76 11 0.0581 4.04 2.96 3.37
20 14 0.0304 3.20 3.18 1.95 8 0.1197 1.81 1.75 1.68 14 0.0131 5.22 4.26 4.26

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
28.20 13.26 6.18
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 9.66 9.63 18.97 4 3.3462 2.04 4.86 3.83 5 2.4515 3.69 2.78 3.40
12 9 0.3146 26.96 21.68 22.29 5 1.0310 6.42 6.24 6.39 8 0.4244 7.09 8.63 8.90
16 11 0.0456 47.85 35.03 22.25 6 0.4035 8.17 7.46 5.99 11 0.0776 15.34 13.74 13.47
20 14 0.0066 67.48 53.71 25.57 7 0.1879 11.02 10.04 10.74 14 0.0153 19.84 18.69 17.22
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.88 3.13 5 3.0448 2.99 3.19 3.20 5 2.3208 3.62 4.37 4.01
12 8 0.5407 5.66 6.79 6.80 6 0.8244 6.33 5.66 5.59 8 0.3758 7.69 8.18 9.05
16 11 0.1174 12.08 12.05 6.42 7 0.2885 9.79 8.00 7.66 11 0.0641 17.63 11.97 15.36
20 14 0.0276 11.94 14.37 8.98 8 0.1185 7.60 7.48 8.24 14 0.0120 19.76 18.47 17.53

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
36.14 7.16 4.51
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.25 12.62 17.00 4 3.3525 5.87 4.32 4.25 5 2.4274 7.91 5.69 5.65
12 9 0.3151 18.53 17.85 17.79 5 1.0369 6.99 4.80 5.05 8 0.4244 11.69 8.54 8.57
16 11 0.0455 23.76 21.55 16.90 6 0.4138 8.68 5.35 5.35 11 0.0782 15.42 11.32 11.29
20 14 0.0084 31.20 27.46 17.65 7 0.1936 10.00 5.98 6.00 14 0.0163 18.40 14.52 14.48
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 4.00 3.95 5 3.0203 7.02 5.32 5.33 5 2.3232 11.93 5.65 5.83
12 8 0.5360 2.93 4.92 4.13 6 0.8293 8.36 6.06 5.94 8 0.3758 15.37 8.78 8.03
16 11 0.1169 5.07 7.20 5.47 7 0.2824 9.38 6.75 6.86 11 0.0581 16.34 10.73 10.55
20 14 0.0304 5.04 7.14 5.42 8 0.1197 10.50 7.47 7.51 14 0.0131 19.06 12.73 13.68

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
51.79 22.49 9.81
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.96 13.91 18.19 4 3.3462 7.49 5.36 5.09 5 2.4515 11.24 7.32 7.70
12 9 0.3146 45.12 34.40 27.01 5 1.0310 12.72 8.20 9.03 8 0.4244 20.13 17.29 20.72
16 11 0.0456 72.44 83.23 26.51 6 0.4035 24.11 19.28 19.53 11 0.0776 39.87 30.57 27.05
20 14 0.0066 89.68 106.12 29.41 7 0.1879 24.10 21.35 24.43 14 0.0153 49.54 38.53 36.30
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 4.05 4.65 4.91 5 3.0448 8.79 5.97 6.10 5 2.3208 10.16 6.65 7.72
12 8 0.5407 5.41 9.91 6.53 6 0.8244 12.27 9.00 14.89 8 0.3758 26.72 16.94 16.06
16 11 0.1174 12.09 20.86 15.21 7 0.2885 23.24 20.18 23.72 11 0.0641 41.66 30.60 31.29
20 14 0.0276 17.38 25.20 18.79 8 0.1185 28.31 23.77 25.53 14 0.0120 44.97 31.52 28.04

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
61.58 30.63 15.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.1546 27.30 41.62 36.21 4 3.3200 12.45 15.91 15.92 5 2.4144 16.12 20.47 20.46
12 9 0.3118 36.88 63.07 38.71 5 1.0423 17.23 19.35 19.36 8 0.4200 21.17 26.59 26.66
16 11 0.0453 44.78 77.65 38.10 6 0.3972 17.32 18.43 18.40 11 0.0783 28.81 33.13 33.17
20 14 0.0062 56.42 96.32 36.91 7 0.1886 18.18 18.84 18.78 14 0.0149 35.09 37.52 37.60
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.56 13.60 13.53 5 3.0523 16.13 19.68 19.70 5 2.3168 30.46 22.08 22.14
12 8 0.5186 12.80 15.93 15.91 6 0.8142 16.06 18.63 18.59 8 0.3742 39.33 28.85 28.92
16 11 0.1230 14.47 19.35 19.35 7 0.2784 18.07 18.26 18.27 11 0.0667 63.48 45.63 45.49
20 14 0.0297 23.26 25.43 25.50 8 0.1259 18.94 19.98 19.96 14 0.0106 77.27 55.27 55.26

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
79.09 105.94 21.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.1489 27.84 42.94 39.54 4 3.3441 13.40 16.86 16.24 5 2.4525 17.49 21.50 22.91
12 9 0.3184 39.88 70.96 45.80 5 1.0317 25.65 23.34 23.72 8 0.4209 24.66 40.84 43.40
16 11 0.0455 63.44 131.60 53.36 6 0.4015 26.91 28.06 30.83 11 0.0783 55.55 63.93 61.93
20 14 0.0068 150.15 191.11 57.80 7 0.1883 36.06 33.24 35.04 14 0.0158 59.27 76.02 80.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.76 13.85 13.78 5 3.0511 16.59 19.98 20.10 5 2.3280 33.71 23.09 23.76
12 8 0.5422 13.36 16.91 17.06 6 0.8206 16.96 21.83 21.48 8 0.3751 52.23 42.85 33.58
16 11 0.1202 24.09 30.75 27.74 7 0.2865 25.27 22.67 24.24 11 0.0645 82.06 62.65 62.25
20 14 0.0284 44.61 54.50 57.20 8 0.1200 34.14 34.78 33.40 14 0.0117 97.87 76.49 71.64

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
63.21 10.43 7.26
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.93 22.98 26.64 4 3.3200 9.57 12.40 12.45 5 2.4144 13.00 16.04 16.06
12 9 0.3118 19.59 35.06 29.23 5 1.0423 12.15 14.09 14.13 8 0.4200 17.35 22.49 22.46
16 11 0.0453 24.97 47.39 30.31 6 0.3972 13.80 15.52 15.56 11 0.0783 24.01 32.16 32.18
20 14 0.0062 31.64 60.32 31.09 7 0.1886 14.61 16.39 16.37 14 0.0149 30.84 37.02 37.10
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 7.05 9.40 9.41 5 3.0523 11.79 13.95 13.93 5 2.3168 13.28 16.71 16.69
12 8 0.5186 10.92 14.16 14.01 6 0.8142 13.63 15.45 15.47 8 0.3742 18.36 22.29 22.28
16 11 0.1230 12.81 17.58 17.66 7 0.2784 14.74 16.88 16.78 11 0.0667 25.73 30.82 30.86
20 14 0.0297 17.19 22.05 22.05 8 0.1259 16.01 17.86 17.92 14 0.0106 33.00 35.90 35.96

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
79.14 46.62 10.72
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.23 22.75 28.35 4 3.3441 9.67 12.59 12.56 5 2.4525 13.03 16.72 16.78
12 9 0.3184 19.73 35.31 30.04 5 1.0317 12.54 15.34 14.12 8 0.4209 17.24 22.16 22.58
16 11 0.0455 26.20 48.89 30.86 6 0.4015 15.73 16.43 16.46 11 0.0783 28.42 38.27 38.87
20 14 0.0068 43.63 83.05 37.74 7 0.1883 17.82 21.53 19.63 14 0.0158 33.82 44.44 51.20
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.21 9.47 9.46 5 3.0511 11.93 14.06 14.02 5 2.3280 13.38 17.64 17.71
12 8 0.5422 11.14 14.96 14.44 6 0.8206 14.17 15.76 15.40 8 0.3751 20.77 23.91 25.80
16 11 0.1202 12.92 18.83 17.95 7 0.2865 14.64 16.63 16.85 11 0.0645 28.52 31.68 31.69
20 14 0.0284 19.58 32.95 38.40 8 0.1200 18.58 21.45 20.86 14 0.0117 35.91 37.98 38.21

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
46.28 9.23 8.44
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 56.58 53.79 37.04 4 3.3200 18.26 17.48 20.65 5 2.4144 20.03 41.60 41.03
12 9 0.3118 85.19 78.21 38.37 5 1.0423 20.47 18.96 20.66 8 0.4200 25.00 56.85 57.32
16 11 0.0453 106.16 96.69 37.45 6 0.3972 21.70 19.47 20.60 11 0.0783 36.71 77.22 77.27
20 14 0.0062 135.44 122.24 38.27 7 0.1886 23.71 20.44 21.24 14 0.0149 42.04 91.52 94.97
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.21 23.98 23.60 5 3.0523 21.73 22.44 25.03 5 2.3168 23.04 41.42 40.80
12 8 0.5350 16.09 32.72 24.10 6 0.8142 23.84 24.17 25.71 8 0.3742 29.97 56.96 56.97
16 11 0.1194 26.51 54.94 39.18 7 0.2784 26.65 26.66 27.09 11 0.0667 42.27 76.55 79.69
20 14 0.0262 25.24 53.05 36.54 8 0.1259 27.25 28.78 29.32 14 0.0106 47.41 94.16 93.90

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
68.61 37.55 12.57
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.83 57.96 41.12 4 3.3441 20.75 18.88 25.81 5 2.4525 23.18 46.02 45.69
12 9 0.3184 103.51 92.33 43.74 5 1.0317 35.88 27.33 29.12 8 0.4209 36.48 75.27 74.20
16 11 0.0455 209.61 137.32 45.85 6 0.4015 29.59 24.12 24.94 11 0.0783 43.15 83.62 82.52
20 14 0.0068 212.62 200.48 49.05 7 0.1883 40.27 29.16 29.50 14 0.0158 50.49 103.51 104.35
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.86 28.89 28.77 5 3.0511 24.17 24.47 27.75 5 2.3280 25.39 41.95 42.19
12 8 0.5375 16.75 44.32 32.17 6 0.8206 27.61 28.51 31.56 8 0.3751 34.72 62.41 65.94
16 11 0.1187 31.78 74.66 52.81 7 0.2865 36.58 40.05 35.15 11 0.0645 48.55 80.08 83.87
20 14 0.0287 39.24 88.09 58.06 8 0.1200 39.17 47.42 42.52 14 0.0117 60.89 110.61 108.30
Description
Mirrored via gitea-mirror
Readme 2.6 MiB
Languages
Python 68.8%
Shell 31.2%