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 |