Skip to content

boostorg/boost_bloom_benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Experimental results for 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 (-march=native), which causes fast_multiblock32 and fast_multiblock64 to use their AVX2 variant.

  • Successful lookup: the element is in the filter.
  • Unsuccessful lookup: the element is not in the filter, though lookup may return true.
  • Mixed lookup: 10% successful, 90% unsuccessful.

For reference, we provide also insertion and 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
mixed
lookup
38.88 5.63 4.24 7.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1303 11.04 12.08 18.15 19.38 4 3.3706 3.99 4.60 4.60 4.60 5 3.0229 5.07 5.11 5.11 5.12
12 9 0.3077 16.59 17.97 19.24 21.62 5 1.0495 4.38 5.15 5.15 5.15 6 0.8320 5.01 5.55 5.55 5.56
16 11 0.0447 20.28 21.45 18.12 22.04 6 0.4212 5.02 5.62 5.63 5.62 7 0.2916 5.55 6.02 6.02 6.02
20 14 0.0063 24.20 27.47 18.49 23.00 7 0.1954 5.39 5.97 5.98 5.97 8 0.1209 5.81 6.29 6.30 6.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4608 5.05 5.66 5.66 5.66 5 2.2909 5.88 6.97 6.96 6.98 5 2.7470 3.22 2.95 2.95 2.95
12 8 0.4110 5.86 9.25 9.25 9.25 8 0.3808 7.05 9.67 9.66 9.67 8 0.5416 2.72 2.75 2.75 2.75
16 11 0.0737 9.18 11.79 11.79 11.79 11 0.0614 19.10 13.65 13.65 13.66 11 0.1157 5.78 5.84 5.86 5.86
20 13 0.0152 10.40 12.73 12.72 12.73 14 0.0112 11.72 15.19 15.92 15.10 13 0.0268 5.83 5.88 5.87 5.88
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4821 3.17 2.77 2.77 2.78 5 2.4383 4.63 4.57 4.58 4.58 5 2.2971 4.83 4.41 4.41 4.41
12 8 0.4308 3.33 2.84 2.85 2.84 8 0.4183 3.48 4.18 4.19 4.19 8 0.3720 4.83 4.52 4.52 4.53
16 11 0.0894 5.57 5.66 5.64 5.63 11 0.0788 7.61 7.79 7.86 7.85 11 0.0680 7.79 7.68 7.67 7.66
20 13 0.0150 5.59 5.68 5.67 5.67 13 0.0136 8.46 8.66 8.72 8.71 14 0.0150 8.62 8.42 8.42 8.41
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3151 6.43 6.93 6.93 6.93 6 2.3015 11.76 8.38 8.39 8.39 7 2.3446 10.70 11.22 11.25 11.27
12 7 0.4171 8.77 9.90 9.90 9.90 7 0.3864 12.54 10.90 10.90 10.91 10 0.3486 14.13 14.42 14.42 14.42
16 9 0.0818 10.66 11.05 11.05 11.06 10 0.0709 14.94 13.13 13.13 13.15 11 0.0515 15.17 15.73 16.32 16.37
20 12 0.0222 12.87 14.19 14.18 14.18 12 0.0150 16.59 15.98 15.98 15.98 15 0.0062 20.82 21.19 21.12 21.21

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
58.14 23.11 14.68 21.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1519 18.30 20.27 21.68 23.25 4 3.3467 5.82 6.45 6.41 6.41 5 3.0383 5.86 6.36 6.38 6.38
12 9 0.3180 45.14 49.34 26.89 31.30 5 1.0300 11.17 12.22 12.25 12.23 6 0.8268 11.35 12.39 12.39 12.43
16 11 0.0469 85.98 95.66 34.22 43.52 6 0.4034 16.90 18.69 18.70 18.70 7 0.2883 19.05 19.26 19.25 19.26
20 14 0.0065 124.18 137.05 40.11 54.69 7 0.1887 22.35 22.32 22.32 22.33 8 0.1194 22.92 25.51 25.51 25.54
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4510 6.61 7.33 7.35 7.36 5 2.3157 6.80 8.59 8.59 8.61 5 2.7361 4.41 4.20 4.20 4.22
12 8 0.4207 12.24 15.58 15.64 15.55 8 0.3724 16.06 20.17 20.20 20.17 8 0.5415 7.63 7.92 7.93 7.91
16 11 0.0764 30.02 31.59 31.59 31.59 11 0.0642 35.72 35.30 35.36 35.33 11 0.1179 19.18 21.15 21.17 21.18
20 13 0.0150 37.47 39.55 39.57 39.58 14 0.0122 41.01 52.09 53.04 52.19 13 0.0275 22.00 24.27 24.34 24.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4788 4.34 4.03 4.02 4.06 5 2.4546 5.68 5.70 5.74 5.72 5 2.3234 5.97 5.82 5.78 5.74
12 8 0.4394 8.97 8.82 8.81 8.83 8 0.4210 9.01 10.03 10.05 10.07 8 0.3754 11.73 12.79 12.82 12.84
16 11 0.0865 18.98 21.23 21.23 21.24 11 0.0781 25.36 26.42 26.46 26.45 11 0.0642 24.40 27.15 27.16 27.13
20 13 0.0178 21.97 24.79 24.80 24.80 13 0.0160 31.02 31.99 32.01 32.02 14 0.0110 30.51 32.09 32.10 32.10
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3292 7.93 8.54 8.54 8.53 6 2.2986 12.61 10.16 10.21 10.16 7 2.3389 15.35 15.55 15.59 15.63
12 7 0.4140 17.73 18.87 18.90 18.86 7 0.3845 20.49 20.08 20.10 20.15 10 0.3468 30.42 32.72 32.72 32.67
16 9 0.0852 28.00 28.12 28.11 28.14 10 0.0714 35.60 40.74 40.80 40.79 11 0.0493 43.93 49.91 49.90 49.96
20 12 0.0196 42.53 43.86 43.93 43.85 12 0.0152 52.28 53.17 53.17 53.18 15 0.0076 69.22 74.76 74.66 74.76

Clang 18, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
26.27 6.03 4.27 7.19
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1303 10.41 10.95 17.46 18.65 4 3.3706 4.05 4.08 4.08 4.08 5 3.0229 4.07 4.61 4.61 4.60
12 9 0.3077 15.67 16.08 18.57 21.43 5 1.0495 4.60 4.69 4.68 4.69 6 0.8320 4.57 5.27 5.27 5.27
16 11 0.0447 18.87 19.78 17.56 21.07 6 0.4212 4.99 5.29 5.29 5.29 7 0.2916 4.92 5.73 5.73 5.73
20 14 0.0063 23.68 24.08 18.27 22.72 7 0.1954 5.41 5.74 5.73 5.73 8 0.1209 3.32 3.46 3.46 3.44
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4608 3.24 3.86 3.87 3.86 5 2.2909 3.35 3.70 3.69 3.71 5 2.7470 2.88 2.68 2.68 2.68
12 8 0.4110 3.37 4.82 4.82 4.82 8 0.3808 4.05 4.93 4.93 4.93 8 0.5416 2.76 2.50 2.50 2.50
16 11 0.0737 5.84 7.77 7.75 7.75 11 0.0614 5.96 7.43 7.42 7.42 11 0.1157 4.39 4.46 4.47 4.47
20 13 0.0152 6.16 8.17 8.17 8.17 14 0.0112 6.95 8.34 8.33 8.34 13 0.0268 4.44 4.48 4.48 4.48
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4821 2.86 2.48 2.49 2.48 5 2.4383 3.90 4.17 4.18 4.17 5 2.2971 4.09 4.02 4.00 4.00
12 8 0.4308 2.96 2.54 2.54 2.54 8 0.4183 3.50 3.88 3.89 3.89 8 0.3720 4.24 4.10 4.10 4.11
16 11 0.0894 4.44 4.20 4.19 4.19 11 0.0788 5.80 6.41 6.42 6.42 11 0.0680 6.03 6.26 6.26 6.22
20 13 0.0150 4.50 4.22 4.21 4.22 13 0.0136 6.92 7.37 7.39 7.36 14 0.0150 7.23 7.16 7.13 7.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3151 6.32 6.65 6.65 6.65 6 2.3015 11.73 8.04 8.04 8.03 7 2.3446 10.34 10.39 10.41 10.42
12 7 0.4171 9.67 9.03 9.03 9.04 7 0.3864 13.58 10.28 10.28 10.27 10 0.3486 14.97 14.54 14.60 14.56
16 9 0.0818 11.96 10.85 10.86 10.86 10 0.0709 16.34 12.44 12.43 12.43 11 0.0515 15.77 15.81 15.86 15.94
20 12 0.0222 14.29 13.72 13.72 13.72 12 0.0150 17.18 15.41 15.39 15.39 15 0.0062 21.76 20.99 21.28 20.93

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
52.10 23.41 14.52 21.27
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1519 13.29 13.82 20.07 21.49 4 3.3467 6.15 6.16 6.20 6.19 5 3.0383 6.19 6.80 6.77 6.74
12 9 0.3180 48.51 50.41 26.44 31.03 5 1.0300 11.35 11.31 11.34 11.35 6 0.8268 11.24 12.28 12.29 12.30
16 11 0.0469 86.85 87.25 31.72 39.99 6 0.4034 18.05 18.19 18.19 18.20 7 0.2883 17.57 19.58 19.61 19.65
20 14 0.0065 122.88 121.66 37.42 50.57 7 0.1887 22.36 22.19 22.22 22.21 8 0.1194 13.98 15.26 15.26 15.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4510 4.76 5.63 5.62 5.64 5 2.3157 4.46 5.09 5.12 5.11 5 2.7361 4.14 3.98 3.97 3.94
12 8 0.4207 8.67 10.45 10.46 10.43 8 0.3724 9.60 12.26 12.27 12.25 8 0.5415 7.90 7.61 7.60 7.58
16 11 0.0764 18.26 22.27 22.26 22.26 11 0.0642 18.29 23.15 23.15 23.16 11 0.1179 15.31 16.71 16.70 16.70
20 13 0.0150 23.52 30.03 30.04 30.03 14 0.0122 24.17 30.82 30.78 30.81 13 0.0275 16.94 18.57 18.57 18.57
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4788 3.97 3.75 3.74 3.75 5 2.4546 5.20 5.68 5.69 5.67 5 2.3234 4.88 4.82 4.78 4.81
12 8 0.4394 7.30 7.34 7.33 7.34 8 0.4210 9.47 10.13 10.13 10.11 8 0.3754 10.94 12.44 12.41 12.42
16 11 0.0865 14.37 16.36 16.38 16.37 11 0.0781 19.11 21.69 21.73 21.71 11 0.0642 18.32 21.99 21.97 21.96
20 13 0.0178 16.27 18.57 18.55 18.57 13 0.0160 24.43 30.35 30.42 30.37 14 0.0110 24.98 29.68 29.72 29.70
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3292 8.27 8.72 8.66 8.70 6 2.2986 13.06 10.53 10.54 10.57 7 2.3389 12.77 12.66 12.71 12.74
12 7 0.4140 19.00 18.17 18.14 18.18 7 0.3845 23.86 22.26 22.20 22.20 10 0.3468 30.11 31.51 31.59 31.56
16 9 0.0852 29.62 31.75 31.73 31.88 10 0.0714 37.63 40.62 40.59 40.52 11 0.0493 44.55 48.83 48.99 49.04
20 12 0.0196 44.38 43.58 43.61 43.56 12 0.0152 53.75 52.41 52.08 52.38 15 0.0076 72.92 71.38 70.59 70.88

Clang 15, ARM64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
18.75 2.71 1.97 4.22
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1303 6.35 4.13 11.37 11.75 4 3.3706 1.30 1.22 1.23 1.23 5 3.0229 1.62 1.28 1.29 1.27
12 9 0.3077 9.45 6.09 11.96 12.81 5 1.0495 1.41 1.42 1.42 1.42 6 0.8320 1.69 1.41 1.42 1.42
16 11 0.0447 11.61 7.34 11.22 12.77 6 0.4212 1.61 1.64 1.64 1.64 7 0.2916 1.75 1.59 1.59 1.59
20 14 0.0063 15.03 9.35 11.41 13.43 7 0.1954 1.79 1.80 1.80 1.80 8 0.1209 1.79 1.57 1.57 1.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4608 2.24 1.70 1.68 1.72 5 2.2909 2.25 1.73 1.73 1.74 5 2.7470 1.99 1.68 1.69 1.69
12 8 0.4110 2.17 1.84 1.84 1.87 8 0.3808 2.72 2.18 2.22 2.17 8 0.5416 1.52 1.40 1.39 1.38
16 11 0.0737 4.03 2.89 2.89 2.89 11 0.0614 4.03 3.00 2.99 3.00 11 0.1157 2.89 2.35 2.35 2.34
20 13 0.0152 4.61 3.34 3.33 3.33 14 0.0112 4.64 3.59 3.58 3.59 13 0.0268 2.93 2.92 2.91 2.92
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4821 2.02 1.71 1.69 1.69 5 2.4608 2.24 1.74 1.70 1.70 5 2.2909 2.30 1.75 1.77 1.76
12 8 0.4308 2.04 1.59 1.60 1.59 8 0.4110 2.19 1.86 1.86 1.86 8 0.3808 2.73 2.16 2.17 2.16
16 11 0.0894 2.97 2.35 2.35 2.35 11 0.0737 4.11 2.91 2.94 2.92 11 0.0614 4.07 3.07 3.03 3.03
20 13 0.0150 2.92 2.83 2.83 2.82 13 0.0152 4.51 3.34 3.37 3.38 14 0.0112 4.66 3.58 3.58 3.60
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3151 3.21 2.85 2.88 2.87 6 2.3015 6.99 3.85 3.92 3.85 7 2.3446 7.72 4.85 4.85 4.85
12 7 0.4171 4.36 3.82 3.85 3.84 7 0.3864 7.40 4.26 4.28 4.27 10 0.3486 10.89 6.83 6.82 6.82
16 9 0.0818 5.53 4.58 4.57 4.56 10 0.0709 8.47 5.24 5.24 5.26 11 0.0515 12.05 7.59 7.58 7.56
20 12 0.0222 6.99 5.78 5.79 5.78 12 0.0150 9.40 6.06 6.05 6.05 15 0.0062 17.12 10.62 10.61 10.62

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
23.50 11.15 6.35 9.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1519 7.81 6.16 12.92 13.40 4 3.3467 2.05 1.98 1.99 2.00 5 3.0383 2.11 2.02 2.02 2.02
12 9 0.3180 12.93 11.19 16.12 17.85 5 1.0300 3.72 3.51 3.62 3.82 6 0.8268 3.28 3.11 3.16 3.14
16 11 0.0469 31.49 25.11 18.31 22.21 6 0.4034 6.99 6.55 6.69 6.49 7 0.2883 6.49 6.30 5.92 6.38
20 14 0.0065 53.51 39.20 20.66 27.58 7 0.1887 8.94 8.08 7.92 7.92 8 0.1194 8.16 6.45 6.32 6.39
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4510 2.70 2.52 2.53 2.53 5 2.3157 2.73 2.63 2.61 2.62 5 2.7361 2.41 2.50 2.50 2.53
12 8 0.4207 4.10 4.15 4.20 4.10 8 0.3724 4.22 4.57 4.46 4.48 8 0.5415 2.66 3.28 3.24 3.26
16 11 0.0764 10.04 9.14 9.35 9.95 11 0.0642 10.80 9.67 9.80 10.01 11 0.1179 8.20 8.50 8.14 7.77
20 13 0.0150 14.51 12.72 13.20 13.02 14 0.0122 16.24 13.64 13.59 13.70 13 0.0275 10.43 11.55 11.15 11.11
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4788 2.41 2.53 2.54 2.54 5 2.4510 2.71 2.52 2.53 2.55 5 2.3157 2.72 2.60 2.60 2.57
12 8 0.4394 2.98 3.31 3.25 3.22 8 0.4207 3.94 4.25 4.24 4.25 8 0.3724 4.19 5.06 4.46 4.59
16 11 0.0865 8.08 8.55 8.13 7.55 11 0.0764 9.59 8.87 9.37 9.49 11 0.0642 11.00 9.81 10.02 9.84
20 13 0.0178 10.27 11.21 11.53 11.18 13 0.0150 15.90 12.88 12.91 12.90 14 0.0122 15.78 13.12 13.32 13.79
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3292 4.59 4.18 4.18 4.25 6 2.2986 8.75 5.12 5.14 5.10 7 2.3389 8.96 6.76 6.76 6.78
12 7 0.4140 9.54 8.55 8.87 8.29 7 0.3845 13.22 8.47 8.48 7.94 10 0.3468 15.11 12.65 12.29 12.20
16 9 0.0852 16.40 14.83 14.78 14.96 10 0.0714 23.92 16.91 17.58 17.08 11 0.0493 26.57 23.06 23.20 23.31
20 12 0.0196 23.85 19.24 18.56 17.80 12 0.0152 27.15 20.59 20.57 20.59 15 0.0076 45.61 35.47 35.47 35.47

VS 2022, x64

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
24.13 5.19 3.53 5.49
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1303 10.31 11.32 14.07 15.20 4 3.3706 3.82 3.57 3.57 3.56 5 3.0229 4.34 4.16 4.14 4.14
12 9 0.3077 15.12 15.92 14.72 16.25 5 1.0495 4.40 3.99 3.99 3.94 6 0.8320 5.01 4.80 4.77 4.78
16 11 0.0447 18.22 20.28 13.99 16.95 6 0.4212 5.04 4.37 4.37 4.35 7 0.2916 5.68 5.18 5.15 5.07
20 14 0.0063 22.81 25.11 14.30 17.72 7 0.1954 5.71 4.71 4.70 4.68 8 0.1209 6.30 5.63 5.56 5.56
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4608 5.37 4.29 4.28 4.29 5 2.2909 8.39 4.62 4.60 4.62 5 2.7470 2.84 2.18 2.17 2.18
12 8 0.4110 8.22 7.00 6.81 6.82 8 0.3808 12.71 7.06 7.04 7.02 8 0.5416 2.82 2.16 2.15 2.14
16 11 0.0737 10.51 9.21 9.02 9.03 11 0.0614 12.34 10.50 10.24 10.25 11 0.1157 4.28 3.50 3.49 3.47
20 13 0.0152 11.61 10.19 10.20 10.22 14 0.0112 13.86 12.35 12.18 12.15 13 0.0268 4.31 3.49 3.47 3.46
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4821 2.80 2.04 2.04 2.03 5 2.4383 3.73 3.26 3.26 3.26 5 2.2971 3.79 3.14 3.13 3.13
12 8 0.4308 3.24 2.08 2.05 2.03 8 0.4183 4.15 4.41 4.32 4.32 8 0.3720 5.65 5.19 5.15 5.13
16 11 0.0894 4.35 3.31 3.23 3.24 11 0.0788 7.89 6.63 6.60 6.59 11 0.0680 7.68 6.43 6.39 6.36
20 13 0.0150 4.44 3.33 3.32 3.31 13 0.0136 7.85 7.64 7.61 7.53 14 0.0150 8.07 7.17 7.17 7.17
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3151 7.02 6.00 6.01 6.02 6 2.3015 9.94 7.41 7.39 7.44 7 2.3446 10.07 8.90 8.96 8.95
12 7 0.4171 9.39 8.09 8.07 7.92 7 0.3864 11.68 9.12 9.03 8.96 10 0.3486 13.73 12.97 12.98 12.89
16 9 0.0818 11.37 10.67 10.65 10.61 10 0.0709 14.14 12.68 12.63 12.45 11 0.0515 15.42 15.32 15.31 15.22
20 12 0.0222 14.69 12.64 12.64 12.60 12 0.0150 16.31 14.19 14.18 14.08 15 0.0062 23.51 22.81 22.64 22.52

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
39.87 23.30 12.15 18.53
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1519 11.00 11.78 15.52 16.53 4 3.3467 4.23 3.76 3.76 3.77 5 3.0383 4.73 4.52 4.50 4.51
12 9 0.3180 17.36 17.68 16.70 18.36 5 1.0300 6.03 5.65 5.65 5.58 6 0.8268 6.85 6.47 6.51 6.46
16 11 0.0469 68.61 79.88 26.06 33.66 6 0.4034 15.51 13.61 13.60 13.63 7 0.2883 16.50 16.03 15.96 15.93
20 14 0.0065 102.93 118.19 31.16 42.67 7 0.1887 19.72 18.36 18.31 18.31 8 0.1194 20.85 22.63 22.59 22.75
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4510 6.10 4.58 4.58 4.58 5 2.3157 7.68 4.96 4.97 4.97 5 2.7361 3.17 2.30 2.30 2.30
12 8 0.4207 10.25 8.93 8.71 8.71 8 0.3724 15.69 9.06 9.09 8.95 8 0.5415 4.83 4.22 4.18 4.16
16 11 0.0764 26.33 23.63 23.60 23.47 11 0.0642 29.97 28.49 28.43 28.45 11 0.1179 14.15 13.21 13.20 13.19
20 13 0.0150 36.25 35.14 35.19 35.35 14 0.0122 40.08 38.33 38.25 38.20 13 0.0275 16.39 15.12 15.10 15.09
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4788 3.15 2.14 2.14 2.14 5 2.4546 4.12 3.42 3.42 3.43 5 2.3234 4.20 3.31 3.30 3.31
12 8 0.4394 5.00 3.96 3.87 3.92 8 0.4210 5.93 5.81 5.90 5.88 8 0.3754 7.34 7.17 7.38 7.23
16 11 0.0865 14.40 13.08 13.03 13.03 11 0.0781 23.22 19.34 19.32 19.31 11 0.0642 20.97 19.29 19.29 19.25
20 13 0.0178 17.86 15.06 15.03 15.03 13 0.0160 28.83 27.81 27.81 27.75 14 0.0110 28.94 27.64 27.55 27.57
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3292 7.66 6.43 6.41 6.41 6 2.2986 10.57 7.97 7.97 7.96 7 2.3389 11.43 9.95 9.91 9.97
12 7 0.4140 11.20 9.72 9.57 9.64 7 0.3845 14.08 11.05 11.43 11.28 10 0.3468 15.54 14.04 14.04 14.30
16 9 0.0852 25.60 24.12 24.09 24.01 10 0.0714 33.63 32.26 32.32 32.33 11 0.0493 41.35 40.11 40.16 40.16
20 12 0.0196 35.74 33.50 33.42 33.64 12 0.0152 42.92 40.83 40.70 40.79 15 0.0076 69.03 64.87 64.85 64.75

GCC 14, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
74.48 34.12 14.23 17.71
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1535 31.06 44.58 39.39 40.81 4 3.3223 13.31 16.23 16.20 16.20 5 3.0704 14.57 17.55 17.67 17.60
12 9 0.3124 46.61 67.00 40.59 45.22 5 1.0493 15.36 18.59 18.46 18.48 6 0.8146 16.07 19.44 19.07 19.09
16 11 0.0479 57.25 81.92 38.88 46.16 6 0.4013 16.38 20.52 20.47 20.47 7 0.2937 17.00 21.29 20.98 21.13
20 14 0.0061 72.77 103.54 41.16 49.31 7 0.1916 17.64 22.16 22.15 22.17 8 0.1274 18.36 22.04 22.10 22.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4720 19.92 23.82 23.80 23.77 5 2.3433 26.27 26.52 26.51 26.52 5 2.7379 12.87 15.53 15.67 15.54
12 8 0.4178 26.65 30.02 30.24 29.97 8 0.3776 37.00 34.55 34.55 34.57 8 0.5254 14.96 18.13 18.38 17.77
16 11 0.0827 33.52 36.92 37.02 36.93 11 0.0632 68.50 49.05 48.97 48.96 11 0.1223 17.24 20.82 20.82 20.82
20 13 0.0174 37.39 41.70 41.65 41.63 14 0.0121 82.51 58.61 58.56 58.60 13 0.0311 23.96 26.06 26.00 26.02
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4755 14.42 16.83 16.83 16.87 5 2.4720 19.91 23.70 23.71 23.76 5 2.3433 26.23 26.54 26.54 26.53
12 8 0.4449 19.03 21.04 21.29 21.08 8 0.4178 26.64 30.17 30.18 29.97 8 0.3776 37.01 34.55 34.54 34.55
16 11 0.0848 23.43 25.07 25.06 25.15 11 0.0827 33.44 36.91 37.01 36.94 11 0.0632 68.68 49.09 48.97 48.98
20 13 0.0214 31.64 33.06 33.06 33.32 13 0.0174 37.39 41.58 41.67 41.52 14 0.0121 82.38 58.54 58.53 58.54
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3091 18.32 24.19 24.42 24.38 6 2.2991 33.64 32.51 32.51 32.56 7 2.3472 29.86 34.56 34.37 34.42
12 7 0.4211 28.42 33.63 33.64 33.66 7 0.3930 44.91 39.32 39.34 39.33 10 0.3516 42.69 44.74 44.72 44.88
16 9 0.0870 37.08 41.18 41.10 41.09 10 0.0719 49.44 48.15 48.17 48.17 11 0.0500 44.29 47.37 47.44 47.34
20 12 0.0183 42.25 46.80 46.74 46.87 12 0.0143 52.31 52.43 52.38 52.40 15 0.0074 61.13 64.46 64.93 65.76

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
109.11 128.91 28.15 41.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1483 39.51 56.07 46.54 47.16 4 3.3516 15.18 18.02 18.06 18.11 5 3.0386 17.00 19.84 20.35 19.84
12 9 0.3160 100.93 129.53 61.35 68.46 5 1.0284 25.86 26.78 26.53 26.76 6 0.8263 26.86 33.24 33.20 33.40
16 11 0.0450 190.97 255.35 79.53 99.13 6 0.4002 38.10 48.02 48.00 47.98 7 0.2896 39.26 50.31 50.28 50.18
20 14 0.0071 299.48 411.67 106.73 140.12 7 0.1867 48.47 66.06 65.94 66.05 8 0.1186 63.33 66.81 66.77 66.77
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4543 22.63 27.07 26.99 27.00 5 2.3258 30.83 32.35 32.42 32.40 5 2.7359 15.04 18.54 18.11 18.10
12 8 0.4223 39.84 44.29 44.29 44.24 8 0.3748 53.82 52.47 52.57 52.48 8 0.5434 25.49 27.98 27.38 28.18
16 11 0.0775 66.88 71.54 71.58 71.60 11 0.0650 103.37 82.91 82.92 82.89 11 0.1192 43.23 45.59 45.62 45.73
20 13 0.0157 89.68 97.39 99.42 98.56 14 0.0115 135.23 112.08 112.19 112.18 13 0.0279 71.84 77.85 77.75 77.64
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4784 17.46 20.47 19.97 21.13 5 2.4543 24.00 28.02 27.93 27.91 5 2.3258 30.12 31.60 31.67 31.66
12 8 0.4458 31.61 33.43 33.41 33.82 8 0.4223 40.33 42.17 42.12 42.11 8 0.3748 56.89 54.73 54.70 54.84
16 11 0.0862 49.31 57.34 57.30 58.44 11 0.0775 68.15 73.58 73.67 73.39 11 0.0650 103.93 83.13 85.17 84.22
20 13 0.0179 84.38 85.42 85.13 85.08 13 0.0157 89.57 97.22 96.98 96.93 14 0.0115 135.75 112.07 112.12 112.20
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3259 20.50 27.60 27.47 27.45 6 2.2935 37.77 38.68 38.77 40.37 7 2.3470 37.72 40.95 41.06 41.12
12 7 0.4145 43.12 44.77 44.77 44.82 7 0.3870 61.13 59.74 59.62 59.61 10 0.3500 64.59 67.14 67.24 67.17
16 9 0.0844 67.22 69.87 71.86 71.53 10 0.0712 88.00 87.01 86.79 86.91 11 0.0490 89.63 95.88 95.87 95.82
20 12 0.0203 85.13 89.71 89.99 89.37 12 0.0150 106.77 107.36 107.43 107.48 15 0.0074 135.47 143.71 143.78 143.83

Clang 18, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
79.35 14.40 8.59 11.59
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1535 21.45 28.24 29.23 30.09 4 3.3223 12.45 13.93 14.08 13.92 5 3.0704 15.84 17.98 18.06 17.99
12 9 0.3124 31.62 42.61 31.41 33.94 5 1.0493 16.13 18.45 18.45 18.44 6 0.8146 18.23 20.85 20.86 20.68
16 11 0.0479 39.38 62.86 32.19 39.38 6 0.4013 18.58 21.32 21.31 21.32 7 0.2937 22.12 22.90 22.82 22.92
20 14 0.0061 59.42 81.79 32.84 39.36 7 0.1916 22.24 23.26 23.26 23.29 8 0.1274 24.06 25.72 25.70 25.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4720 17.04 18.35 18.47 18.45 5 2.3433 17.11 18.88 19.01 18.83 5 2.7379 7.97 8.72 8.72 9.03
12 8 0.4178 22.67 26.58 26.52 26.53 8 0.3776 26.60 26.92 26.97 26.95 8 0.5254 11.93 13.77 13.75 13.73
16 11 0.0827 33.17 35.29 35.29 35.28 11 0.0632 35.65 34.17 34.47 34.35 11 0.1223 13.83 17.82 17.81 17.80
20 13 0.0174 37.57 38.31 38.29 38.27 14 0.0121 44.40 41.25 41.15 41.10 13 0.0311 19.11 19.76 19.74 19.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4755 7.68 8.48 8.68 8.50 5 2.4720 17.02 18.32 18.33 18.31 5 2.3433 17.09 18.86 18.84 18.84
12 8 0.4449 11.89 14.09 14.08 14.09 8 0.4178 22.66 26.58 26.54 26.56 8 0.3776 26.60 26.93 26.96 26.95
16 11 0.0848 14.30 17.21 17.23 17.20 11 0.0827 33.20 35.45 35.30 35.29 11 0.0632 35.62 34.22 34.33 34.14
20 13 0.0214 18.83 20.14 19.99 19.99 13 0.0174 37.58 38.32 38.29 38.31 14 0.0121 44.39 41.26 41.19 41.17
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3091 18.23 20.02 20.04 20.04 6 2.2991 47.31 39.17 37.62 37.73 7 2.3472 28.29 27.87 27.80 27.05
12 7 0.4211 26.99 28.43 28.41 28.43 7 0.3930 52.65 44.02 45.34 44.12 10 0.3516 36.70 36.65 36.64 36.62
16 9 0.0870 33.14 34.28 34.27 34.28 10 0.0719 60.13 48.35 48.87 48.72 11 0.0500 39.49 38.78 38.65 38.75
20 12 0.0183 39.71 39.28 39.28 39.27 12 0.0143 64.50 52.58 52.77 52.61 15 0.0074 51.98 50.52 50.82 50.63

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
125.28 62.59 23.38 33.25
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1483 26.52 34.64 34.33 35.44 4 3.3516 14.31 15.86 15.81 15.78 5 3.0386 19.62 21.58 21.56 21.66
12 9 0.3160 79.97 99.13 48.38 54.19 5 1.0284 27.34 29.36 29.31 29.33 6 0.8263 28.68 34.59 34.61 34.60
16 11 0.0450 145.39 208.78 67.73 84.49 6 0.4002 39.93 49.26 49.17 49.17 7 0.2896 52.56 51.55 51.41 51.50
20 14 0.0071 249.21 322.83 84.69 107.83 7 0.1867 65.27 66.55 66.43 66.42 8 0.1186 67.52 70.48 70.47 70.40
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4543 20.24 21.66 21.74 21.87 5 2.3258 20.20 22.71 22.77 22.72 5 2.7359 10.84 11.80 11.78 11.73
12 8 0.4223 34.92 40.21 40.15 40.20 8 0.3748 43.30 40.66 40.78 40.75 8 0.5434 22.36 25.14 24.07 24.10
16 11 0.0775 68.66 70.99 70.87 70.87 11 0.0650 71.29 69.03 68.91 69.14 11 0.1192 39.01 41.91 41.45 41.45
20 13 0.0157 89.10 88.28 88.27 88.27 14 0.0115 98.30 93.98 94.39 95.16 13 0.0279 54.21 53.14 53.30 53.34
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4784 9.39 11.03 11.02 10.70 5 2.4543 20.35 21.91 21.83 22.04 5 2.3258 20.17 22.90 22.91 22.96
12 8 0.4458 23.11 25.49 25.27 25.16 8 0.4223 35.85 39.83 39.75 39.75 8 0.3748 45.01 46.26 46.17 46.16
16 11 0.0862 38.45 41.00 40.99 41.12 11 0.0775 68.20 70.08 70.19 70.26 11 0.0650 71.50 69.92 70.03 70.15
20 13 0.0179 54.05 55.07 55.15 55.12 13 0.0157 88.89 89.91 89.90 89.90 14 0.0115 97.53 92.37 92.57 93.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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3259 21.35 23.72 23.61 23.72 6 2.2935 48.65 40.39 38.92 38.98 7 2.3470 39.78 34.79 34.81 33.79
12 7 0.4145 40.34 42.08 42.04 42.01 7 0.3870 66.28 59.90 60.70 60.15 10 0.3500 59.39 58.68 58.69 58.65
16 9 0.0844 62.47 63.14 63.08 63.08 10 0.0712 92.38 81.49 81.72 81.71 11 0.0490 86.57 81.83 81.85 81.83
20 12 0.0203 81.30 81.22 81.02 81.21 12 0.0150 111.07 100.63 100.54 100.64 15 0.0074 126.52 117.12 116.82 116.95

VS 2022, x86

N = 1M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
30.99 6.61 5.57 7.35
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1535 65.76 60.31 39.85 43.03 4 3.3223 20.90 20.51 23.29 24.04 5 3.0704 24.80 24.61 26.27 27.40
12 9 0.3124 98.61 87.59 42.07 45.12 5 1.0493 22.43 22.12 24.28 25.17 6 0.8146 27.39 27.53 28.22 29.31
16 11 0.0479 121.24 104.79 41.37 47.26 6 0.4013 25.09 25.83 25.95 27.37 7 0.2937 28.86 30.19 29.92 31.03
20 14 0.0061 156.56 134.56 41.14 51.31 7 0.1916 26.53 26.74 27.32 28.25 8 0.1274 30.73 31.74 31.93 32.84
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4720 24.33 41.70 41.63 42.73 5 2.3433 26.44 42.93 41.58 41.62 5 2.7237 17.69 28.25 28.05 28.00
12 8 0.4178 29.30 56.05 56.32 56.31 8 0.3776 31.88 56.24 57.23 57.42 8 0.5409 16.76 37.26 37.39 37.45
16 11 0.0827 37.67 76.10 76.49 75.83 11 0.0632 42.14 75.65 75.62 75.52 11 0.1175 27.05 47.24 47.24 47.17
20 13 0.0174 41.10 86.73 84.75 84.77 14 0.0121 47.16 88.60 88.62 90.97 13 0.0276 27.06 47.54 47.42 47.44
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4745 17.84 28.16 27.74 27.72 5 2.4543 19.68 30.16 30.15 30.15 5 2.3490 20.33 30.33 30.32 30.32
12 8 0.4442 17.92 37.49 37.41 37.41 8 0.4151 18.80 37.98 37.73 37.73 8 0.3796 20.66 38.84 38.65 38.48
16 11 0.0865 28.07 47.37 47.09 47.09 11 0.0781 31.86 50.17 49.88 49.94 11 0.0642 32.71 49.80 49.62 49.60
20 13 0.0179 28.09 47.67 47.41 47.35 13 0.0166 32.60 52.41 52.13 52.12 14 0.0107 33.93 52.13 51.87 51.88
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3091 26.92 41.75 42.02 42.05 6 2.2991 32.50 47.30 47.44 47.23 7 2.3472 36.15 60.42 60.48 60.38
12 7 0.4211 35.50 57.00 56.93 56.65 7 0.3930 39.89 60.22 59.92 59.98 10 0.3516 44.51 78.19 78.16 79.70
16 9 0.0870 40.54 67.14 67.09 67.19 10 0.0719 46.90 77.31 77.25 77.33 11 0.0500 48.22 86.73 82.84 84.67
20 12 0.0183 51.20 92.48 93.54 92.85 12 0.0143 55.36 93.05 93.72 93.30 15 0.0074 65.57 117.03 117.10 117.08

N = 10M elements

boost::unordered_flat_set
insertion successful
lookup
unsuccessful
lookup
mixed
lookup
61.20 33.60 15.79 24.18
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 6 2.1483 71.33 61.94 41.23 44.50 4 3.3516 21.13 20.52 23.61 24.67 5 3.0386 26.58 26.69 28.11 29.16
12 9 0.3160 109.17 91.41 44.56 48.47 5 1.0284 24.21 24.25 26.05 27.35 6 0.8263 30.85 30.70 31.37 32.31
16 11 0.0450 262.49 219.17 64.88 81.11 6 0.4002 37.96 38.00 38.59 40.20 7 0.2896 48.34 50.03 48.61 49.96
20 14 0.0071 438.25 352.95 78.35 108.96 7 0.1867 45.27 44.88 45.65 46.86 8 0.1186 61.31 63.12 61.61 64.04
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4543 26.00 41.86 41.77 42.89 5 2.3258 28.42 43.11 41.86 41.96 5 2.7344 18.13 30.30 30.30 30.28
12 8 0.4223 33.21 57.98 58.46 58.34 8 0.3748 35.75 58.92 60.17 59.83 8 0.5420 18.52 40.60 40.81 40.59
16 11 0.0775 58.14 90.04 90.42 89.87 11 0.0650 65.16 92.71 92.67 92.83 11 0.1178 47.55 72.98 73.18 73.43
20 13 0.0157 75.59 109.87 108.23 108.25 14 0.0115 85.13 118.10 118.02 120.17 13 0.0273 59.30 86.22 86.17 86.08
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.4716 18.13 29.88 29.88 29.88 5 2.4474 20.09 31.97 31.97 31.99 5 2.3181 20.56 31.86 31.86 31.94
12 8 0.4430 20.08 40.56 40.78 40.96 8 0.4208 20.78 40.80 40.83 40.56 8 0.3766 22.99 42.39 42.25 42.54
16 11 0.0859 51.02 73.42 73.48 73.03 11 0.0774 53.12 73.91 73.84 73.96 11 0.0647 54.14 74.23 74.03 74.31
20 13 0.0176 61.81 87.01 86.45 86.19 13 0.0148 63.91 90.38 90.25 90.25 14 0.0118 65.53 90.37 90.24 90.35
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.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
K FPR
[%]
ins. succ.
lkp.
uns.
lkp.
mixed
lkp.
8 5 2.3259 28.63 41.87 42.29 42.16 6 2.2935 35.27 47.69 48.01 47.73 7 2.3470 38.33 60.66 60.76 60.71
12 7 0.4145 39.29 59.18 58.67 58.39 7 0.3870 44.62 65.26 64.88 65.31 10 0.3500 47.69 79.09 78.99 80.35
16 9 0.0844 58.41 75.87 76.02 75.96 10 0.0712 72.63 104.30 104.57 104.15 11 0.0490 78.28 105.98 103.50 104.67
20 12 0.0203 80.25 111.25 111.54 111.03 12 0.0150 93.86 128.34 128.46 128.42 15 0.0074 110.76 145.03 145.12 145.07

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published