diff --git a/Cargo.toml b/Cargo.toml index b4b3e48..1460f6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,13 +41,21 @@ serde_json = "1.0" [dev-dependencies] serde_json = "1.0" wyhash = "0.5.0" +ahash = "0.8.11" criterion = { version = "0.5", features = ["html_reports"] } [features] -default = ["low_precisions", "beta", "plusplus"] +default = ["low_precisions", "beta", "plusplus", "zero_count_correction", "precomputed_beta"] beta = [] precomputed_beta = ["beta"] plusplus = [] +# Whether to use the STD's ln function or using a lookup table. +# Enabling this feature will make the library not compile in no_std environments. +std_ln = [ + "std", +] +# Whether to use the low-cardinality correction based on zero-counts or not. +zero_count_correction = [] # Whether to use local interpolation or kmeans in plus plus bias correction. plusplus_kmeans = ["plusplus"] # Whether to use integer or floating point biases and estimates. @@ -121,3 +129,7 @@ opt-level = 3 [[bench]] name = "unique_count_from_sorted_iterators" harness = false + +[[bench]] +name = "hybrid" +harness = false diff --git a/benches/hybrid.rs b/benches/hybrid.rs new file mode 100644 index 0000000..61825a4 --- /dev/null +++ b/benches/hybrid.rs @@ -0,0 +1,58 @@ +//! Benchmark to try and improve performance of the principal hybrid cases. + +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use hyperloglog_rs::prelude::*; + +fn bench_hybrid(c: &mut Criterion) { + let mut random_state = 76568342984735313_u64; + // We consider the case of hash of 32 bits in a precision of 18, using 6 bits per register. + let entries: Vec<(_, _)> = (0..1_000) + .map(|_| { + random_state = splitmix64(random_state); + + let mut keep_hybrid: Hybrid< + PlusPlus>::Array>, + u32, + > = Hybrid::default(); + let mut to_dehybridize: Hybrid< + PlusPlus>::Array>, + u32, + > = Hybrid::default(); + + keep_hybrid.extend(iter_random_values::( + keep_hybrid.capacity() as u64, + None, + Some(random_state), + )); + random_state = splitmix64(random_state); + to_dehybridize.extend(iter_random_values::( + to_dehybridize.capacity() as u64 * 2, + None, + Some(random_state), + )); + + assert!(keep_hybrid.is_hybrid()); + assert!(!to_dehybridize.is_hybrid()); + + (keep_hybrid, to_dehybridize) + }) + .collect(); + + let mut group = c.benchmark_group("hybrid"); + + group.bench_function("hybrid_mix_union", |b| { + b.iter(|| { + let mut total_cardinality = 0.0; + for (left, right) in &entries { + total_cardinality += black_box(left).estimate_union_cardinality(right); + } + total_cardinality + }) + }); + + group.finish(); +} + +criterion_group!(benches, bench_hybrid); + +criterion_main!(benches); diff --git a/benches/unique_count_from_sorted_iterators.rs b/benches/unique_count_from_sorted_iterators.rs index dbe7f3d..3187411 100644 --- a/benches/unique_count_from_sorted_iterators.rs +++ b/benches/unique_count_from_sorted_iterators.rs @@ -1,6 +1,6 @@ //! Benchmarks to evaluate improvements on the unique_count_from_sorted_iterators function. -use criterion::{criterion_group, criterion_main, Criterion, black_box}; +use criterion::{black_box, criterion_group, criterion_main, Criterion}; use hyperloglog_rs::hybrid::unique_count_from_sorted_iterators; use hyperloglog_rs::prelude::{iter_var_len_random_values, splitmix64}; @@ -12,13 +12,21 @@ fn bench_unique_count_from_sorted_iterators(b: &mut Criterion) { let entries: Vec<(Vec, Vec)> = (0..200) .map(|_| { random_state = splitmix64(random_state); - let mut a = - iter_var_len_random_values::(0, maximal_possible_size, None, Some(random_state)) - .collect::>(); + let mut a = iter_var_len_random_values::( + 0, + maximal_possible_size, + None, + Some(random_state), + ) + .collect::>(); random_state = splitmix64(random_state); - let mut b = - iter_var_len_random_values::(0, maximal_possible_size, None, Some(random_state)) - .collect::>(); + let mut b = iter_var_len_random_values::( + 0, + maximal_possible_size, + None, + Some(random_state), + ) + .collect::>(); a.sort(); b.sort(); @@ -37,7 +45,6 @@ fn bench_unique_count_from_sorted_iterators(b: &mut Criterion) { group.finish(); } - criterion_group!(benches, bench_unique_count_from_sorted_iterators); -criterion_main!(benches); \ No newline at end of file +criterion_main!(benches); diff --git a/build.rs b/build.rs index 50d1a3f..f8fe45d 100644 --- a/build.rs +++ b/build.rs @@ -361,7 +361,7 @@ fn write_weights(precisions: &[usize]) { .unwrap(); } -#[cfg(feature = "plusplus")] +#[cfg(feature = "zero_count_correction")] fn write_linear_count_zeros(precisions: &[usize]) { let linear_count_zeros = precisions .iter() @@ -402,9 +402,12 @@ fn write_alphas(precisions: &[usize]) { .unwrap(); } -#[cfg(any( - all(feature = "beta", not(feature = "precomputed_beta")), - feature = "plusplus" +#[cfg(all( + not(feature = "std_ln"), + any( + all(feature = "beta", not(feature = "precomputed_beta")), + feature = "plusplus", + ) ))] fn write_ln_values(precisions: &[usize]) { // Since the ln values are needed up to the maximal number of registers, we @@ -529,9 +532,12 @@ fn main() { write_alphas(&precisions); write_number_of_registers(&precisions); - #[cfg(any( - all(feature = "beta", not(feature = "precomputed_beta")), - feature = "plusplus" + #[cfg(all( + not(feature = "std_ln"), + any( + all(feature = "beta", not(feature = "precomputed_beta")), + feature = "plusplus" + ) ))] write_ln_values(&precisions); diff --git a/evaluate_composite_hash/Cargo.toml b/evaluate_composite_hash/Cargo.toml index 362177b..aa2b5b9 100644 --- a/evaluate_composite_hash/Cargo.toml +++ b/evaluate_composite_hash/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] csv = "1.3.0" -hyperloglog-rs = { path = "../../hyperloglog-rs", default-features=false, features=["all_precisions", "plusplus"] } +hyperloglog-rs = { path = "../../hyperloglog-rs", default-features=false, features=["all_precisions", "plusplus", "std"] } indicatif = {version="0.17.8", features=["rayon"]} paste = "1.0.15" rayon = "1.10.0" diff --git a/evaluate_composite_hash/collision_rates.csv b/evaluate_composite_hash/collision_rates.csv index af2022a..3245a81 100644 --- a/evaluate_composite_hash/collision_rates.csv +++ b/evaluate_composite_hash/collision_rates.csv @@ -1,74 +1,74 @@ hll_error,mean_collision_rate,mean_number_of_collisions,number_of_elements,number_of_bits,exponent,number_of_bits_composite_hash -0.26,0.0690105,0.552084,8,4,4,8 -0.26,0.0001165,0.000466,4,4,4,16 -0.26,0.0003196,0.001598,5,5,4,16 -0.26,0.0008173333333333332,0.004904,6,6,4,16 -0.18384776310850234,0.000277,0.002216,8,4,5,16 -0.18384776310850234,0.0007198,0.007198,10,5,5,16 -0.18384776310850234,0.0017856666666666665,0.021428,12,6,5,16 -0.13,0.000613,0.009808,16,4,6,16 -0.13,0.001544,0.03088,20,5,6,16 -0.13,0.0037432499999999996,0.089838,24,6,6,16 -0.09192388155425117,0.0012619375,0.040382,32,4,7,16 -0.09192388155425117,0.00316625,0.12665,40,5,7,16 -0.09192388155425117,0.007616708333333333,0.365602,48,6,7,16 -0.065,0.0025518125,0.163316,64,4,8,16 -0.065,0.006396400000000002,0.511712,80,5,8,16 -0.065,0.015271520833333331,1.466066,96,6,8,16 -0.045961940777125586,0.005136375,0.657456,128,4,9,16 -0.045961940777125586,0.0127901875,2.04643,160,5,9,16 -0.045961940777125586,0.030271177083333333,5.812066,192,6,9,16 -0.0325,0.01028984375,2.6342,256,4,10,16 -0.0325,0.0253973625,8.127156,320,5,10,16 -0.0325,0.05916940625,22.721052,384,6,10,16 -0.022980970388562793,0.0204325234375,10.461452,512,4,11,16 -0.022980970388562793,0.04977158749999999,31.853816,640,5,11,16 -0.01625,0.0402007890625,41.165608,1024,4,12,16 +0.26,0.06883875,0.55071,8,4,4,8 +0.26,0.000125,0.0005,4,4,4,16 +0.26,0.00031800000000000003,0.00159,5,5,4,16 +0.26,0.0007816666666666666,0.00469,6,6,4,16 +0.18384776310850234,0.00026625,0.00213,8,4,5,16 +0.18384776310850234,0.000687,0.00687,10,5,5,16 +0.18384776310850234,0.0017641666666666665,0.02117,12,6,5,16 +0.13,0.000590625,0.00945,16,4,6,16 +0.13,0.001529,0.03058,20,5,6,16 +0.13,0.0037433333333333333,0.08984,24,6,6,16 +0.09192388155425117,0.001265625,0.0405,32,4,7,16 +0.09192388155425117,0.00318275,0.12731,40,5,7,16 +0.09192388155425117,0.00761125,0.36534,48,6,7,16 +0.065,0.0025265625,0.1617,64,4,8,16 +0.065,0.006370125000000001,0.50961,80,5,8,16 +0.065,0.01529145833333333,1.46798,96,6,8,16 +0.045961940777125586,0.00512890625,0.6565,128,4,9,16 +0.045961940777125586,0.0127988125,2.04781,160,5,9,16 +0.045961940777125586,0.03028401041666667,5.81453,192,6,9,16 +0.0325,0.0103077734375,2.63879,256,4,10,16 +0.0325,0.02539328125,8.12585,320,5,10,16 +0.0325,0.059164140625,22.71903,384,6,10,16 +0.022980970388562793,0.0204420703125,10.46634,512,4,11,16 +0.022980970388562793,0.049739875,31.83352,640,5,11,16 +0.01625,0.0402148046875,41.17996,1024,4,12,16 0.26,0.0,0.0,2,4,4,24 -0.26,6.666666666666666e-7,2e-6,3,5,4,24 -0.26,3.5e-6,0.000014,4,6,4,24 -0.18384776310850234,8.000000000000001e-7,4e-6,5,4,5,24 -0.18384776310850234,2.6666666666666664e-6,0.000016,6,5,5,24 -0.18384776310850234,4.5e-6,0.000036,8,6,5,24 -0.13,2.2e-6,0.000022,10,4,6,24 -0.13,4.153846153846154e-6,0.000054,13,5,6,24 -0.13,0.000011,0.000176,16,6,6,24 -0.09192388155425117,3.904761904761905e-6,0.000082,21,4,7,24 -0.09192388155425117,7.846153846153847e-6,0.000204,26,5,7,24 -0.09192388155425117,0.0000203125,0.00065,32,6,7,24 -0.065,6.428571428571428e-6,0.00027,42,4,8,24 -0.065,0.000016301886792452833,0.000864,53,5,8,24 -0.065,0.00003946875,0.002526,64,6,8,24 -0.045961940777125586,0.00001355294117647059,0.001152,85,4,9,24 -0.045961940777125586,0.00003230188679245283,0.003424,106,5,9,24 -0.045961940777125586,0.00007971875,0.010204,128,6,9,24 -0.0325,0.000025705882352941175,0.00437,170,4,10,24 -0.0325,0.00006630985915492956,0.014124,213,5,10,24 -0.0325,0.0001623203125,0.041554,256,6,10,24 -0.022980970388562793,0.00005334310850439882,0.01819,341,4,11,24 -0.022980970388562793,0.00013441314553990608,0.05726,426,5,11,24 -0.022980970388562793,0.00032531640625,0.166562,512,6,11,24 -0.01625,0.00010789442815249265,0.073584,682,4,12,24 -0.01625,0.00027095427901524034,0.231124,853,5,12,24 -0.01625,0.000651259765625,0.66689,1024,6,12,24 -0.011490485194281396,0.000216589010989011,0.295644,1365,4,13,24 -0.011490485194281396,0.0005412942555685816,0.923448,1706,5,13,24 -0.011490485194281396,0.0012999599609375,2.662318,2048,6,13,24 -0.008125,0.0004335589743589743,1.183616,2730,4,14,24 -0.008125,0.0010827254614708469,3.695342,3413,5,14,24 -0.008125,0.00259695361328125,10.637122,4096,6,14,24 -0.005745242597140698,0.0008668577183665996,4.73391,5461,4,15,24 -0.005745242597140698,0.0021645244652798126,14.775044,6826,5,15,24 -0.005745242597140698,0.00518360498046875,42.464092,8192,6,15,24 -0.0040625,0.001733303424281267,18.93114,10922,4,16,24 -0.0040625,0.004323509558338827,59.028876,13653,5,16,24 -0.0040625,0.01032388427734375,169.14652,16384,6,16,24 -0.002872621298570349,0.0034617740444037527,75.622454,21845,4,17,24 -0.002872621298570349,0.00861595927634952,235.267384,27306,5,17,24 -0.002872621298570349,0.020466392211914063,670.64274,32768,6,17,24 -0.00203125,0.006902834195468067,301.584826,43690,4,18,24 -0.00203125,0.017105012323073265,934.156038,54613,5,18,24 -0.00203125,0.04022003979492188,2635.860528,65536,6,18,24 +0.26,0.0,0.0,3,5,4,24 +0.26,7.5e-6,0.00003,4,6,4,24 +0.18384776310850234,2e-6,0.00001,5,4,5,24 +0.18384776310850234,3.3333333333333333e-6,0.00002,6,5,5,24 +0.18384776310850234,5e-6,0.00004,8,6,5,24 +0.13,4e-6,0.00004,10,4,6,24 +0.13,3.846153846153846e-6,0.00005,13,5,6,24 +0.13,0.000013125,0.00021,16,6,6,24 +0.09192388155425117,5.714285714285714e-6,0.00012,21,4,7,24 +0.09192388155425117,0.00001,0.00026,26,5,7,24 +0.09192388155425117,0.0000225,0.00072,32,6,7,24 +0.065,8.333333333333332e-6,0.00035,42,4,8,24 +0.065,0.000019622641509433966,0.00104,53,5,8,24 +0.065,0.00003984375,0.00255,64,6,8,24 +0.045961940777125586,0.000015294117647058822,0.0013,85,4,9,24 +0.045961940777125586,0.00003452830188679246,0.00366,106,5,9,24 +0.045961940777125586,0.000081796875,0.01047,128,6,9,24 +0.0325,0.000026941176470588236,0.00458,170,4,10,24 +0.0325,0.000067981220657277,0.01448,213,5,10,24 +0.0325,0.000164609375,0.04214,256,6,10,24 +0.022980970388562793,0.00005360703812316715,0.01828,341,4,11,24 +0.022980970388562793,0.00013568075117370893,0.0578,426,5,11,24 +0.022980970388562793,0.0003259375,0.16688,512,6,11,24 +0.01625,0.00010835777126099706,0.0739,682,4,12,24 +0.01625,0.00027343493552168814,0.23324,853,5,12,24 +0.01625,0.00065396484375,0.66966,1024,6,12,24 +0.011490485194281396,0.00021734798534798537,0.29668,1365,4,13,24 +0.011490485194281396,0.0005410199296600234,0.92298,1706,5,13,24 +0.011490485194281396,0.001300810546875,2.66406,2048,6,13,24 +0.008125,0.0004338608058608058,1.18444,2730,4,14,24 +0.008125,0.001081667154995605,3.69173,3413,5,14,24 +0.008125,0.00259642333984375,10.63495,4096,6,14,24 +0.005745242597140698,0.0008660483427943601,4.72949,5461,4,15,24 +0.005745242597140698,0.0021632874304131264,14.7666,6826,5,15,24 +0.005745242597140698,0.0051826513671875,42.45628,8192,6,15,24 +0.0040625,0.0017348599157663432,18.94814,10922,4,16,24 +0.0040625,0.0043224082619204565,59.01384,13653,5,16,24 +0.0040625,0.010324322509765624,169.1537,16384,6,16,24 +0.002872621298570349,0.0034614863813229573,75.61617,21845,4,17,24 +0.002872621298570349,0.008614283307697942,235.22162,27306,5,17,24 +0.002872621298570349,0.0204661962890625,670.63632,32768,6,17,24 +0.00203125,0.0069028514534218354,301.58558,43690,4,18,24 +0.00203125,0.017104894805266144,934.14962,54613,5,18,24 +0.00203125,0.04021701919555664,2635.66257,65536,6,18,24 0.26,0.0,0.0,2,4,4,32 0.26,0.0,0.0,2,5,4,32 0.26,0.0,0.0,3,6,4,32 @@ -83,37 +83,37 @@ hll_error,mean_collision_rate,mean_number_of_collisions,number_of_elements,numbe 0.09192388155425117,0.0,0.0,24,6,7,32 0.065,0.0,0.0,32,4,8,32 0.065,0.0,0.0,40,5,8,32 -0.065,8.333333333333333e-8,4e-6,48,6,8,32 +0.065,2.0833333333333333e-7,0.00001,48,6,8,32 0.045961940777125586,0.0,0.0,64,4,9,32 -0.045961940777125586,1.0000000000000001e-7,8e-6,80,5,9,32 -0.045961940777125586,3.333333333333333e-7,0.000032,96,6,9,32 -0.0325,7.8125e-8,0.00001,128,4,10,32 -0.0325,1.875e-7,0.00003,160,5,10,32 -0.0325,4.583333333333333e-7,0.000088,192,6,10,32 -0.022980970388562793,1.71875e-7,0.000044,256,4,11,32 -0.022980970388562793,3.9375000000000004e-7,0.000126,320,5,11,32 -0.022980970388562793,9.114583333333332e-7,0.00035,384,6,11,32 -0.01625,3.1640625e-7,0.000162,512,4,12,32 -0.01625,7.28125e-7,0.000466,640,5,12,32 -0.01625,1.9374999999999997e-6,0.001488,768,6,12,32 -0.011490485194281396,6.46484375e-7,0.000662,1024,4,13,32 -0.011490485194281396,1.559375e-6,0.001996,1280,5,13,32 -0.011490485194281396,3.768229166666666e-6,0.005788,1536,6,13,32 -0.008125,1.26953125e-6,0.0026,2048,4,14,32 -0.008125,3.1898437500000005e-6,0.008166,2560,5,14,32 -0.008125,7.586588541666666e-6,0.023306,3072,6,14,32 -0.005745242597140698,2.4990234375e-6,0.010236,4096,4,15,32 -0.005745242597140698,6.362109375000001e-6,0.032574,5120,5,15,32 -0.005745242597140698,0.000015208333333333331,0.09344,6144,6,15,32 -0.0040625,5.05419921875e-6,0.041404,8192,4,16,32 -0.0040625,0.0000127779296875,0.130846,10240,5,16,32 -0.0040625,0.000030635091145833333,0.376444,12288,6,16,32 -0.002872621298570349,0.0000101385498046875,0.16611,16384,4,17,32 -0.002872621298570349,0.00002549072265625,0.52205,20480,5,17,32 -0.002872621298570349,0.00006123250325520833,1.50485,24576,6,17,32 -0.00203125,0.00002038848876953125,0.66809,32768,4,18,32 -0.00203125,0.000050943505859375,2.086646,40960,5,18,32 -0.00203125,0.0001222291259765625,6.007806,49152,6,18,32 +0.045961940777125586,2.5e-7,0.00002,80,5,9,32 +0.045961940777125586,5.208333333333333e-7,0.00005,96,6,9,32 +0.0325,0.0,0.0,128,4,10,32 +0.0325,1.8750000000000003e-7,0.00003,160,5,10,32 +0.0325,4.687499999999999e-7,0.00009,192,6,10,32 +0.022980970388562793,7.8125e-8,0.00002,256,4,11,32 +0.022980970388562793,3.4375000000000004e-7,0.00011,320,5,11,32 +0.022980970388562793,7.8125e-7,0.0003,384,6,11,32 +0.01625,3.515625e-7,0.00018,512,4,12,32 +0.01625,8.437500000000001e-7,0.00054,640,5,12,32 +0.01625,1.8880208333333331e-6,0.00145,768,6,12,32 +0.011490485194281396,6.4453125e-7,0.00066,1024,4,13,32 +0.011490485194281396,1.5546875e-6,0.00199,1280,5,13,32 +0.011490485194281396,3.821614583333333e-6,0.00587,1536,6,13,32 +0.008125,1.279296875e-6,0.00262,2048,4,14,32 +0.008125,3.2890625e-6,0.00842,2560,5,14,32 +0.008125,7.835286458333332e-6,0.02407,3072,6,14,32 +0.005745242597140698,2.5e-6,0.01024,4096,4,15,32 +0.005745242597140698,6.455078125e-6,0.03305,5120,5,15,32 +0.005745242597140698,0.000015208333333333333,0.09344,6144,6,15,32 +0.0040625,5.14892578125e-6,0.04218,8192,4,16,32 +0.0040625,0.000012919921875,0.1323,10240,5,16,32 +0.0040625,0.0000306298828125,0.37638,12288,6,16,32 +0.002872621298570349,0.0000102471923828125,0.16789,16384,4,17,32 +0.002872621298570349,0.000025324218749999997,0.51864,20480,5,17,32 +0.002872621298570349,0.00006093098958333333,1.49744,24576,6,17,32 +0.00203125,0.0000203826904296875,0.6679,32768,4,18,32 +0.00203125,0.000050946044921875,2.08675,40960,5,18,32 +0.00203125,0.00012219258626302082,6.00601,49152,6,18,32 0.26,0.0,0.0,1,4,4,40 0.26,0.0,0.0,2,5,4,40 0.26,0.0,0.0,2,6,4,40 @@ -140,25 +140,25 @@ hll_error,mean_collision_rate,mean_number_of_collisions,number_of_elements,numbe 0.022980970388562793,0.0,0.0,307,6,11,40 0.01625,0.0,0.0,409,4,12,40 0.01625,0.0,0.0,512,5,12,40 -0.01625,3.2573289902280134e-9,2e-6,614,6,12,40 -0.011490485194281396,2.442002442002442e-9,2e-6,819,4,13,40 -0.011490485194281396,5.859375e-9,6e-6,1024,5,13,40 -0.011490485194281396,1.3029315960912054e-8,0.000016,1228,6,13,40 -0.008125,6.105006105006105e-9,0.00001,1638,4,14,40 -0.008125,6.8359375e-9,0.000014,2048,5,14,40 -0.008125,2.1978021978021977e-8,0.000054,2457,6,14,40 -0.005745242597140698,4.884004884004884e-9,0.000016,3276,4,15,40 -0.005745242597140698,1.66015625e-8,0.000068,4096,5,15,40 -0.005745242597140698,5.2085452695829094e-8,0.000256,4915,6,15,40 -0.0040625,1.2513352662902487e-8,0.000082,6553,4,16,40 -0.0040625,3.369140625e-8,0.000276,8192,5,16,40 -0.0040625,9.318413021363173e-8,0.000916,9830,6,16,40 -0.002872621298570349,2.7313649195086596e-8,0.000358,13107,4,17,40 -0.002872621298570349,7.6171875e-8,0.001248,16384,5,17,40 -0.002872621298570349,1.9003051881993897e-7,0.003736,19660,6,17,40 -0.00203125,5.943389028763256e-8,0.001558,26214,4,18,40 -0.00203125,1.571044921875e-7,0.005148,32768,5,18,40 -0.00203125,3.8249281554385696e-7,0.01504,39321,6,18,40 +0.01625,1.6286644951140067e-8,0.00001,614,6,12,40 +0.011490485194281396,1.221001221001221e-8,0.00001,819,4,13,40 +0.011490485194281396,9.765625e-9,0.00001,1024,5,13,40 +0.011490485194281396,8.143322475570034e-9,0.00001,1228,6,13,40 +0.008125,1.8315018315018314e-8,0.00003,1638,4,14,40 +0.008125,1.46484375e-8,0.00003,2048,5,14,40 +0.008125,2.8490028490028486e-8,0.00007,2457,6,14,40 +0.005745242597140698,9.157509157509157e-9,0.00003,3276,4,15,40 +0.005745242597140698,1.220703125e-8,0.00005,4096,5,15,40 +0.005745242597140698,5.4933875890132244e-8,0.00027,4915,6,15,40 +0.0040625,9.156111704562795e-9,0.00006,6553,4,16,40 +0.0040625,3.173828125e-8,0.00026,8192,5,16,40 +0.0040625,9.766022380467954e-8,0.00096,9830,6,16,40 +0.002872621298570349,2.670328831921874e-8,0.00035,13107,4,17,40 +0.002872621298570349,6.7138671875e-8,0.0011,16384,5,17,40 +0.002872621298570349,1.861648016276704e-7,0.00366,19660,6,17,40 +0.00203125,4.9210345616845956e-8,0.00129,26214,4,18,40 +0.00203125,1.4434814453125e-7,0.00473,32768,5,18,40 +0.00203125,3.7359171943745074e-7,0.01469,39321,6,18,40 0.26,0.0,0.0,1,4,4,48 0.26,0.0,0.0,1,5,4,48 0.26,0.0,0.0,2,6,4,48 @@ -194,16 +194,16 @@ hll_error,mean_collision_rate,mean_number_of_collisions,number_of_elements,numbe 0.008125,0.0,0.0,2048,6,14,48 0.005745242597140698,0.0,0.0,2730,4,15,48 0.005745242597140698,0.0,0.0,3413,5,15,48 -0.005745242597140698,4.8828125e-10,2e-6,4096,6,15,48 +0.005745242597140698,0.0,0.0,4096,6,15,48 0.0040625,0.0,0.0,5461,4,16,48 -0.0040625,2.9299736302373277e-10,2e-6,6826,5,16,48 -0.0040625,2.44140625e-10,2e-6,8192,6,16,48 +0.0040625,0.0,0.0,6826,5,16,48 +0.0040625,0.0,0.0,8192,6,16,48 0.002872621298570349,0.0,0.0,10922,4,17,48 -0.002872621298570349,2.929759027320003e-10,4e-6,13653,5,17,48 -0.002872621298570349,7.32421875e-10,0.000012,16384,6,17,48 -0.00203125,1.8310826276035705e-10,4e-6,21845,4,18,48 -0.00203125,5.859518054640006e-10,0.000016,27306,5,18,48 -0.00203125,7.9345703125e-10,0.000026,32768,6,18,48 +0.002872621298570349,0.0,0.0,13653,5,17,48 +0.002872621298570349,6.103515625e-10,0.00001,16384,6,17,48 +0.00203125,0.0,0.0,21845,4,18,48 +0.00203125,3.6621987841500034e-10,0.00001,27306,5,18,48 +0.00203125,6.103515625e-10,0.00002,32768,6,18,48 0.26,0.0,0.0,1,4,4,56 0.26,0.0,0.0,1,5,4,56 0.26,0.0,0.0,1,6,4,56 diff --git a/evaluate_composite_hash/src/main.rs b/evaluate_composite_hash/src/main.rs index 03f4b81..c961f1f 100644 --- a/evaluate_composite_hash/src/main.rs +++ b/evaluate_composite_hash/src/main.rs @@ -44,7 +44,7 @@ where let number_of_elements: u64 = (1_u64 << P::EXPONENT) * B::NUMBER_OF_BITS_U64 / H::NUMBER_OF_BITS_U64; - let number_of_iterations = 500_000; + let number_of_iterations = 100_000; let (total_collision_rate, total_number_of_collisions) = (0..number_of_iterations) .into_par_iter() @@ -67,11 +67,25 @@ where let (register, index) = PlusPlus::>::Packed, WyHash>::split_hash(hash); - let encoded = H::encode(register, hash); + let encoded = H::encode(register, index, hash); let (decoded_register, decoded_index) = H::decode(encoded); - assert_eq!(register, decoded_register, "Failure at precision {}, bits {} and hash {}", P::EXPONENT, B::NUMBER_OF_BITS, H::NUMBER_OF_BITS); - assert_eq!(index, decoded_index, "Failure at precision {}, bits {} and hash {}", P::EXPONENT, B::NUMBER_OF_BITS, H::NUMBER_OF_BITS); + assert_eq!( + register, + decoded_register, + "Failure at precision {}, bits {} and hash {}", + P::EXPONENT, + B::NUMBER_OF_BITS, + H::NUMBER_OF_BITS + ); + assert_eq!( + index, + decoded_index, + "Failure at precision {}, bits {} and hash {}", + P::EXPONENT, + B::NUMBER_OF_BITS, + H::NUMBER_OF_BITS + ); // We insert the composite hash in the hashset. hashset_composite.insert(encoded); diff --git a/hyperloglog-derive/src/lib.rs b/hyperloglog-derive/src/lib.rs index c16ccaf..53bdb61 100644 --- a/hyperloglog-derive/src/lib.rs +++ b/hyperloglog-derive/src/lib.rs @@ -63,9 +63,9 @@ impl From for WordType { Type::Path(type_path) => { let segment = type_path.path.segments.first().unwrap(); let ident = &segment.ident; - if ident.to_string() == "u32" { + if *ident == "u32" { WordType::U32 - } else if ident.to_string() == "u64" { + } else if *ident == "u64" { WordType::U64 } else { panic!("The word type must be either u32 or u64"); @@ -125,14 +125,21 @@ pub fn derive_variable_word(input: TokenStream) -> TokenStream { const NUMBER_OF_BITS: u8 = #number_of_bits; const MASK: u64 = #mask; type Word = Self; + + #[inline] + #[allow(unsafe_code)] + unsafe fn unchecked_from_u64(value: u64) -> Self::Word { + debug_assert!(value <= ::MASK, "The value is too large for the number."); + Self(value as #field_type) + } } - impl crate::prelude::AsBytes for #name { + impl crate::prelude::ToBytes for #name { type Bytes = [u8; #number_of_bits_usize / 8]; #[inline] #[must_use] - fn as_bytes(self) -> Self::Bytes { + fn to_bytes(self) -> Self::Bytes { self.into() } } @@ -187,7 +194,7 @@ pub fn derive_variable_word(input: TokenStream) -> TokenStream { #[inline] #[must_use] fn sub(self, rhs: Self) -> Self::Output { - Self((self.0.wrapping_sub(rhs.0)) & (::MASK as #field_type)) + Self(self.0 - rhs.0) } } @@ -407,12 +414,6 @@ pub fn derive_variable_word(input: TokenStream) -> TokenStream { Self::try_from(value) } - #[inline] - #[must_use] - unsafe fn unchecked_from_u64(value: u64) -> Self { - Self(value as #field_type) - } - #[inline] #[must_use] fn to_usize(self) -> usize { @@ -450,14 +451,6 @@ pub fn derive_variable_word(input: TokenStream) -> TokenStream { } } - impl Clone for #name { - #[inline] - #[must_use] - fn clone(&self) -> Self { - Self(self.0) - } - } - impl Copy for #name {} impl core::fmt::Debug for #name { @@ -480,6 +473,14 @@ pub fn derive_variable_word(input: TokenStream) -> TokenStream { } } + impl From for #name { + #[inline] + #[must_use] + fn from(value: bool) -> Self { + Self(#field_type::from(value)) + } + } + impl From for #name { #[inline] #[must_use] @@ -691,17 +692,13 @@ pub fn test_all_precisions_and_bits(_attr: TokenStream, item: TokenStream) -> To let precision_exponent = i + 4; (bits).iter().flat_map(move |bit| { let test_fn_name = Ident::new( - &format!( - "{fn_name}_{precision}_{bit}", - ) - .to_lowercase(), + &format!("{fn_name}_{precision}_{bit}",).to_lowercase(), fn_name.span(), ); // For each precision, we need to check whether the feature precision_{exponent} is enabled let precision_flag = format!("precision_{precision_exponent}"); - let feature_constraints = - vec![quote! { #[cfg(feature = #precision_flag)] }]; + let feature_constraints = vec![quote! { #[cfg(feature = #precision_flag)] }]; quote! { #[test] @@ -724,7 +721,6 @@ pub fn test_all_precisions_and_bits(_attr: TokenStream, item: TokenStream) -> To TokenStream::from(expanded) } - #[proc_macro_attribute] pub fn test_estimator(_attr: TokenStream, item: TokenStream) -> TokenStream { // Parse the input token stream (the function we're deriving for) @@ -743,6 +739,7 @@ pub fn test_estimator(_attr: TokenStream, item: TokenStream) -> TokenStream { let hashers = vec![ Ident::new("XxHash", fn_name.span()), Ident::new("WyHash", fn_name.span()), + Ident::new("AHasher", fn_name.span()), ]; // Generate the test functions @@ -783,7 +780,6 @@ pub fn test_estimator(_attr: TokenStream, item: TokenStream) -> TokenStream { if fn_name.to_string().contains("beta") { feature_constraints.push(quote! { #[cfg(feature = "beta")] }); } - if packed { quote! { #[test] diff --git a/src/basicloglog.rs b/src/basicloglog.rs index 3137f02..e9ce50e 100644 --- a/src/basicloglog.rs +++ b/src/basicloglog.rs @@ -1,7 +1,7 @@ //! Implementation of the basic struct for [`HyperLogLog`] counter. use crate::prelude::*; -use crate::utils::{HasherType, Number, One, PositiveInteger, VariableWords, Zero}; +use crate::utils::{HasherType, One, PositiveInteger, VariableWords, Zero}; use core::fmt::Debug; use core::fmt::Formatter; use core::hash::Hash; @@ -90,7 +90,7 @@ impl, Hasher: HasherType> BasicLogLog< let (old_register_value, larger_register_value) = self.registers.set_greater(index, new_register_value); - self.number_of_zero_registers -= P::NumberOfRegisters::from_bool(old_register_value == 0); + self.number_of_zero_registers -= P::NumberOfRegisters::from(old_register_value == 0); self.harmonic_sum += f64::integer_exp2_minus(larger_register_value) - f64::integer_exp2_minus(old_register_value); @@ -108,10 +108,13 @@ impl, Hasher: HasherType> Default } } -impl, Hasher: HasherType> HyperLogLog +impl, Hasher: HasherType> HyperLogLog for BasicLogLog { type Registers = R; + type Precision = P; + type Bits = B; + type Hasher = Hasher; /// Returns the number of registers with zero values. fn get_number_of_zero_registers(&self) -> P::NumberOfRegisters { @@ -137,7 +140,7 @@ impl, Hasher: HasherType> HyperLogLog< let mut harmonic_sum = f64::ZERO; for register in registers.iter_registers() { - number_of_zero_registers += P::NumberOfRegisters::from_bool(register == 0); + number_of_zero_registers += P::NumberOfRegisters::from(register == 0); harmonic_sum += f64::integer_exp2_minus(register); } @@ -160,13 +163,8 @@ impl, A: Hash, Hasher: HasherType> Fro } } -impl< - P: Precision, - B: Bits, - R: Registers, - Hasher: HasherType, - Rhs: HyperLogLog, - > BitOrAssign for BasicLogLog +impl, Hasher: HasherType, Rhs: HyperLogLog> + BitOrAssign for BasicLogLog { fn bitor_assign(&mut self, rhs: Rhs) { let mut rhs_registers = rhs.registers().iter_registers(); @@ -177,7 +175,7 @@ impl< if rhs_register > old_register { self.harmonic_sum += f64::integer_exp2_minus(rhs_register) - f64::integer_exp2_minus(old_register); - self.number_of_zero_registers -= P::NumberOfRegisters::from_bool(old_register == 0); + self.number_of_zero_registers -= P::NumberOfRegisters::from(old_register == 0); rhs_register } else { old_register @@ -186,13 +184,8 @@ impl< } } -impl< - P: Precision, - B: Bits, - R: Registers, - Rhs: HyperLogLog, - Hasher: HasherType, - > BitOr for BasicLogLog +impl, Rhs: HyperLogLog, Hasher: HasherType> BitOr + for BasicLogLog { type Output = Self; @@ -210,19 +203,21 @@ impl< CH: CompositeHash, > Hybridazable for BasicLogLog { - type IterSortedHashes<'words> = >::Iter<'words> where Self: 'words, CH: 'words; - type B = B; - type P = P; + type IterSortedHashes<'words> = >::Words<'words> where Self: 'words, CH: 'words; + + fn new_hybrid() -> Self { + let mut default: Self = BasicLogLog::default(); + default.clear_words(); + default + } fn is_hybrid(&self) -> bool { // We employ the harmonic sum as a flag to represent whether the counter is in hybrid mode. self.harmonic_sum < f64::ZERO } - fn new_hybrid() -> Self { - let mut default: Self = BasicLogLog::default(); - default.clear_words(); - default + fn capacity(&self) -> usize { + >::number_of_words(&self.registers) } fn dehybridize(&mut self) { @@ -245,10 +240,6 @@ impl< self.get_number_of_zero_registers().to_usize() } - fn capacity(&self) -> usize { - self.registers.number_of_words() - } - fn clear_words(&mut self) { self.registers.clear_registers(); self.number_of_zero_registers = P::NumberOfRegisters::ZERO; @@ -268,10 +259,10 @@ impl< ); let hash = Self::compute_hash(element); - let (register, _index) = Self::split_hash(hash); + let (register, index) = Self::split_hash(hash); self.registers - .find_sorted_with_len(CH::encode(register, hash), self.number_of_hashes()) + .find_sorted_with_len(CH::encode(register, index, hash), self.number_of_hashes()) } fn hybrid_insert(&mut self, element: &T) -> bool { @@ -317,8 +308,8 @@ impl< self.insert(element) } else { let hash = Self::compute_hash(element); - let (register, _index) = Self::split_hash(hash); - let composite_hash = CH::encode(register, hash); + let (register, index) = Self::split_hash(hash); + let composite_hash = CH::encode(register, index, hash); debug_assert!(composite_hash != CH::Word::ZERO, "Composite hash is zero."); @@ -344,37 +335,6 @@ impl< } } -impl> SetProperties - for BasicLogLog -{ - fn is_empty(&self) -> bool { - self.number_of_zero_registers == P::NUMBER_OF_REGISTERS - } - - fn is_full(&self) -> bool { - // The harmonic sum is defined as Sum(2^(-register_value)) for all registers. - // When all registers are maximally filled, i.e. equal to the maximal multiplicity value, - // the harmonic sum is equal to (2^(-max_multiplicity)) * number_of_registers. - // Since number_of_registers is a power of 2, specifically 2^exponent, the harmonic sum - // is equal to 2^(exponent - max_multiplicity). - self.harmonic_sum - <= f64::integer_exp2_minus_signed( - i8::try_from(1 << B::NUMBER_OF_BITS).unwrap() - - i8::try_from(P::EXPONENT).unwrap() - - 1, - ) - } -} - -impl, T: Hash> ApproximatedSet - for BasicLogLog -{ - fn may_contain(&self, element: &T) -> bool { - let (register, index) = Self::hash_and_index::(element); - self.get_register(index) >= register - } -} - impl> MutableSet for BasicLogLog { diff --git a/src/bits.rs b/src/bits.rs index f364298..e4edaed 100644 --- a/src/bits.rs +++ b/src/bits.rs @@ -31,6 +31,14 @@ macro_rules! impl_bits { const NUMBER_OF_BITS: u8 = $n; type Word = u8; const MASK: u64 = (1 << $n) - 1; + + #[inline] + #[allow(unsafe_code)] + #[expect(clippy::cast_possible_truncation, reason = "The value is guaranteed to be less than 256")] + unsafe fn unchecked_from_u64(value: u64) -> Self::Word { + debug_assert!(value <= ::MASK, "The value is too large for the number."); + value as u8 + } } impl Bits for [] {} diff --git a/src/estimator.rs b/src/estimator.rs index 8480b20..71033ad 100644 --- a/src/estimator.rs +++ b/src/estimator.rs @@ -13,13 +13,13 @@ pub trait SetProperties { } /// Trait for an approximated set. -pub trait ApproximatedSet: SetProperties { +pub trait ApproximatedSet { /// Returns whether the set contains the element. fn may_contain(&self, element: &T) -> bool; } /// Trait for a mutable set. -pub trait MutableSet: SetProperties { +pub trait MutableSet { /// Empties the set. fn clear(&mut self); } @@ -70,7 +70,11 @@ pub trait Estimator: Sized + Send + Sync { fn estimate_intersection_cardinality(&self, other: &Self) -> F { let self_cardinality = self.estimate_cardinality(); let other_cardinality = other.estimate_cardinality(); - let union_cardinality = self.estimate_union_cardinality_with_cardinalities(other, self_cardinality, other_cardinality); + let union_cardinality = self.estimate_union_cardinality_with_cardinalities( + other, + self_cardinality, + other_cardinality, + ); // We apply correction to the union cardinality to get the intersection cardinality. if self_cardinality + other_cardinality < union_cardinality { @@ -85,7 +89,11 @@ pub trait Estimator: Sized + Send + Sync { fn estimate_jaccard_index(&self, other: &Self) -> F { let self_cardinality = self.estimate_cardinality(); let other_cardinality = other.estimate_cardinality(); - let union_cardinality = self.estimate_union_cardinality_with_cardinalities(other, self_cardinality, other_cardinality); + let union_cardinality = self.estimate_union_cardinality_with_cardinalities( + other, + self_cardinality, + other_cardinality, + ); // We apply correction to the union cardinality to get the intersection cardinality. if self_cardinality + other_cardinality < union_cardinality || union_cardinality.is_zero() { diff --git a/src/hybrid.rs b/src/hybrid.rs index c6f23d5..8ff0c81 100644 --- a/src/hybrid.rs +++ b/src/hybrid.rs @@ -5,7 +5,7 @@ use core::cmp::Ordering; use core::hash::Hash; use core::marker::PhantomData; -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] /// A struct representing the hybrid for approximate set cardinality estimation, @@ -20,7 +20,7 @@ pub struct Hybrid { impl, CH> Default for Hybrid where H: Default, - CH: CompositeHash, + CH: CompositeHash, { #[inline] fn default() -> Self { @@ -31,83 +31,14 @@ where } } -impl, CH> Hybridazable for Hybrid -where - H: Hybridazable, - CH: CompositeHash, -{ - type IterSortedHashes<'words> = H::IterSortedHashes<'words> where Self: 'words; - type B = H::B; - type P = H::P; - - #[inline] - fn dehybridize(&mut self) { - self.inner.dehybridize(); - } - - #[inline] - fn new_hybrid() -> Self { - Self::default() - } - - #[inline] - fn is_hybrid(&self) -> bool { - self.inner.is_hybrid() - } - - #[inline] - fn iter_sorted_hashes(&self) -> Self::IterSortedHashes<'_> { - self.inner.iter_sorted_hashes() - } - - #[inline] - fn number_of_hashes(&self) -> usize { - self.inner.number_of_hashes() - } - - #[inline] - fn capacity(&self) -> usize { - self.inner.capacity() - } - - #[inline] - fn clear_words(&mut self) { - self.inner.clear_words(); - } - - #[inline] - fn contains(&self, element: &T) -> bool { - self.inner.contains(element) - } - - #[inline] - fn hybrid_insert(&mut self, value: &T) -> bool { - self.inner.hybrid_insert(value) - } -} - -impl PartialEq for Hybrid { - #[inline] - fn eq(&self, other: &Self) -> bool { - self.inner == other.inner - } -} - -impl, CH> PartialEq for Hybrid { - #[inline] - fn eq(&self, other: &H) -> bool { - &self.inner == other - } -} - -impl Eq for Hybrid {} - -impl, CH: CompositeHash> SetProperties - for Hybrid +impl< + H: SetProperties + HyperLogLog + Hybridazable, + CH: CompositeHash, + > SetProperties for Hybrid { #[inline] fn is_empty(&self) -> bool { - if self.is_hybrid() { + if self.inner.is_hybrid() { self.inner.number_of_hashes() == 0 } else { self.inner.is_empty() @@ -116,7 +47,7 @@ impl, CH: CompositeHash> SetProp #[inline] fn is_full(&self) -> bool { - if self.is_hybrid() { + if self.inner.is_hybrid() { self.inner.number_of_hashes() == self.inner.capacity() } else { self.inner.is_full() @@ -124,14 +55,17 @@ impl, CH: CompositeHash> SetProp } } -impl + Hybridazable, CH: CompositeHash> - ApproximatedSet for Hybrid +impl< + T: Hash, + H: ApproximatedSet + Hybridazable, + CH: CompositeHash, + > ApproximatedSet for Hybrid where CH:, { #[inline] fn may_contain(&self, element: &T) -> bool { - if self.is_hybrid() { + if self.inner.is_hybrid() { Hybridazable::contains(&self.inner, element) } else { self.inner.may_contain(element) @@ -139,7 +73,9 @@ where } } -impl, CH: CompositeHash> MutableSet for Hybrid { +impl, CH: CompositeHash> MutableSet + for Hybrid +{ #[inline] fn clear(&mut self) { self.inner.clear_words(); @@ -149,12 +85,12 @@ impl, CH: CompositeHash> MutableSet impl< T: Hash, H: ExtendableApproximatedSet + Hybridazable, - CH: CompositeHash, + CH: CompositeHash, > ExtendableApproximatedSet for Hybrid { #[inline] fn insert(&mut self, element: &T) -> bool { - if self.is_hybrid() { + if self.inner.is_hybrid() { Hybridazable::hybrid_insert(&mut self.inner, element) } else { self.inner.insert(element) @@ -162,7 +98,24 @@ impl< } } +#[allow(unsafe_code)] #[inline] +#[expect(clippy::cast_possible_truncation, reason = "The value is guaranteed to be less than 2**32")] +/// Method to convert a usize to a u32. +/// +/// # Arguments +/// * `value` - The value to be converted. +/// +/// # Safety +/// This method needs to be used with caution, as it will truncate values +/// that are greater than 2**32. +const unsafe fn usize_to_u32(value: usize) -> u32 { + debug_assert!(value < (2_usize << 32), "The value should be less than 2**32"); + value as u32 +} + +#[inline] +#[allow(unsafe_code)] /// Returns the number of unique values from two sorted iterators. /// /// # Implementative details @@ -175,13 +128,17 @@ impl< /// of the two sets is at most the sum of the number of unique values in each set, /// so at most 2**16 unique values. We can thus use a u32 to represent the number /// of unique values. -pub fn unique_count_from_sorted_iterators, J: ExactSizeIterator>( +pub fn unique_count_from_sorted_iterators< + T: Ord, + I: ExactSizeIterator, + J: ExactSizeIterator, +>( mut left: I, mut right: J, ) -> u32 { let mut intersection = u32::ZERO; - let left_length = left.len() as u32; - let right_length = right.len() as u32; + let left_length = unsafe { usize_to_u32(left.len()) }; + let right_length = unsafe { usize_to_u32(right.len()) }; let mut maybe_left_value = left.next(); let mut maybe_right_value = right.next(); while let (Some(left_value), Some(right_value)) = @@ -202,17 +159,80 @@ pub fn unique_count_from_sorted_iterators left_length + right_length - intersection } +#[inline] +/// Returns the union estimation from a sorted iterator and a counter. +/// +/// # Implementative details +/// The provided iterator is expected to be sorted in ascending order, +/// in such a way that hash values that point to the same index are contiguos, +/// and ordered by value of the register as well. +pub fn union_estimation_from_sorted_iterator_and_counter< + I: ExactSizeIterator::NumberOfRegisters)> + + DoubleEndedIterator, + H: HyperLogLog + Correction, +>( + iterator: I, + counter: &H, + left_cardinality: f64, + right_cardinality: f64, +) -> f64 { + let mut number_of_zeros = counter.get_number_of_zero_registers(); + let mut harmonic_sum = counter.harmonic_sum(); + // We set the previous index to the NUMBER OF REGISTERS, which is a value higher + // than the maximal possible index, so that the first value is always considered + // as a new value. + let mut previous_index = ::NUMBER_OF_REGISTERS; + + for (left_register_value, index) in iterator.rev() { + debug_assert!( + index <= previous_index, + "The index must be less than or equal to the previous index." + ); + + // If the index is the same as the previous index, we skip the value + // as the register value is necessarily less or equal to the previous one. + if index == previous_index { + continue; + } + + // We update the previous index. + previous_index = index; + // Otherwise, we update the number of zeros and the harmonic sum. + let right_register_value = counter.get_register(index); + + if left_register_value <= right_register_value { + continue; + } + + // If the right register value is a zero, we are surely now removing + // it because the left register value cannot be a zero. + number_of_zeros -= + ::NumberOfRegisters::from(right_register_value == 0); + harmonic_sum += f64::integer_exp2_minus(left_register_value) + - f64::integer_exp2_minus(right_register_value); + } + + correct_union_estimate( + left_cardinality, + right_cardinality, + H::correction(harmonic_sum, number_of_zeros), + ) +} + /// Trait for a struct that can be used in the hybrid approach. -pub trait Hybridazable>: Default { +pub trait Hybridazable>: HyperLogLog { /// The type of the iterator over the sorted hashes. - type IterSortedHashes<'words>: ExactSizeIterator + type IterSortedHashes<'words>: ExactSizeIterator + DoubleEndedIterator where CH: 'words, Self: 'words; - /// The precision that needs to be reserved for the index in the composite hash. - type P: Precision; - /// The number of bits that need to be reserved for the index in the composite hash. - type B: Bits; + + /// Returns whether the struct is currently behaving as + /// a hybrid counter. + fn is_hybrid(&self) -> bool; + + /// Returns the capacity of the counter. + fn capacity(&self) -> usize; /// De-hybridize the struct, i.e., convert it to a register-based counter. fn dehybridize(&mut self); @@ -220,16 +240,9 @@ pub trait Hybridazable>: Default { /// Returns a new hybrid instance. fn new_hybrid() -> Self; - /// Returns whether the struct is currently behaving as - /// a hybrid counter. - fn is_hybrid(&self) -> bool; - - /// Returns the number of hashes currently inserted. + /// Returns the number of hashes. fn number_of_hashes(&self) -> usize; - /// Returns the capacity of the counter. - fn capacity(&self) -> usize; - /// Clears the counter. fn clear_words(&mut self); @@ -251,8 +264,99 @@ impl Named for Hybrid { } } -impl + Hybridazable + Default, CH: CompositeHash> - Estimator for Hybrid +impl + HyperLogLog, CH: CompositeHash> Hybrid +{ + #[inline] + /// Returns whether the counter is in hybrid mode. + pub fn is_hybrid(&self) -> bool { + self.inner.is_hybrid() + } + + #[inline] + /// Returns the maximum number of hashes that can be stored in the counter. + pub fn capacity(&self) -> usize { + self.inner.capacity() + } +} + +#[cfg(test)] +mod test_hybrid_propertis { + use super::*; + use hyperloglog_derive::test_estimator; + use twox_hash::XxHash; + use wyhash::WyHash; + use ahash::AHasher; + + #[cfg(feature = "plusplus")] + fn test_plusplus_hybrid_properties_for_word< + P: Precision, + B: Bits, + R: Registers + VariableWords, + H: HasherType, + W: CompositeHash, + >() { + let mut hybrid: Hybrid, W> = Default::default(); + assert!(hybrid.is_hybrid()); + assert!(hybrid.is_empty()); + assert_eq!(hybrid.inner.number_of_hashes(), 0); + assert_eq!( + hybrid.capacity(), + >::number_of_words(hybrid.inner.registers()) + ); + let mut normalized_error = 0.0; + let mut count = 0; + + while !hybrid.is_full() { + count += 1; + hybrid.insert(&count); + assert!(hybrid.is_hybrid()); + + let estimated_cardinality = hybrid.estimate_cardinality(); + let number_of_hashes = hybrid.inner.number_of_hashes(); + assert_eq!(estimated_cardinality as usize, number_of_hashes); + assert!(estimated_cardinality <= count as f64); + + let error = (estimated_cardinality - count as f64).abs(); + normalized_error += error / count as f64; + } + + normalized_error /= hybrid.capacity() as f64; + + assert!(normalized_error <= P::error_rate() / 10.0); + assert_eq!(hybrid.inner.number_of_hashes(), hybrid.capacity()); + assert!(hybrid.is_full()); + assert!(!hybrid.is_empty()); + assert!(hybrid.is_hybrid()); + + hybrid.insert(&0_128); + + assert!(!hybrid.is_hybrid()); + } + + #[test_estimator] + fn test_plusplus_hybrid_properties< + P: Precision, + B: Bits, + R: Registers + + VariableWords + + VariableWords + + VariableWords + + VariableWords + + VariableWords, + H: HasherType, + >() { + test_plusplus_hybrid_properties_for_word::(); + test_plusplus_hybrid_properties_for_word::(); + test_plusplus_hybrid_properties_for_word::(); + test_plusplus_hybrid_properties_for_word::(); + test_plusplus_hybrid_properties_for_word::(); + } +} + +impl< + H: Clone + Correction + Estimator + Hybridazable + Default, + CH: CompositeHash, + > Estimator for Hybrid where Hybrid: Default, { @@ -288,19 +392,16 @@ where // simply iterate on the two sorted hash arrays and determine the number // of unique hashes. f64::from(unique_count_from_sorted_iterators( - self.iter_sorted_hashes(), - other.iter_sorted_hashes(), + self.inner.iter_sorted_hashes(), + other.inner.iter_sorted_hashes(), )) } - (true, false) => { - let mut copy = self.clone(); - copy.dehybridize(); - copy.estimate_union_cardinality_with_cardinalities( - other, - self_cardinality, - other_cardinality, - ) - } + (true, false) => union_estimation_from_sorted_iterator_and_counter( + self.inner.iter_sorted_hashes().map(CH::decode), + &other.inner, + self_cardinality, + other_cardinality, + ), (false, true) => other.estimate_union_cardinality_with_cardinalities( self, self_cardinality, diff --git a/src/hyperloglog.rs b/src/hyperloglog.rs index b819c08..1d59ebf 100644 --- a/src/hyperloglog.rs +++ b/src/hyperloglog.rs @@ -3,7 +3,7 @@ use crate::prelude::*; use core::hash::{Hash, Hasher}; /// Trait for [`HyperLogLog`] counters. -pub trait HyperLogLog: +pub trait HyperLogLog: Sized + Default + Eq @@ -12,11 +12,19 @@ pub trait HyperLogLog: + BitOr + Send + Sync - + SetProperties + MutableSet { + /// The precision of the counter + type Precision: Precision; + + /// The number of bits per register. + type Bits: Bits; + + /// The hasher used to hash the elements. + type Hasher: HasherType + Default; + /// The type of the registers of the [`HyperLogLog`] counter. - type Registers: Registers; + type Registers: Registers; /// Returns a reference to the registers of the [`HyperLogLog`] counter. fn registers(&self) -> &Self::Registers; @@ -35,11 +43,8 @@ pub trait HyperLogLog: /// use hyperloglog_rs::prelude::*; /// /// // Create a new HyperLogLog counter with precision 14 and 5 bits per register. - /// let mut hll = LogLogBeta::< - /// Precision6, - /// Bits5, - /// >::Array, - /// >::default(); + /// let mut hll = + /// LogLogBeta::>::Array>::default(); /// /// // Add some elements to the counter. /// hll.insert(&1); @@ -52,7 +57,7 @@ pub trait HyperLogLog: /// assert_eq!(number_of_zero_registers, 61); /// } /// ``` - fn get_number_of_zero_registers(&self) -> P::NumberOfRegisters; + fn get_number_of_zero_registers(&self) -> ::NumberOfRegisters; #[inline] /// Returns whether the provided [`HyperLogLog`] counter may be fully contained in the current [`HyperLogLog`] counter. @@ -98,17 +103,20 @@ pub trait HyperLogLog: #[must_use] #[inline] /// Slits the hash into two parts: the register value and the index of the register. - fn split_hash(hash: u64) -> (u8, P::NumberOfRegisters) { - let index: P::NumberOfRegisters = P::NumberOfRegisters::try_from_u64( - hash & (P::NUMBER_OF_REGISTERS - P::NumberOfRegisters::ONE).into(), - ) - .unwrap(); + fn split_hash(hash: u64) -> (u8, ::NumberOfRegisters) { + let index: ::NumberOfRegisters = + ::NumberOfRegisters::try_from_u64( + hash & (::NUMBER_OF_REGISTERS + - ::NumberOfRegisters::ONE) + .into(), + ) + .unwrap(); debug_assert!( - index < P::NUMBER_OF_REGISTERS, + index < ::NUMBER_OF_REGISTERS, "The index {} must be less than the number of registers {}.", index, - P::NUMBER_OF_REGISTERS + ::NUMBER_OF_REGISTERS ); // And we censor we just used for the index. @@ -119,17 +127,17 @@ pub trait HyperLogLog: // the number of zeros we obtain afterwards is never higher // than the maximal value that may be represented in a register // with BITS bits. - if B::NUMBER_OF_BITS < 6_u8 { - censored_hash |= 1_u64 << 64_u64 - B::MASK; + if ::NUMBER_OF_BITS < 6_u8 { + censored_hash |= 1_u64 << (64_u64 - ::MASK); } let register_value = u8::try_from(censored_hash.leading_zeros() + 1).unwrap(); debug_assert!( - register_value <= u8::try_from(B::MASK).unwrap(), + register_value <= u8::try_from(::MASK).unwrap(), "The register value {} must be less than or equal to the maximum register value {}.", register_value, - (1 << B::NUMBER_OF_BITS) - 1 + (1 << ::NUMBER_OF_BITS) - 1 ); (register_value, index) @@ -137,8 +145,10 @@ pub trait HyperLogLog: #[inline] /// Hashes the element and returns the register value and the index of the register. - fn hash_and_index(element: &T) -> (u8, P::NumberOfRegisters) { - let mut hasher = HS::default(); + fn hash_and_index( + element: &T, + ) -> (u8, ::NumberOfRegisters) { + let mut hasher = Self::Hasher::default(); element.hash(&mut hasher); let hash = hasher.finish(); @@ -146,8 +156,48 @@ pub trait HyperLogLog: } /// Return the value of the register at the given index. - fn get_register(&self, index: P::NumberOfRegisters) -> u8; + fn get_register(&self, index: ::NumberOfRegisters) -> u8; /// Create a new [`HyperLogLog`] counter from an array of registers. fn from_registers(registers: Self::Registers) -> Self; } + +/// Trait for the correction of an hyperloglog counter. +pub trait Correction: HyperLogLog { + /// Returns the correction factor for the given number of registers with zero values. + fn correction( + harmonic_sum: f64, + number_of_zero_registers: ::NumberOfRegisters, + ) -> f64; +} + +impl SetProperties for H +where + H: HyperLogLog, +{ + fn is_empty(&self) -> bool { + self.get_number_of_zero_registers() == H::Precision::NUMBER_OF_REGISTERS + } + + fn is_full(&self) -> bool { + // The harmonic sum is defined as Sum(2^(-register_value)) for all registers. + // When all registers are maximally filled, i.e. equal to the maximal multiplicity value, + // the harmonic sum is equal to (2^(-max_multiplicity)) * number_of_registers. + // Since number_of_registers is a power of 2, specifically 2^exponent, the harmonic sum + // is equal to 2^(exponent - max_multiplicity). + self.harmonic_sum() + <= f64::integer_exp2_minus_signed( + (1_i16 << H::Bits::NUMBER_OF_BITS) - i16::from(H::Precision::EXPONENT) - 1, + ) + } +} + +impl ApproximatedSet for H +where + H: HyperLogLog, +{ + fn may_contain(&self, element: &T) -> bool { + let (register, index) = Self::hash_and_index::(element); + self.get_register(index) >= register + } +} diff --git a/src/hyperloglog_macro.rs b/src/hyperloglog_macro.rs index 5a44c08..b9ab5cb 100644 --- a/src/hyperloglog_macro.rs +++ b/src/hyperloglog_macro.rs @@ -4,15 +4,6 @@ /// Implements the [`HyperLogLog`] trait for a given counter. macro_rules! hll_impl { ($counter:ty) => { - impl, Hasher: HasherType> Default for $counter { - #[inline] - fn default() -> Self { - Self { - counter: Default::default(), - } - } - } - impl, Hasher: HasherType> PartialEq for $counter { #[inline] fn eq(&self, other: &Self) -> bool { @@ -35,7 +26,7 @@ macro_rules! hll_impl { impl, Hasher: HasherType> serde::Serialize for $counter { - #[inline(always)] + #[inline] fn serialize(&self, serializer: S) -> Result { use serde::ser::SerializeSeq; let mut seq = serializer.serialize_seq(Some(1 << P::EXPONENT))?; @@ -75,60 +66,6 @@ macro_rules! hll_impl { } } - impl, Hasher: HasherType> - HyperLogLog for $counter - { - type Registers = R; - - #[inline] - fn registers(&self) -> &Self::Registers { - self.counter.registers() - } - - #[inline] - fn get_number_of_zero_registers(&self) ->

::NumberOfRegisters { - self.counter.get_number_of_zero_registers() - } - - #[inline] - fn get_register(&self, index: P::NumberOfRegisters) -> u8 { - self.counter.get_register(index) - } - - #[inline] - fn harmonic_sum(&self) -> f64 - { - self.counter.harmonic_sum() - } - - #[inline] - fn from_registers(registers: R) -> Self { - Self { - counter: HyperLogLog::from_registers(registers), - } - } - } - - - - impl< - P: Precision, - B: Bits, - Hasher: HasherType, - R: Registers, - > SetProperties for $counter - { - #[inline(always)] - fn is_empty(&self) -> bool { - self.counter.is_empty() - } - - #[inline(always)] - fn is_full(&self) -> bool { - self.counter.is_full() - } - } - impl< P: Precision, B: Bits, @@ -136,26 +73,12 @@ macro_rules! hll_impl { R: Registers, > MutableSet for $counter { - #[inline(always)] + #[inline] fn clear(&mut self) { self.counter.clear() } } - impl< - P: Precision, - B: Bits, - Hasher: HasherType, - R: Registers, - T: core::hash::Hash, - > ApproximatedSet for $counter - { - #[inline(always)] - fn may_contain(&self, element: &T) -> bool { - self.counter.may_contain(element) - } - } - impl< P: Precision, B: Bits, @@ -164,7 +87,7 @@ macro_rules! hll_impl { T: core::hash::Hash, > ExtendableApproximatedSet for $counter { - #[inline(always)] + #[inline] fn insert(&mut self, element: &T) -> bool { self.counter.insert(element) } @@ -173,14 +96,7 @@ macro_rules! hll_impl { impl + VariableWords, CH: CompositeHash> Hybridazable for $counter { - type IterSortedHashes<'words> = >::Iter<'words> where Self: 'words, CH: 'words; - type P = P; - type B = B; - - #[inline] - fn is_hybrid(&self) -> bool { - self.counter.is_hybrid() - } + type IterSortedHashes<'words> = >::Words<'words> where Self: 'words, CH: 'words; #[inline] fn dehybridize(&mut self) { @@ -195,8 +111,8 @@ macro_rules! hll_impl { } #[inline] - fn number_of_hashes(&self) -> usize { - self.counter.number_of_hashes() + fn is_hybrid(&self) -> bool { + self.counter.is_hybrid() } #[inline] @@ -204,6 +120,11 @@ macro_rules! hll_impl { self.counter.capacity() } + #[inline] + fn number_of_hashes(&self) -> usize { + self.counter.number_of_hashes() + } + #[inline] fn contains(&self, element: &T) -> bool { Hybridazable::contains(&self.counter, element) diff --git a/src/lib.rs b/src/lib.rs index 857c93d..320cb1a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,6 +1,7 @@ #![doc = include_str!("../README.md")] #![deny(missing_docs)] #![deny(unsafe_code)] +#![deny(unconditional_recursion)] #![warn(clippy::all)] #![warn(clippy::pedantic)] #![cfg_attr(not(feature = "std"), no_std)] diff --git a/src/loglogbeta.rs b/src/loglogbeta.rs index 92005b9..6c1a4a9 100644 --- a/src/loglogbeta.rs +++ b/src/loglogbeta.rs @@ -9,7 +9,7 @@ use core::any::type_name; #[cfg(feature = "std")] use crate::utils::Named; -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, Default)] #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] /// A struct implementing the [`LogLogBeta`] algorithm. pub struct LogLogBeta< @@ -40,12 +40,14 @@ impl + Named, Hasher: #[inline] fn name(&self) -> String { #[cfg(feature = "precomputed_beta")] - let model_name = "LLPB"; + let estimator_name = "LLPB"; #[cfg(not(feature = "precomputed_beta"))] - let model_name = "LLB"; + let estimator_name = "LLB"; + #[cfg(feature = "std_ln")] + let estimator_name = format!("{estimator_name}-std-ln"); format!( - "{model_name}<{}, {}, {}> + {}", + "{estimator_name}<{}, {}, {}> + {}", P::default().name(), B::default().name(), self.registers().name(), @@ -54,10 +56,58 @@ impl + Named, Hasher: } } +impl, Hasher: HasherType> HyperLogLog + for LogLogBeta +{ + type Registers = R; + type Precision = P; + type Bits = B; + type Hasher = Hasher; + + #[inline] + fn registers(&self) -> &Self::Registers { + self.counter.registers() + } + + #[inline] + fn get_number_of_zero_registers(&self) ->

::NumberOfRegisters { + self.counter.get_number_of_zero_registers() + } + + #[inline] + fn get_register(&self, index: P::NumberOfRegisters) -> u8 { + self.counter.get_register(index) + } + + #[inline] + fn harmonic_sum(&self) -> f64 { + self.counter.harmonic_sum() + } + + #[inline] + fn from_registers(registers: R) -> Self { + Self { + counter: HyperLogLog::from_registers(registers), + } + } +} + +impl, Hasher: HasherType> Correction + for LogLogBeta +{ + #[inline] + fn correction( + harmonic_sum: f64, + number_of_zero_registers: ::NumberOfRegisters, + ) -> f64 { + P::plusplus_estimate(harmonic_sum, number_of_zero_registers) + } +} + impl, Hasher: HasherType> Estimator for LogLogBeta where - Self: HyperLogLog, + Self: HyperLogLog, { #[inline] fn estimate_cardinality(&self) -> f64 { diff --git a/src/mle.rs b/src/mle.rs index 937d6b1..96ed1ac 100644 --- a/src/mle.rs +++ b/src/mle.rs @@ -1,11 +1,11 @@ //! Struct marker MLE. -use crate::hll_impl; use crate::prelude::*; use core::cmp::Ordering; -use core::f64; +use core::hash::Hash; +use core::ops::{Add, Mul, Sub}; -#[derive(Debug, Clone, Copy, Hash)] +#[derive(Debug, Clone, Copy, Hash, Default, Eq, PartialEq)] #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] /// A struct representing the Maximum Likelihood Estimation. pub struct MLE { @@ -13,10 +13,126 @@ pub struct MLE { counter: H, } -hll_impl!(MLE, 2>); -hll_impl!(MLE, 3>); -hll_impl!(MLE, 2>); -hll_impl!(MLE, 3>); +impl, T: Hash, const ERROR: i32> ExtendableApproximatedSet + for MLE +{ + #[inline] + fn insert(&mut self, element: &T) -> bool { + self.counter.insert(element) + } +} + +impl, CH: CompositeHash, const ERROR: i32> + Hybridazable for MLE +{ + type IterSortedHashes<'words> = H::IterSortedHashes<'words> where Self: 'words, CH: 'words; + + #[inline] + fn dehybridize(&mut self) { + self.counter.dehybridize(); + } + + #[inline] + fn is_hybrid(&self) -> bool { + self.counter.is_hybrid() + } + + #[inline] + fn capacity(&self) -> usize { + self.counter.capacity() + } + + #[inline] + fn new_hybrid() -> Self { + Self { + counter: Hybridazable::new_hybrid(), + } + } + + #[inline] + fn number_of_hashes(&self) -> usize { + self.counter.number_of_hashes() + } + + #[inline] + fn contains(&self, element: &T) -> bool { + Hybridazable::contains(&self.counter, element) + } + + #[inline] + fn clear_words(&mut self) { + self.counter.clear_words(); + } + + #[inline] + fn iter_sorted_hashes(&self) -> Self::IterSortedHashes<'_> { + self.counter.iter_sorted_hashes() + } + + #[inline] + fn hybrid_insert(&mut self, element: &T) -> bool { + self.counter.hybrid_insert(element) + } +} + +impl, const ERROR: i32> BitOr for MLE { + type Output = Self; + + #[inline] + fn bitor(self, rhs: Self) -> Self::Output { + Self { + counter: self.counter | rhs.counter, + } + } +} + +impl BitOrAssign for MLE { + #[inline] + fn bitor_assign(&mut self, rhs: Self) { + self.counter |= rhs.counter; + } +} + +impl MutableSet for MLE { + #[inline] + fn clear(&mut self) { + self.counter.clear(); + } +} + +impl HyperLogLog for MLE { + type Registers = H::Registers; + type Precision = H::Precision; + type Bits = H::Bits; + type Hasher = H::Hasher; + + #[inline] + fn registers(&self) -> &Self::Registers { + self.counter.registers() + } + + #[inline] + fn get_number_of_zero_registers(&self) -> ::NumberOfRegisters { + self.counter.get_number_of_zero_registers() + } + + #[inline] + fn get_register(&self, index: ::NumberOfRegisters) -> u8 { + self.counter.get_register(index) + } + + #[inline] + fn harmonic_sum(&self) -> f64 { + self.counter.harmonic_sum() + } + + #[inline] + fn from_registers(registers: H::Registers) -> Self { + Self { + counter: HyperLogLog::from_registers(registers), + } + } +} impl From for MLE { #[inline] @@ -40,12 +156,10 @@ where fn mle_union_cardinality< P: Precision, B: Bits, - Hasher: HasherType, - H: HyperLogLog + Estimator, + I: ExactSizeIterator, const ERROR: i32, >( - left: &H, - right: &H, + registers: I, left_cardinality: f64, right_cardinality: f64, estimate: fn(f64, P::NumberOfRegisters) -> f64, @@ -58,28 +172,24 @@ fn mle_union_cardinality< let mut union_harmonic_sum = f64::ZERO; let mut union_zeros = P::NumberOfRegisters::ZERO; - for [left_register, right_register] in left.registers().iter_registers_zipped(right.registers()) - { - let larger_register = match left_register.cmp(&right_register) { - Ordering::Less => { - left_multiplicities_smaller[usize::from(left_register)] += f64::ONE; - right_multiplicities_larger[usize::from(right_register)] += f64::ONE; - right_register - } - Ordering::Greater => { - left_multiplicities_larger[usize::from(left_register)] += f64::ONE; - right_multiplicities_smaller[usize::from(right_register)] += f64::ONE; - left_register - } - Ordering::Equal => { - // If left register is equal to right register - joint_multiplicities[usize::from(left_register)] += f64::ONE; - left_register - } + for [left_register, right_register] in registers { + let cmp = left_register.cmp(&right_register); + + let larger_register = if cmp == Ordering::Greater || cmp == Ordering::Equal { + left_register + } else { + right_register }; + let left_register = usize::from(left_register); + let right_register = usize::from(right_register); + left_multiplicities_smaller[left_register] += f64::from(cmp == Ordering::Less); + right_multiplicities_larger[right_register] += f64::from(cmp == Ordering::Less); + left_multiplicities_larger[left_register] += f64::from(cmp == Ordering::Greater); + right_multiplicities_smaller[right_register] += f64::from(cmp == Ordering::Greater); + joint_multiplicities[left_register] += f64::from(cmp == Ordering::Equal); union_harmonic_sum += f64::integer_exp2_minus(larger_register); - union_zeros += P::NumberOfRegisters::from_bool(larger_register.is_zero()); + union_zeros += P::NumberOfRegisters::from(larger_register.is_zero()); } // We get the best estimates from HyperLogLog++ @@ -104,11 +214,25 @@ fn mle_union_cardinality< // we introdce the following expressions to simplify the computation // of the gradient. - let x = |phi: f64, two_to_minus_register: f64| -> f64 { phi.exp() * two_to_minus_register }; + let x = |phi: [f64; 3], two_to_minus_register: f64| -> [f64; 3] { + [ + (phi[0].exp() * two_to_minus_register).max(f64::EPSILON), + (phi[1].exp() * two_to_minus_register).max(f64::EPSILON), + (phi[2].exp() * two_to_minus_register).max(f64::EPSILON), + ] + }; - let yz = |x: f64| -> (f64, f64) { - let exp_m1 = (-x).exp_m1(); - (f64::ONE + exp_m1, -exp_m1) + let yz = |x: [f64; 3]| -> ([f64; 3], [f64; 3]) { + let exp_m1 = [(-x[0]).exp_m1(), (-x[1]).exp_m1(), (-x[2]).exp_m1()]; + + ( + [ + (f64::ONE + exp_m1[0]).max(f64::EPSILON), + (f64::ONE + exp_m1[1]).max(f64::EPSILON), + (f64::ONE + exp_m1[2]).max(f64::EPSILON), + ], + [-exp_m1[0], -exp_m1[1], -exp_m1[2]], + ) }; // We precompute q and q+1 for reference. @@ -125,83 +249,42 @@ fn mle_union_cardinality< let mut optimizer: Adam<3> = Adam::default(); - let left_number_of_zeros = - left_multiplicities_smaller[0] + left_multiplicities_larger[0] + joint_multiplicities[0]; - let right_number_of_zeros = - right_multiplicities_smaller[0] + right_multiplicities_larger[0] + joint_multiplicities[0]; - let intersection_number_of_zeros = - right_multiplicities_smaller[0] + left_multiplicities_smaller[0] + joint_multiplicities[0]; + let zeros_0: [f64; 3] = [ + left_multiplicities_smaller[0] + left_multiplicities_larger[0] + joint_multiplicities[0], + right_multiplicities_smaller[0] + right_multiplicities_larger[0] + joint_multiplicities[0], + right_multiplicities_smaller[0] + left_multiplicities_smaller[0] + joint_multiplicities[0], + ]; - let left_number_of_saturated_registers = - left_multiplicities_larger[left_multiplicities_larger.len() - 1]; - let right_number_of_saturated_registers = - right_multiplicities_larger[right_multiplicities_larger.len() - 1]; - let intersection_number_of_saturated_registers = - joint_multiplicities[joint_multiplicities.len() - 1]; + let zeros_q: [f64; 3] = [ + left_multiplicities_larger[usize::from(q_plus_one)], + right_multiplicities_larger[usize::from(q_plus_one)], + joint_multiplicities[usize::from(q_plus_one)], + ]; let two_to_zero: f64 = f64::integer_exp2_minus(P::EXPONENT); let two_to_minus_q: f64 = f64::integer_exp2_minus(P::EXPONENT + q); for _ in 0_u16..10_000_u16 { - let x_left_0 = x(phis[0], two_to_zero); - let x_right_0 = x(phis[1], two_to_zero); - let x_joint_0 = x(phis[2], two_to_zero); - let x_left_q = x(phis[0], two_to_minus_q); - let (y_left_q, z_left_q) = yz(x_left_q); - let x_right_q = x(phis[1], two_to_minus_q); - let (y_right_q, z_right_q) = yz(x_right_q); - let x_joint_q = x(phis[2], two_to_minus_q); - let (y_joint_q, z_joint_q) = yz(x_joint_q); - - let denominator = f64::ONE / (z_joint_q + y_joint_q * z_left_q * z_right_q); - - let xl_yl_q = x_left_q * y_left_q; - let xr_yr_q = x_right_q * y_right_q; - let xj_yjoint_q = x_joint_q * y_joint_q; - let shared_factor = - if intersection_number_of_saturated_registers > f64::ZERO && y_joint_q > f64::EPSILON { - intersection_number_of_saturated_registers * y_joint_q * denominator - } else { - f64::ZERO - }; - - gradients[0] = if xl_yl_q > f64::EPSILON { - xl_yl_q * (shared_factor * z_right_q + left_number_of_saturated_registers / z_left_q) - } else { - f64::ZERO - }; - gradients[0] -= left_number_of_zeros * x_left_0; + let x_0 = x(phis, two_to_zero); + let x_q = x(phis, two_to_minus_q); + let (y_q, z_q) = yz(x_q); - gradients[1] = if xr_yr_q > f64::EPSILON { - xr_yr_q * (shared_factor * z_left_q + right_number_of_saturated_registers / z_right_q) - } else { - f64::ZERO - }; + let denominator = f64::ONE / (z_q[2] + y_q[2] * z_q[0] * z_q[1]); - gradients[1] -= right_number_of_zeros * x_right_0; + let y_q_saturated = y_q.ew_mul(zeros_q[2]); - gradients[2] = if intersection_number_of_saturated_registers > f64::ZERO - && xj_yjoint_q > f64::EPSILON - && denominator.is_finite() - { - intersection_number_of_saturated_registers - * xj_yjoint_q - * (y_left_q + z_left_q * y_right_q) - * denominator - } else { - f64::ZERO - }; - gradients[2] -= intersection_number_of_zeros * x_joint_0; + gradients[0] = y_q_saturated[2] * denominator * z_q[1] + zeros_q[0] / z_q[0]; + + gradients[1] = y_q_saturated[2] * denominator * z_q[0] + zeros_q[1] / z_q[1]; + + gradients[2] = y_q_saturated[0] * denominator + y_q_saturated[1] * z_q[0]; + gradients = (gradients.ew_mul(y_q.ew_mul(z_q))).ew_sub(zeros_0.ew_mul(x_0)); (1..q_plus_one).for_each(|register_value| { let two_to_minus_register = f64::integer_exp2_minus(P::EXPONENT + register_value); - let x_left = x(phis[0], two_to_minus_register); - let x_right = x(phis[1], two_to_minus_register); - let x_joint = x(phis[2], two_to_minus_register); - let (y_left, z_left) = yz(x_left); - let (y_right, z_right) = yz(x_right); - let (y_joint, z_joint) = yz(x_joint); + let x_register = x(phis, two_to_minus_register); + let (y_register, z_register) = yz(x_register); let joint_k = joint_multiplicities[usize::from(register_value)]; let left_smaller_k = left_multiplicities_smaller[usize::from(register_value)]; @@ -209,57 +292,34 @@ fn mle_union_cardinality< let right_smaller_k = right_multiplicities_smaller[usize::from(register_value)]; let right_larger_k = right_multiplicities_larger[usize::from(register_value)]; - let yjoint_zleft = y_joint * z_left; - let yjoint_right_zleft = yjoint_zleft * y_right; - let yjoint_zright = y_joint * z_right; - let yjointleft_zright = yjoint_zright * y_left; - let yjointleft = y_joint * y_left; - let yjointright = y_joint * y_right; - let yjoint_zlr = yjoint_zleft * z_right; - let mut zj_plus_yjoint_zleft = z_joint + yjoint_zleft; - if zj_plus_yjoint_zleft < f64::EPSILON { - zj_plus_yjoint_zleft = f64::EPSILON; - } - let reciprocal_zj_plus_yjoint_zleft = f64::ONE / zj_plus_yjoint_zleft; - let mut zj_plus_yjoint_zright = z_joint + yjoint_zright; - if zj_plus_yjoint_zright < f64::EPSILON { - zj_plus_yjoint_zright = f64::EPSILON; - } - let reciprocal_zj_plus_yjoint_zright = f64::ONE / zj_plus_yjoint_zright; - let mut zj_plus_yjoint_zlr = z_joint + yjoint_zlr; - if zj_plus_yjoint_zlr < f64::EPSILON { - zj_plus_yjoint_zlr = f64::EPSILON; - } + let yjoint_right_zleft = y_register[2] * z_register[0] * y_register[1]; + let yjoint_left_zright = y_register[2] * z_register[1] * y_register[0]; + let yjointleft = y_register[2] * y_register[0]; + let yjointright = y_register[2] * y_register[1]; + let zj_plus_yjoint_zright = z_register[2] + y_register[2] * z_register[1]; + let zj_plus_yjoint_zlr = z_register[2] + y_register[2] * z_register[0] * z_register[1]; let reciprocal_zj_plus_yjoint_zlr = f64::ONE / zj_plus_yjoint_zlr; - let left_reciprocal = - left_smaller_k * (reciprocal_zj_plus_yjoint_zleft * yjointleft - f64::ONE); + let left_reciprocal = left_smaller_k + * (y_register[2] * y_register[0] / (z_register[2] + y_register[2] * z_register[0]) - f64::ONE); let right_reciprocal = - right_smaller_k * (reciprocal_zj_plus_yjoint_zright * yjointright - f64::ONE); - - if x_left > f64::EPSILON { - gradients[0] += x_left - * (left_reciprocal - + joint_k * (yjointleft_zright * reciprocal_zj_plus_yjoint_zlr - f64::ONE) - + left_larger_k * (y_left / z_left - f64::ONE)); - } - - if x_right > f64::EPSILON { - gradients[1] += x_right - * (right_reciprocal - + joint_k - * (yjoint_right_zleft * reciprocal_zj_plus_yjoint_zlr - f64::ONE) - + right_larger_k * (y_right / z_right - f64::ONE)); - } - - if x_joint > f64::EPSILON { - gradients[2] += x_joint - * (left_reciprocal - + right_reciprocal - + joint_k - * ((yjointleft + yjoint_right_zleft) * reciprocal_zj_plus_yjoint_zlr - - f64::ONE)); - } + right_smaller_k * (yjointright / zj_plus_yjoint_zright - f64::ONE); + + let delta = [ + left_reciprocal + + joint_k * (yjoint_left_zright * reciprocal_zj_plus_yjoint_zlr - f64::ONE) + + left_larger_k * (y_register[0] / z_register[0] - f64::ONE), + right_reciprocal + + joint_k * (yjoint_right_zleft * reciprocal_zj_plus_yjoint_zlr - f64::ONE) + + right_larger_k * (y_register[1] / z_register[1] - f64::ONE), + left_reciprocal + + right_reciprocal + + joint_k + * ((yjointleft + yjoint_right_zleft) * reciprocal_zj_plus_yjoint_zlr + - f64::ONE), + ]; + + gradients = gradients.ew_add(x_register.ew_mul(delta)); }); // We execute the update of the Adam first and second moments. @@ -277,42 +337,82 @@ fn mle_union_cardinality< phis[0].exp() + phis[1].exp() + phis[2].exp() } -impl, Hasher: HasherType> Estimator - for MLE, ERROR> -where - Self: HyperLogLog, +/// Trait for element-wise multiplication. +trait ElementWiseMultiplication { + /// Element-wise multiplication. + fn ew_mul(self, other: Rhs) -> Self; +} + +impl> ElementWiseMultiplication for [T; N] { + #[inline] + fn ew_mul(self, other: Self) -> Self { + let mut result = [T::default(); N]; + for i in 0..N { + result[i] = self[i] * other[i]; + } + result + } +} + +impl> ElementWiseMultiplication + for [T; N] { #[inline] - fn estimate_cardinality(&self) -> f64 { - self.counter.estimate_cardinality() + fn ew_mul(self, other: T) -> Self { + let mut result = [T::default(); N]; + for i in 0..N { + result[i] = self[i] * other; + } + result } +} + +/// Trait for element-wise subtraction. +trait ElementWiseSubtraction { + /// Element-wise subtraction. + fn ew_sub(self, other: Self) -> Self; +} +impl> ElementWiseSubtraction for [T; N] { #[inline] - fn is_union_estimate_non_deterministic(&self, _other: &Self) -> bool { - true + fn ew_sub(self, other: Self) -> Self { + let mut result = [T::default(); N]; + for i in 0..N { + result[i] = self[i] - other[i]; + } + result } +} +/// Trait for element-wise addition. +trait ElementWiseAddition { + /// Element-wise addition. + fn ew_add(self, other: Self) -> Self; +} + +impl> ElementWiseAddition for [T; N] { #[inline] - fn estimate_union_cardinality_with_cardinalities( - &self, - other: &Self, - self_cardinality: f64, - other_cardinality: f64, + fn ew_add(self, other: Self) -> Self { + let mut result = [T::default(); N]; + for i in 0..N { + result[i] = self[i] + other[i]; + } + result + } +} + +impl Correction for MLE { + fn correction( + harmonic_sum: f64, + number_of_zero_registers: ::NumberOfRegisters, ) -> f64 { - mle_union_cardinality::, ERROR>( - &self.counter, - &other.counter, - self_cardinality, - other_cardinality, - P::beta_estimate, - ) + H::correction(harmonic_sum, number_of_zero_registers) } } -impl, Hasher: HasherType> Estimator - for MLE, ERROR> +impl Estimator for MLE where - Self: HyperLogLog, + H: Estimator + Correction, { #[inline] fn estimate_cardinality(&self) -> f64 { @@ -331,12 +431,21 @@ where self_cardinality: f64, other_cardinality: f64, ) -> f64 { - mle_union_cardinality::, ERROR>( - &self.counter, - &other.counter, + mle_union_cardinality::< + ::Precision, + ::Bits, + <::Registers as Registers< + ::Precision, + ::Bits, + >>::IterZipped<'_>, + ERROR, + >( + self.counter + .registers() + .iter_registers_zipped(other.counter.registers()), self_cardinality, other_cardinality, - P::plusplus_estimate, + ::correction, ) } } diff --git a/src/plusplus.rs b/src/plusplus.rs index 7d36138..e894b71 100644 --- a/src/plusplus.rs +++ b/src/plusplus.rs @@ -6,7 +6,7 @@ use crate::prelude::*; #[cfg(feature = "std")] use core::any::type_name; -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, Default)] #[cfg_attr(feature = "mem_dbg", derive(mem_dbg::MemDbg, mem_dbg::MemSize))] /// A struct implementing the `HyperLogLog++` algorithm. pub struct PlusPlus< @@ -26,16 +26,18 @@ impl + Named, Hasher: #[inline] fn name(&self) -> String { #[cfg(all(feature = "integer_plusplus", not(feature = "plusplus_kmeans")))] - let model_name = "PPI"; + let estimator_name = "PPI"; #[cfg(all(feature = "integer_plusplus", feature = "plusplus_kmeans"))] - let model_name = "PPIK"; + let estimator_name = "PPIK"; #[cfg(all(not(feature = "integer_plusplus"), not(feature = "plusplus_kmeans")))] - let model_name = "PP"; + let estimator_name = "PP"; #[cfg(all(not(feature = "integer_plusplus"), feature = "plusplus_kmeans"))] - let model_name = "PPK"; + let estimator_name = "PPK"; + #[cfg(feature = "std_ln")] + let estimator_name = format!("{estimator_name}-std-ln"); format!( - "{model_name}<{}, {}, {}> + {}", + "{estimator_name}<{}, {}, {}> + {}", P::default().name(), B::default().name(), self.registers().name(), @@ -55,10 +57,58 @@ impl, Hasher: HasherType> } } +impl, Hasher: HasherType> HyperLogLog + for PlusPlus +{ + type Registers = R; + type Precision = P; + type Bits = B; + type Hasher = Hasher; + + #[inline] + fn registers(&self) -> &Self::Registers { + self.counter.registers() + } + + #[inline] + fn get_number_of_zero_registers(&self) ->

::NumberOfRegisters { + self.counter.get_number_of_zero_registers() + } + + #[inline] + fn get_register(&self, index: P::NumberOfRegisters) -> u8 { + self.counter.get_register(index) + } + + #[inline] + fn harmonic_sum(&self) -> f64 { + self.counter.harmonic_sum() + } + + #[inline] + fn from_registers(registers: R) -> Self { + Self { + counter: HyperLogLog::from_registers(registers), + } + } +} + +impl, Hasher: HasherType> Correction + for PlusPlus +{ + #[inline] + fn correction( + harmonic_sum: f64, + number_of_zero_registers: ::NumberOfRegisters, + ) -> f64 { + P::plusplus_estimate(harmonic_sum, number_of_zero_registers) + } +} + impl, Hasher: HasherType> Estimator for PlusPlus where - Self: HyperLogLog, + Self: HyperLogLog, { #[inline] fn estimate_cardinality(&self) -> f64 { @@ -66,7 +116,12 @@ where } #[inline] - fn estimate_union_cardinality_with_cardinalities(&self, other: &Self, self_cardinality: f64, other_cardinality: f64) -> f64 { + fn estimate_union_cardinality_with_cardinalities( + &self, + other: &Self, + self_cardinality: f64, + other_cardinality: f64, + ) -> f64 { let (harmonic_sum, number_of_zero_registers) = self .registers() .get_harmonic_sum_and_zeros(other.registers()); diff --git a/src/precisions.rs b/src/precisions.rs index ff7bd04..1204805 100644 --- a/src/precisions.rs +++ b/src/precisions.rs @@ -9,7 +9,7 @@ use core::{f64, fmt::Debug}; #[cfg(feature = "mem_dbg")] use mem_dbg::{MemDbg, MemSize}; -use crate::utils::{FloatOps, Number, One, PositiveInteger, VariableWord}; +use crate::utils::{FloatOps, Number, One, PositiveInteger, ToF64, VariableWord}; #[cfg(feature = "plusplus")] use crate::utils::Two; @@ -23,12 +23,15 @@ include!(concat!(env!("OUT_DIR"), "/number_of_registers.rs")); #[cfg(feature = "plusplus")] include!(concat!(env!("OUT_DIR"), "/weights.rs")); -#[cfg(feature = "plusplus")] +#[cfg(feature = "zero_count_correction")] include!(concat!(env!("OUT_DIR"), "/linear_count_zeros.rs")); -#[cfg(any( - all(feature = "beta", not(feature = "precomputed_beta")), - feature = "plusplus" +#[cfg(all( + not(feature = "std_ln"), + any( + all(feature = "beta", not(feature = "precomputed_beta")), + feature = "plusplus" + ) ))] include!(concat!(env!("OUT_DIR"), "/ln_values.rs")); @@ -39,9 +42,9 @@ include!(concat!(env!("OUT_DIR"), "/beta.rs")); include!(concat!(env!("OUT_DIR"), "/beta_horner.rs")); #[cfg(feature = "plusplus_kmeans")] -fn kmeans_bias( - estimates: &'static [V; N], - biases: &'static [W; N], +fn kmeans_bias( + estimates: &'static [V], + biases: &'static [W], estimate: V, ) -> f64 where @@ -53,7 +56,7 @@ where - 1; let mut min = if index > 6 { index - 6 } else { 0 }; - let mut max = core::cmp::min(index + 6, N); + let mut max = core::cmp::min(index + 6, estimates.len()); while max - min != 6 { let (min_val, max_val) = (estimates[min], estimates[max - 1]); @@ -69,9 +72,9 @@ where #[cfg(feature = "plusplus")] /// Computes the bias correction factor for the estimate using either /// the k-means algorithm or the simpler linear interpolation. -fn bias( - estimates: &'static [V; N], - biases: &'static [W; N], +fn bias( + estimates: &'static [V], + biases: &'static [W], estimate: V, ) -> f64 where @@ -88,8 +91,8 @@ where return f64::from(biases[0]); } - if index == N { - return f64::from(biases[N - 1]); + if index == estimates.len() { + return f64::from(biases[estimates.len() - 1]); } let x0 = f64::from(estimates[index - 1]); @@ -110,10 +113,16 @@ pub trait Precision: Default + Copy + Eq + Debug + Send + Sync { /// when counting the number of zeros, as it will be corrected when computing /// the cardinality as it is known before hand whether this can happen at all. #[cfg(feature = "mem_dbg")] - type NumberOfRegisters: PositiveInteger + VariableWord::NumberOfRegisters> + MemSize + MemDbg; + type NumberOfRegisters: PositiveInteger + + ToF64 + + VariableWord::NumberOfRegisters> + + MemSize + + MemDbg; #[cfg(not(feature = "mem_dbg"))] /// Se documentation above. - type NumberOfRegisters: PositiveInteger + VariableWord::NumberOfRegisters>; + type NumberOfRegisters: PositiveInteger + + ToF64 + + VariableWord::NumberOfRegisters>; /// The exponent of the number of registers, meaning the number of registers /// that will be used is 2^EXPONENT. This is the p parameter in the [`HyperLogLog`]. const EXPONENT: u8; @@ -140,30 +149,107 @@ pub trait Precision: Default + Copy + Eq + Debug + Send + Sync { /// The alpha constant for the precision, used in the estimation of the cardinality. const ALPHA: f64; + #[cfg(all(feature = "beta", not(feature = "precomputed_beta")))] + /// Beta constants for the LogLog-Beta bias correction. + const BETA: [f64; 8]; - #[cfg(feature = "plusplus")] + #[cfg(feature = "precomputed_beta")] + /// Returns the precomputed beta value for the given number of zero registers. + fn const_beta_horner(number_of_zero_registers: Self::NumberOfRegisters) -> f64; + + #[cfg(feature = "zero_count_correction")] /// The number of zero registers over which the counter should switch to the linear counting. const LINEAR_COUNT_ZEROS: Self::NumberOfRegisters; + #[cfg(all(feature = "plusplus", not(feature = "integer_plusplus")))] + /// The estimate centroids for the [`PlusPlus`] bias correction. + const ESTIMATES: &'static [f64]; + #[cfg(all(feature = "plusplus", not(feature = "integer_plusplus")))] + /// The bias values for the [`PlusPlus`] bias correction. + const BIASES: &'static [f64]; + #[cfg(all(feature = "plusplus", feature = "integer_plusplus"))] + /// The estimate centroids for the [`PlusPlus`] bias correction. + const ESTIMATES: &'static [u32]; + #[cfg(all(feature = "plusplus", feature = "integer_plusplus"))] + /// The bias values for the [`PlusPlus`] bias correction. + const BIASES: &'static [i32]; #[cfg(feature = "beta")] + #[inline] /// Computes LogLog-Beta estimate bias correction using Horner's method. /// /// Paper: /// Wikipedia: - fn beta_estimate(harmonic_sum: f64, number_of_zero_registers: Self::NumberOfRegisters) -> f64; + fn beta_estimate(harmonic_sum: f64, number_of_zero_registers: Self::NumberOfRegisters) -> f64 { + #[cfg(feature = "zero_count_correction")] + if number_of_zero_registers >= Self::LINEAR_COUNT_ZEROS { + return Self::small_correction(number_of_zero_registers); + } + #[cfg(not(feature = "precomputed_beta"))] + let beta_horner = { + #[cfg(not(feature = "std_ln"))] + let number_of_zero_registers_ln = LN_VALUES[1 + number_of_zero_registers.to_usize()]; + #[cfg(feature = "std_ln")] + let number_of_zero_registers_ln = f64::ln_1p(number_of_zero_registers.to_f64()); + let mut res = f64::ZERO; + for i in (1..8).rev() { + res = res * number_of_zero_registers_ln + Self::BETA[i]; + } + res * number_of_zero_registers_ln + Self::BETA[0] * number_of_zero_registers.to_f64() + }; + + #[cfg(feature = "precomputed_beta")] + let beta_horner = Self::const_beta_horner(number_of_zero_registers); + + Self::ALPHA + * f64::integer_exp2(Self::EXPONENT) + * (f64::integer_exp2(Self::EXPONENT) - number_of_zero_registers.to_f64()) + / (harmonic_sum + beta_horner) + + 0.5 + } - #[cfg(feature = "plusplus")] /// Computes the small correction factor for the estimate. - fn small_correction(number_of_zero_registers: Self::NumberOfRegisters) -> f64; + #[inline] + #[cfg(feature = "zero_count_correction")] + fn small_correction(number_of_zero_registers: Self::NumberOfRegisters) -> f64 { + #[cfg(not(feature = "std_ln"))] + return f64::integer_exp2(Self::EXPONENT) + * (f64::from(Self::EXPONENT) * core::f64::consts::LN_2 + - LN_VALUES[number_of_zero_registers.to_usize()]); + #[cfg(feature = "std_ln")] + return f64::integer_exp2(Self::EXPONENT) + * f64::ln_1p( + (f64::integer_exp2(Self::EXPONENT) - number_of_zero_registers.to_f64()) + / number_of_zero_registers.to_f64(), + ); + } + #[must_use] + #[inline] #[cfg(feature = "plusplus")] - /// Computes the bias correction factor for the estimate. - fn bias(estimate: f64) -> f64; + #[cfg_attr( + feature = "integer_plusplus", + expect(clippy::cast_sign_loss, reason = "Cardinality is always positive.") + )] + #[cfg_attr( + feature = "integer_plusplus", + expect( + clippy::cast_possible_truncation, + reason = "Bias is only applied to values smaller than 2**21." + ) + )] + /// Computes the bias correction factor for the estimate using the [`PlusPlus`] algorithm. + fn bias(estimate: f64) -> f64 { + #[cfg(not(feature = "integer_plusplus"))] + return bias(Self::ESTIMATES, Self::BIASES, estimate); + #[cfg(feature = "integer_plusplus")] + return bias(Self::ESTIMATES, Self::BIASES, estimate as u32); + } #[cfg(feature = "plusplus")] #[inline] - /// Computes the estimate of the cardinality using the `LogLog++` algorithm. + /// Computes the estimate of the cardinality using the [`PlusPlus`] algorithm. fn plusplus_estimate(harmonic_sum: f64, number_of_zeros: Self::NumberOfRegisters) -> f64 { + #[cfg(feature = "zero_count_correction")] if number_of_zeros >= Self::LINEAR_COUNT_ZEROS { return Self::small_correction(number_of_zeros); } @@ -205,65 +291,24 @@ macro_rules! impl_precision { const EXPONENT: u8 = $exponent; const NUMBER_OF_REGISTERS: Self::NumberOfRegisters = []::ONE << $exponent; const ALPHA: f64 = []; - - #[cfg(feature = "plusplus")] - const LINEAR_COUNT_ZEROS: Self::NumberOfRegisters = []; - - #[inline] - #[cfg(feature = "plusplus")] - #[cfg_attr(feature = "integer_plusplus", expect(clippy::cast_sign_loss, reason="Cardinality is always positive."))] - #[cfg_attr(feature = "integer_plusplus", expect(clippy::cast_possible_truncation, reason="Bias is only applied to values smaller than 2**21."))] - fn bias(estimate: f64) -> f64 { - #[cfg(not(feature = "integer_plusplus"))] - return bias( - &[], - &[], - estimate - ); - #[cfg(feature = "integer_plusplus")] - return bias( - &[], - &[], - estimate as u32 - ); + #[cfg(all(feature = "beta", not(feature = "precomputed_beta")))] + const BETA: [f64; 8] = []; + #[cfg(feature = "precomputed_beta")] + fn const_beta_horner(number_of_zero_registers: Self::NumberOfRegisters) -> f64 { + [][number_of_zero_registers.to_usize()] } - /// Computes LogLog-Beta estimate bias correction using Horner's method. - /// - /// Paper: https://arxiv.org/pdf/1612.02284.pdf - /// Wikipedia: https://en.wikipedia.org/wiki/Horner%27s_method - #[inline] - #[cfg(feature = "beta")] - fn beta_estimate(harmonic_sum: f64, number_of_zero_registers: Self::NumberOfRegisters) -> f64 { - if number_of_zero_registers >= [] { - return Self::small_correction(number_of_zero_registers); - } - #[cfg(not(feature = "precomputed_beta"))] - let beta_horner = { - let number_of_zero_registers_ln = LN_VALUES[1 + usize::try_from(number_of_zero_registers).unwrap()]; - let mut res = f64::ZERO; - for i in (1..8).rev() { - res = res * number_of_zero_registers_ln + [][i]; - } - res * number_of_zero_registers_ln + [][0] * f64::from(number_of_zero_registers) - }; - - #[cfg(feature = "precomputed_beta")] - let beta_horner = [][usize::try_from(number_of_zero_registers).unwrap()]; - - [] - * f64::integer_exp2(Self::EXPONENT) - * (f64::integer_exp2(Self::EXPONENT) - f64::from(number_of_zero_registers)) - / (harmonic_sum + beta_horner) - + 0.5 - } + #[cfg(feature = "zero_count_correction")] + const LINEAR_COUNT_ZEROS: Self::NumberOfRegisters = []; - #[inline(always)] - #[cfg(feature = "plusplus")] - fn small_correction(number_of_zero_registers: Self::NumberOfRegisters) -> f64 { - f64::integer_exp2(Self::EXPONENT) - * (f64::from(Self::EXPONENT) * core::f64::consts::LN_2 - LN_VALUES[usize::try_from(number_of_zero_registers).unwrap()]) - } + #[cfg(all(feature = "plusplus", not(feature = "integer_plusplus")))] + const ESTIMATES: &'static [f64] = &[]; + #[cfg(all(feature = "plusplus", not(feature = "integer_plusplus")))] + const BIASES: &'static [f64] = &[]; + #[cfg(all(feature = "plusplus", feature = "integer_plusplus"))] + const ESTIMATES: &'static [u32] = &[]; + #[cfg(all(feature = "plusplus", feature = "integer_plusplus"))] + const BIASES: &'static [i32] = &[]; } } }; @@ -290,7 +335,9 @@ mod tests { assert_eq!(exponent as u8, P::EXPONENT); } - macro_rules! test_error_rate_simmetry { + /// Macro rule to generate test to verify that the estimates are sorted in ascending order + /// for a given precision. + macro_rules! test_estimates_sorted { ($($exponent:expr),*) => { $( paste::paste! { @@ -299,19 +346,7 @@ mod tests { fn []() { test_error_rate_simmetry::<[]>(); } - } - )* - }; - } - test_error_rate_simmetry!(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18); - - /// Macro rule to generate test to verify that the estimates are sorted in ascending order - /// for a given precision. - macro_rules! test_estimates_sorted { - ($($exponent:expr),*) => { - $( - paste::paste! { #[test] #[cfg(all(feature = "precision_" $exponent, feature="plusplus"))] fn []() { diff --git a/src/registers.rs b/src/registers.rs index 079786c..89a0d48 100644 --- a/src/registers.rs +++ b/src/registers.rs @@ -3,7 +3,7 @@ use core::fmt::Debug; use crate::prelude::*; -use crate::utils::{FloatOps, Number, Zero}; +use crate::utils::{FloatOps, Zero}; mod packed_array; pub use packed_array::{AllArrays, Array, ArrayRegister}; @@ -26,12 +26,12 @@ pub trait Registers: Eq + PartialEq + Clone + Debug + Send + Sync + Default { /// Iterator over the registers. - type Iter<'register>: Iterator + type Iter<'register>: ExactSizeIterator where Self: 'register; /// Iterator over the registers zipped with another set of registers. - type IterZipped<'registers>: Iterator + type IterZipped<'registers>: ExactSizeIterator where Self: 'registers; diff --git a/src/registers/packed_array.rs b/src/registers/packed_array.rs index c423d64..f3f599a 100644 --- a/src/registers/packed_array.rs +++ b/src/registers/packed_array.rs @@ -10,12 +10,12 @@ //! packed array, expecially in the case of bridge registers, i.e. registers that span two words. use super::{ - Bits, Bits1, Bits2, Bits3, Bits4, Bits5, Bits6, Bits7, Bits8, FloatOps, Matrix, Number, - Precision, Registers, Zero, + Bits, Bits1, Bits2, Bits3, Bits4, Bits5, Bits6, Bits7, Bits8, FloatOps, Matrix, Precision, + Registers, Zero, }; -use crate::utils::{PositiveInteger, VariableWord}; +use crate::utils::PositiveInteger; +use crate::utils::VariableWord; use core::fmt::Debug; -use core::iter::Map; use core::marker::PhantomData; #[cfg(feature = "std")] @@ -79,7 +79,7 @@ fn extract_value_from_word(word: u64, offset: u8) -> V::Word { "The offset ({offset} + {}) should be less than or equal to 64", V::NUMBER_OF_BITS, ); - unsafe { V::Word::unchecked_from_u64((word >> (64 - V::NUMBER_OF_BITS - offset)) & V::MASK) } + unsafe { V::unchecked_from_u64((word >> (64 - V::NUMBER_OF_BITS - offset)) & V::MASK) } } #[inline] @@ -179,7 +179,7 @@ fn extract_bridge_value_from_word( let word = higher_bits | lower_bits; - unsafe { V::Word::unchecked_from_u64(word) } + unsafe { V::unchecked_from_u64(word) } } /// Extracts a bridge register from a starting word and an ending word. @@ -264,9 +264,9 @@ mod test_extract_bridge_value_from_word { /// Iterator over the registers of two packed arrays. pub struct ArrayIter { /// Number of values to be iterated in total. - total_values: u64, + total_values: usize, /// The current register being processed. - value_index: u64, + value_index: usize, /// The current column of the matrix being processed. word_index: usize, /// The offset in bits of the current word. In the case of bridge registers, this will be the @@ -282,7 +282,7 @@ pub struct ArrayIter { impl ArrayIter { #[inline] /// Creates a new instance of the register tuple iterator. - fn new(arrays: [A; M], total_values: u64) -> Self + fn new(arrays: [A; M], total_values: usize) -> Self where [A; M]: Matrix, { @@ -302,10 +302,10 @@ impl ArrayIter { } /// Implementation of the `Iterator` trait for [`ArrayIter`]. -impl<'array, const PACKED: bool, const N: usize, const M: usize, V: VariableWord> Iterator - for ArrayIter<&'array Array, M> +impl<'array, const PACKED: bool, const N: usize, V: VariableWord> Iterator + for ArrayIter<&'array Array, 2> { - type Item = [V::Word; M]; + type Item = [V::Word; 2]; fn next(&mut self) -> Option { if self.total_values == self.value_index { @@ -321,7 +321,7 @@ impl<'array, const PACKED: bool, const N: usize, const M: usize, V: VariableWord let current_column = self.column; self.word_index += 1; self.column = self.arrays.column(self.word_index); - let values = extract_bridge_value_from_words::( + let values = extract_bridge_value_from_words::( current_column, self.column, self.word_offset, @@ -330,7 +330,7 @@ impl<'array, const PACKED: bool, const N: usize, const M: usize, V: VariableWord self.word_offset = V::NUMBER_OF_BITS - (64 - self.word_offset); values } else { - let values = extract_value_from_words::(self.column, self.word_offset); + let values = extract_value_from_words::(self.column, self.word_offset); self.word_offset += V::NUMBER_OF_BITS; if self.value_index < self.total_values && (PACKED && self.word_offset == 64 @@ -347,13 +347,65 @@ impl<'array, const PACKED: bool, const N: usize, const M: usize, V: VariableWord fn size_hint(&self) -> (usize, Option) { let remaining_values = self.total_values - self.value_index; - (remaining_values as usize, Some(remaining_values as usize)) + (remaining_values, Some(remaining_values)) + } +} + +/// Implementation of the `Iterator` trait for [`ArrayIter`]. +impl<'array, const PACKED: bool, const N: usize, V: VariableWord> Iterator + for ArrayIter<&'array Array, 1> +{ + type Item = V::Word; + + fn next(&mut self) -> Option { + if self.total_values == self.value_index { + return None; + } + + self.value_index += 1; + + // If the current register is inside the current word and not a bridge register, we can + // extract the register directly from the word. + Some( + if >::is_bridge_offset(self.word_offset) { + let current_column = self.column; + self.word_index += 1; + self.column = self.arrays.column(self.word_index); + let [value] = extract_bridge_value_from_words::( + current_column, + self.column, + self.word_offset, + ); + + self.word_offset = V::NUMBER_OF_BITS - (64 - self.word_offset); + value + } else { + let [value] = extract_value_from_words::(self.column, self.word_offset); + self.word_offset += V::NUMBER_OF_BITS; + if self.value_index < self.total_values + && (PACKED && self.word_offset == 64 + || !PACKED && self.word_offset == V::NUMBER_OF_BITS * V::NUMBER_OF_ENTRIES) + { + self.word_offset = 0; + self.word_index += 1; + self.column = self.arrays.column(self.word_index); + } + value + }, + ) + } + + fn size_hint(&self) -> (usize, Option) { + let remaining_values = self.total_values - self.value_index; + (remaining_values, Some(remaining_values)) } } /// Implementation of the `ExactSizeIterator` trait for [`ArrayIter`]. impl<'array, const PACKED: bool, const N: usize, const M: usize, V: VariableWord> ExactSizeIterator for ArrayIter<&'array Array, M> +where + Self: Iterator, { } @@ -374,36 +426,6 @@ impl AsRef<[u64; N]> for Ar } } -impl< - const N: usize, - const PACKED1: bool, - const PACKED2: bool, - V1: VariableWord, - V2: VariableWord, - > AsRef> for Array -{ - #[inline] - #[allow(unsafe_code)] - fn as_ref(&self) -> &Array { - unsafe { core::mem::transmute(self) } - } -} - -impl< - const N: usize, - const PACKED1: bool, - const PACKED2: bool, - V1: VariableWord, - V2: VariableWord, - > AsMut> for Array -{ - #[inline] - #[allow(unsafe_code)] - fn as_mut(&mut self) -> &mut Array { - unsafe { &mut *(self as *mut Array as *mut Array) } - } -} - macro_rules! impl_as_ref_mut { ($($typ:ty),*) => { $( @@ -414,7 +436,7 @@ macro_rules! impl_as_ref_mut { #[allow(unsafe_code)] fn as_ref(&self) -> &[$typ] { let words_u64: &[u64] = self.words.as_ref(); - unsafe { core::slice::from_raw_parts(words_u64.as_ptr() as *const $typ, words_u64.len() * 8 / core::mem::size_of::<$typ>()) } + unsafe { core::slice::from_raw_parts(words_u64.as_ptr().cast::<$typ>(), words_u64.len() * 8 / core::mem::size_of::<$typ>()) } } } @@ -425,7 +447,7 @@ macro_rules! impl_as_ref_mut { #[allow(unsafe_code)] fn as_mut(&mut self) -> &mut [$typ] { let words_u64: &mut [u64] = self.words.as_mut(); - unsafe { core::slice::from_raw_parts_mut(words_u64.as_mut_ptr() as *mut $typ, words_u64.len() * 8 / core::mem::size_of::<$typ>()) } + unsafe { core::slice::from_raw_parts_mut(words_u64.as_mut_ptr().cast::<$typ>(), words_u64.len() * 8 / core::mem::size_of::<$typ>()) } } } )* @@ -434,7 +456,7 @@ macro_rules! impl_as_ref_mut { impl_as_ref_mut!(u8, u16, u32, u64); -macro_rules! impl_as_bytes_ref_mut { +macro_rules! impl_to_bytes_ref_mut { ($($number:expr),*) => { $( impl AsRef<[[u8; $number]]> @@ -444,7 +466,7 @@ macro_rules! impl_as_bytes_ref_mut { #[allow(unsafe_code)] fn as_ref(&self) -> &[[u8; $number]] { let words_u64: &[u64] = self.words.as_ref(); - unsafe { core::slice::from_raw_parts(words_u64.as_ptr() as *const [u8; $number], words_u64.len() * 8 / $number) } + unsafe { core::slice::from_raw_parts(words_u64.as_ptr().cast::<[u8; $number]>(), words_u64.len() * 8 / $number) } } } @@ -455,19 +477,19 @@ macro_rules! impl_as_bytes_ref_mut { #[allow(unsafe_code)] fn as_mut(&mut self) -> &mut [[u8; $number]] { let words_u64: &mut [u64] = self.words.as_mut(); - unsafe { core::slice::from_raw_parts_mut(words_u64.as_mut_ptr() as *mut [u8; $number], words_u64.len() * 8 / $number) } + unsafe { core::slice::from_raw_parts_mut(words_u64.as_mut_ptr().cast::<[u8; $number]>(), words_u64.len() * 8 / $number) } } } )* }; } -impl_as_bytes_ref_mut!(3, 5, 6, 7); +impl_to_bytes_ref_mut!(3, 5, 6, 7); impl Array { #[inline] - fn iter_values(&self, len: u64) -> Map, fn([V::Word; 1]) -> V::Word> { - ArrayIter::new([self], len).map(|values| values[0]) + fn iter_values(&self, len: usize) -> ArrayIter<&Self, 1> { + ArrayIter::new([self], len) } } @@ -486,13 +508,10 @@ mod test_iter_values { // We populate the array with the values from the reference. for (i, value) in reference.iter().enumerate() { - array.set(i as u64, *value); + array.set(i, *value); } - let iter: Map< - ArrayIter<&Array, 1>, - fn([::Word; 1]) -> ::Word, - > = array.iter_values(M as u64); + let iter: ArrayIter<&Array, 1> = array.iter_values(M); assert_eq!(iter.len(), M, "The iterator should have a length of {}", M); for (i, (reference_value, array_value)) in reference.iter().zip(iter).enumerate() { @@ -506,7 +525,7 @@ impl Array { fn iter_values_zipped<'words>( &'words self, other: &'words Self, - len: u64, + len: usize, ) -> ArrayIter<&'_ Self, 2> { ArrayIter::new([self, other], len) } @@ -534,14 +553,13 @@ mod test_iter_values_zipped { // We populate an array with the values from the reference, and // we populate the reverse array with the values in reverse order. for (i, value) in reference.iter().enumerate() { - array.set(i as u64, *value); - rev_array.set((M - 1 - i) as u64, *value); + array.set(i, *value); + rev_array.set(M - 1 - i, *value); } - let iter: ArrayIter<&Array, 2> = - array.iter_values_zipped(&rev_array, M as u64); + let iter: ArrayIter<&Array, 2> = array.iter_values_zipped(&rev_array, M); let swapped_iter: ArrayIter<&Array, 2> = - rev_array.iter_values_zipped(&array, M as u64); + rev_array.iter_values_zipped(&array, M); assert_eq!(iter.len(), M, "The iterator should have a length of {}", M); assert_eq!( swapped_iter.len(), @@ -588,7 +606,7 @@ mod test_clear_array { // We populate the array with the values from the reference. for (i, value) in reference.iter().enumerate() { - array.set(i as u64, *value); + array.set(i, *value); } // We clear the array. @@ -597,7 +615,7 @@ mod test_clear_array { // We check that all the values in the array are zero. for i in 0..M { assert_eq!( - array.get(i as u64), + array.get(i), V::Word::ZERO, "The value at position ({i}) should be zero." ); @@ -626,17 +644,17 @@ impl Array { #[inline] /// Returns the number of values in the array. - const fn number_of_values() -> u64 { + const fn number_of_values() -> usize { if PACKED { - N as u64 * 64 / V::NUMBER_OF_BITS_U64 + N * 64 / V::NUMBER_OF_BITS_USIZE } else { - N as u64 * V::NUMBER_OF_ENTRIES_U64 + N * V::NUMBER_OF_ENTRIES_USIZE } } #[inline] /// Returns the value stored at the given index. - fn get(&self, index: u64) -> V::Word { + fn get(&self, index: usize) -> V::Word { debug_assert!( index < Self::number_of_values(), "The index {index} should be less than {} (the number of registers) in an object of type {}", @@ -676,7 +694,7 @@ impl Array { /// # Arguments /// * `index` - The index at which the value is to be set. /// * `value` - The value to be set. - pub fn set(&mut self, index: u64, value: V::Word) { + pub fn set(&mut self, index: usize, value: V::Word) { let (word_index, relative_value_offset) = split_index::(index); if Self::is_bridge_offset(relative_value_offset) { @@ -702,7 +720,7 @@ impl Array { /// /// # Returns /// The previous value at the given index and the new value. - fn set_apply(&mut self, index: u64, ops: F) -> (V::Word, V::Word) + fn set_apply(&mut self, index: usize, ops: F) -> (V::Word, V::Word) where F: Fn(V::Word) -> V::Word, { @@ -716,13 +734,7 @@ impl Array { let new_value = ops(value); insert_bridge_value_into_word::(low, high, relative_value_offset, new_value.into()); - debug_assert_eq!( - self.get(index), - new_value, - "The value at index {} should be equal to the new value {}", - index, - new_value - ); + debug_assert_eq!(self.get(index), new_value); (value, new_value) } else { @@ -734,13 +746,7 @@ impl Array { new_value.into(), ); - debug_assert_eq!( - self.get(index), - new_value, - "The value at index {} should be equal to the new value {}", - index, - new_value - ); + debug_assert_eq!(self.get(index), new_value); (value, new_value) } @@ -760,7 +766,7 @@ impl Array { let mut value_offset = 0; for i in 0..N { let mut number_of_values_in_word = if PACKED { - (64 - value_offset as u64) / V::NUMBER_OF_BITS_U64 + (64 - u64::from(value_offset)) / V::NUMBER_OF_BITS_U64 } else { V::NUMBER_OF_ENTRIES_U64 }; @@ -854,20 +860,64 @@ pub trait AllArrays: { } +impl

AllArrays for P where + P: ArrayRegister + + ArrayRegister + + ArrayRegister + + ArrayRegister + + ArrayRegister + + ArrayRegister + + ArrayRegister + + ArrayRegister +{ +} + +#[allow(unsafe_code)] +#[inline] +#[expect( + clippy::cast_possible_truncation, + reason = "The value is guaranteed to be less than 256" +)] +/// Method to convert a usize to a u8. +/// +/// # Arguments +/// * `value` - The value to be converted. +/// +/// # Safety +/// This method needs to be used with caution, as it will truncate values +/// that are greater than 255. +const unsafe fn usize_to_u8(value: usize) -> u8 { + debug_assert!(value <= 255, "The value should be less than 256"); + value as u8 +} + +const LOG2_USIZE: usize = (core::mem::size_of::() * 8).trailing_zeros() as usize; + +#[allow(unsafe_code)] /// Extracts the word position and the relative register offset from the packed index. -const fn split_packed_index(index: u64) -> (usize, u8) { - let absolute_register_offset: u64 = V::NUMBER_OF_BITS_U64 * index; - let word_index: u64 = absolute_register_offset >> 6; - let relative_register_offset = (absolute_register_offset - word_index * 64) as u8; - (word_index as usize, relative_register_offset) +/// +/// # Safety +/// This method employs unsafe code to convert a usize to a u8, as it guarantees +/// that the value is less than 256. +const fn split_packed_index(index: usize) -> (usize, u8) { + let absolute_register_offset: usize = (V::NUMBER_OF_BITS_USIZE) * index; + let word_index: usize = absolute_register_offset >> LOG2_USIZE; + let relative_register_offset = + unsafe { usize_to_u8(absolute_register_offset - word_index * 64) }; + (word_index, relative_register_offset) } +#[allow(unsafe_code)] /// Extracts the word position and the relative register offset from a non-packed index. -const fn split_not_packed_index(index: u64) -> (usize, u8) { - let word_index: u64 = index / V::NUMBER_OF_ENTRIES_U64; +/// +/// # Safety +/// This method employs unsafe code to convert a usize to a u8, as it guarantees +/// that the value is less than 256. +const fn split_not_packed_index(index: usize) -> (usize, u8) { + let word_index: usize = index / V::NUMBER_OF_ENTRIES_USIZE; let relative_register_offset: u8 = - V::NUMBER_OF_BITS * (index - word_index * V::NUMBER_OF_ENTRIES_U64) as u8; - (word_index as usize, relative_register_offset) + V::NUMBER_OF_BITS * unsafe { usize_to_u8(index - word_index * V::NUMBER_OF_ENTRIES_USIZE) }; + (word_index, relative_register_offset) } #[cfg(test)] @@ -880,14 +930,14 @@ mod test_split_index { #[test_variable_words] /// Test the extraction of the word index and the relative register offset from the packed index. fn test_split_packed_index() { - let minimum_index = 0_u64; + let minimum_index = 0_usize; // The maximal precision is 18, so the maximum number of registers is 2^18, // hence the maximum index is 2^18 - 1. - let maximum_index = 1_u64 << 18; + let maximum_index = 1_usize << 18; // We iter all possible values of the index. for index in minimum_index..maximum_index { - let expected_word_index = (V::NUMBER_OF_BITS_U64 * index) / 64; - let expected_relative_register_offset = (V::NUMBER_OF_BITS_U64 * index) % 64; + let expected_word_index = (usize::from(V::NUMBER_OF_BITS) * index) / 64; + let expected_relative_register_offset = (usize::from(V::NUMBER_OF_BITS) * index) % 64; let (word_index, relative_register_offset) = split_packed_index::(index); assert_eq!( word_index, expected_word_index as usize, @@ -907,15 +957,15 @@ mod test_split_index { #[test_variable_words] /// Test the extraction of the word index and the relative register offset from the non-packed index. fn test_split_not_packed_index() { - let minimum_index = 0_u64; + let minimum_index = 0_usize; // The maximal precision is 18, so the maximum number of registers is 2^18, // hence the maximum index is 2^18 - 1. - let maximum_index = 1_u64 << 18; + let maximum_index = 1_usize << 18; // We iter all possible values of the index. for index in minimum_index..maximum_index { - let expected_word_index = index / V::NUMBER_OF_ENTRIES_U64; + let expected_word_index = index / usize::from(V::NUMBER_OF_ENTRIES); let expected_relative_register_offset = - (index % V::NUMBER_OF_ENTRIES_U64) as u8 * V::NUMBER_OF_BITS; + (index % usize::from(V::NUMBER_OF_ENTRIES)) as u8 * V::NUMBER_OF_BITS; let (word_index, relative_register_offset) = split_not_packed_index::(index); assert_eq!( word_index, expected_word_index as usize, @@ -933,7 +983,7 @@ mod test_split_index { } } -const fn split_index(index: u64) -> (usize, u8) { +const fn split_index(index: usize) -> (usize, u8) { if PACKED { split_packed_index::(index) } else { @@ -954,7 +1004,7 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { #[cfg(feature = "precision_" $exponent)] impl Registers<[], []> for Array<{crate::utils::ceil(usize::pow(2, $exponent) * $bits, 64)}, true, []> { - type Iter<'words> = Map, fn([u8; 1]) -> u8> where Self: 'words; + type Iter<'words> = ArrayIter<&'words Self, 1> where Self: 'words; type IterZipped<'words> = ArrayIter<&'words Self, 2> where Self: 'words; @@ -981,7 +1031,7 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { for [left, right] in ], []>>::iter_registers_zipped(self, other) { let max_register = core::cmp::max(left, right); harmonic_sum += f64::integer_exp2_minus(max_register); - union_zeros += <[] as Precision>::NumberOfRegisters::from_bool(max_register.is_zero()); + union_zeros += <[] as Precision>::NumberOfRegisters::from(max_register.is_zero()); } (harmonic_sum, union_zeros) @@ -995,15 +1045,15 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { self.apply(register_function, <[] as Precision>::NUMBER_OF_REGISTERS.into()); } - #[inline(always)] + #[inline] fn set_greater(&mut self, index: <[] as Precision>::NumberOfRegisters, new_register: u8) -> (u8, u8) { - self.set_apply(index.into(), |register| core::cmp::max(register, new_register)) + self.set_apply(index.to_usize(), |register| core::cmp::max(register, new_register)) } #[inline] /// Returns the value of the register at the given index in the packed array. fn get_register(&self, index: <[] as Precision>::NumberOfRegisters) -> u8 { - self.get(index.into()) + self.get(index.to_usize()) } #[inline] @@ -1014,7 +1064,7 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { #[cfg(feature = "precision_" $exponent)] impl Registers<[], []> for Array<{crate::utils::ceil(usize::pow(2, $exponent), 64 / $bits)}, false, []> { - type Iter<'words> = Map, fn([u8; 1]) -> u8> where Self: 'words; + type Iter<'words> = ArrayIter<&'words Self, 1> where Self: 'words; type IterZipped<'words> = ArrayIter<&'words Self, 2> where Self: 'words; @@ -1041,7 +1091,7 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { for [left, right] in ], []>>::iter_registers_zipped(self, other) { let max_register = core::cmp::max(left, right); harmonic_sum += f64::integer_exp2_minus(max_register); - union_zeros += <[] as Precision>::NumberOfRegisters::from_bool(max_register.is_zero()); + union_zeros += <[] as Precision>::NumberOfRegisters::from(max_register.is_zero()); } (harmonic_sum, union_zeros) @@ -1055,15 +1105,15 @@ macro_rules! impl_packed_array_register_for_precision_and_bits { self.apply(register_function, <[] as Precision>::NUMBER_OF_REGISTERS.into()); } - #[inline(always)] + #[inline] fn set_greater(&mut self, index: <[] as Precision>::NumberOfRegisters, new_register: u8) -> (u8, u8) { - self.set_apply(index.into(), |register| core::cmp::max(register, new_register)) + self.set_apply(index.to_usize(), |register| core::cmp::max(register, new_register)) } #[inline] /// Returns the value of the register at the given index in the packed array. fn get_register(&self, index: <[] as Precision>::NumberOfRegisters) -> u8 { - self.get(index.into()) + self.get(index.to_usize()) } #[inline] diff --git a/src/utils.rs b/src/utils.rs index 14d46a5..9646715 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -10,6 +10,7 @@ //! - `word_from_registers(registers: &[u32]) -> u32`: Converts an array //! of HLL registers into a single 32-bit word. +mod to_bytes; mod composite_hash; mod constants; mod hasher_type; @@ -18,16 +19,15 @@ mod number; mod random; mod variable_word; mod variable_words; -mod as_bytes; +pub use to_bytes::ToBytes; pub use composite_hash::CompositeHash; pub use constants::*; pub use hasher_type::HasherType; pub use matrix::Matrix; -pub(crate) use number::{FloatOps, Number, PositiveInteger}; +pub(crate) use number::{FloatOps, Number, ToF64, PositiveInteger}; pub use random::*; -pub use as_bytes::AsBytes; -pub use variable_word::{VariableWord, u24, u40, u48, u56}; +pub use variable_word::{u24, u40, u48, u56, VariableWord}; pub use variable_words::VariableWords; #[cfg(feature = "std")] @@ -40,28 +40,28 @@ pub trait Named { #[cfg(feature = "std")] impl Named for u8 { fn name(&self) -> String { - format!("u8") + "u8".to_owned() } } #[cfg(feature = "std")] impl Named for u16 { fn name(&self) -> String { - format!("u16") + "u16".to_owned() } } #[cfg(feature = "std")] impl Named for u32 { fn name(&self) -> String { - format!("u32") + "u32".to_owned() } } #[cfg(feature = "std")] impl Named for u64 { fn name(&self) -> String { - format!("u64") + "u64".to_owned() } } diff --git a/src/utils/composite_hash.rs b/src/utils/composite_hash.rs index a4e4eb6..04ccfa6 100644 --- a/src/utils/composite_hash.rs +++ b/src/utils/composite_hash.rs @@ -8,22 +8,48 @@ use crate::prelude::*; /// Trait for a composite hash. pub trait CompositeHash: VariableWord { /// The number of bits in the composite hash. - const OFFSET: u8 = Self::NUMBER_OF_BITS - B::NUMBER_OF_BITS; + const OFFSET: u8 = Self::NUMBER_OF_BITS - B::NUMBER_OF_BITS - P::EXPONENT; + /// The mask for to only keep the bits used for the padding. + const PADDING_MASK: u64 = (1 << Self::OFFSET) - 1; #[allow(unsafe_code)] /// Encode the hash from the provided register value, index and the original unsplitted hash. - fn encode(register: u8, hash: u64) -> Self::Word { + /// + /// # Arguments + /// * `register` - The register value to be encoded. + /// * `hash` - The original hash to be encoded. + /// + /// # Implementation + /// The hash we receive is expected to be in the following form: + /// + /// ```text + /// | bits used for the leading zeros count | potentially unused bits | bits used for the index | + /// ``` + /// + /// We need to ensure that the higher bits are the bits of the index, as we will + /// sort the hashes and the index needs to be the primary sorting key. Next, we + /// want to sort by the number of leading zeros, followed by any eventual unused bits. + /// The resulting hash therefore, will be in the following form: + /// + /// ```text + /// | bits used for the index | number of leading zeros | potentially unused bits | + /// ``` + fn encode(register: u8, index: P::NumberOfRegisters, hash: u64) -> Self::Word { debug_assert!(register > 0); + debug_assert!(u64::from(register) <= B::MASK); + debug_assert!(index < P::NUMBER_OF_REGISTERS); - // We convert the hash into the word - let mut hash = unsafe { Self::Word::unchecked_from_u64(hash & Self::MASK) }; + // We remove the portion used for the index and apply the padding mask, + // which ensures that now only the bits used for the padding (if any) are kept. + let mut hash = (hash >> P::EXPONENT) & Self::PADDING_MASK; - // We remove the highers B bits from the hash which will be - // replaced by the register value. - hash &= !(unsafe { Self::Word::unchecked_from_u64(B::MASK) } << Self::OFFSET); - hash |= Self::Word::from(register) << Self::OFFSET; + // Next, we place the index in the rightmost bits of the hash. + hash |= index.into() << (Self::NUMBER_OF_BITS - P::EXPONENT); - hash + // Next, we place the register in the rightmost bits of the hash, minus the bits used for the index. + hash |= u64::from(register) << Self::OFFSET; + + unsafe { Self::unchecked_from_u64(hash) } } #[allow(unsafe_code)] @@ -31,20 +57,18 @@ pub trait CompositeHash: VariableWord { fn decode(hash: Self::Word) -> (u8, P::NumberOfRegisters) { // We extract the index from the rightmost bits of the hash. let index = unsafe { - P::NumberOfRegisters::unchecked_from_u64(>::into( - hash & ((Self::Word::ONE << P::EXPONENT) - Self::Word::ONE), - )) - }; - // Next, we extract the register from the leftmost bits of the hash. - let register = unsafe { - u8::unchecked_from_u64(>::into(hash) >> Self::OFFSET) + P::NumberOfRegisters::unchecked_from_u64( + (hash >> (Self::NUMBER_OF_BITS - P::EXPONENT)).into(), + ) }; + // Next, we extract the register from the rightmost bits of the hash, minus the bits used for the index. + let register = unsafe { u8::unchecked_from_u64((hash >> Self::OFFSET).into() & B::MASK) }; (register, index) } } -/// Macro to implement the appropriate CompositeHash trait for a given type. +/// Macro to implement the appropriate [`CompositeHash`] trait for a given type. macro_rules! impl_composite_hash { ($w:ty, $(($exponent:expr, $bits:ty)),*) => { $( @@ -131,9 +155,52 @@ impl_composite_hash!( (18, Bits1) ); - impl CompositeHash for u32 {} impl CompositeHash for u40 {} impl CompositeHash for u48 {} impl CompositeHash for u56 {} -impl CompositeHash for u64 {} \ No newline at end of file +impl CompositeHash for u64 {} + +#[cfg(test)] +mod tests { + use super::*; + use hyperloglog_derive::test_all_precisions_and_bits; + + fn test_composite_hash_for_word, W: CompositeHash>() { + let data_type = core::any::type_name::(); + for ((pseudo_hash, register), index) in iter_random_values::(1_000, None, None) + .zip(iter_random_values::(1_000, None, None)) + .zip(iter_random_values::( + 1_000, + Some(P::NUMBER_OF_REGISTERS), + None, + )) + { + let register = register.max(1); + let composed_hash: W::Word = W::encode(register, index, pseudo_hash); + let (decoded_register, decoded_index) = W::decode(composed_hash); + assert!( + decoded_register > 0, + "{data_type}) Failed to decode register - register must be greater than 0" + ); + assert!( + u64::from(decoded_register) < B::MASK, + "{data_type}) Failed to decode index - index must be less than the mask" + ); + assert_eq!( + register, decoded_register, + "{data_type}) Failed to decode register" + ); + assert_eq!(index, decoded_index, "{data_type}) Failed to decode index"); + } + } + + #[test_all_precisions_and_bits] + fn test_composite_hash>() { + test_composite_hash_for_word::(); + test_composite_hash_for_word::(); + test_composite_hash_for_word::(); + test_composite_hash_for_word::(); + test_composite_hash_for_word::(); + } +} diff --git a/src/utils/constants.rs b/src/utils/constants.rs index da06858..ddb0b1b 100644 --- a/src/utils/constants.rs +++ b/src/utils/constants.rs @@ -28,12 +28,12 @@ macro_rules! impl_constants { ($($t:ty)*) => ($( impl One for $t { const ONE: Self = 1; - #[inline(always)] + #[inline] fn is_one(&self) -> bool { *self == 1 } } impl Zero for $t { const ZERO: Self = 0; - #[inline(always)] + #[inline] fn is_zero(&self) -> bool { *self == 0 } } #[cfg(feature = "plusplus")] diff --git a/src/utils/number.rs b/src/utils/number.rs index a456cd4..5656d33 100644 --- a/src/utils/number.rs +++ b/src/utils/number.rs @@ -3,8 +3,8 @@ use crate::utils::{One, Zero}; use core::fmt::{Debug, Display}; use core::hash::Hash; use core::ops::{ - Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, Div, Mul, Neg, Not, Shl, Shr, Sub, - SubAssign, Rem + Add, AddAssign, BitAnd, BitAndAssign, BitOr, BitOrAssign, Div, Mul, Neg, Not, Rem, Shl, Shr, + Sub, SubAssign, }; /// A trait for numbers. @@ -20,6 +20,7 @@ pub trait Number: + Display + Zero + One + + From + PartialOrd + Send + Sync @@ -27,16 +28,20 @@ pub trait Number: #[must_use] /// A method to subtract the second number from the first number, returning zero if the result is negative. fn saturating_zero_sub(self, other: Self) -> Self; +} - #[must_use] - #[inline] - /// Converts a boolean value to a number. - fn from_bool(value: bool) -> Self { - if value { - Self::ONE - } else { - Self::ZERO - } +/// A trait defining numbers that can be converted to an f64 without loss of precision. +pub trait ToF64 { + /// Converts the number to an f64. + fn to_f64(self) -> f64; +} + +impl ToF64 for T +where + f64: From, +{ + fn to_f64(self) -> f64 { + f64::from(self) } } @@ -66,10 +71,6 @@ pub trait PositiveInteger: /// * If the value is too large to be converted to a positive integer number. fn try_from_u64(value: u64) -> Result; - #[allow(unsafe_code)] - /// Converts a `u64` to a positive integer number without checking the value. - unsafe fn unchecked_from_u64(value: u64) -> Self; - /// Converts the positive integer number to a `usize`. fn to_usize(self) -> usize; } @@ -80,7 +81,7 @@ pub(crate) trait FloatOps: Number + Neg { fn integer_exp2_minus(register: u8) -> Self; /// Returns the value of 2^(-register), including negative registers. - fn integer_exp2_minus_signed(register: i8) -> Self; + fn integer_exp2_minus_signed(register: i16) -> Self; /// Returns the value of 2^(register) fn integer_exp2(register: u8) -> Self; @@ -105,7 +106,7 @@ macro_rules! impl_number { ($($t:ty),*) => { $( impl Number for $t { - #[inline(always)] + #[inline] fn saturating_zero_sub(self, other: Self) -> Self { debug_assert!(self >= Self::ZERO, "The first number must be positive, got: {}", self); debug_assert!(other >= Self::ZERO, "The second number must be positive, got: {}", other); @@ -131,18 +132,12 @@ macro_rules! impl_positive_integer_number { impl PositiveInteger for $t { type TryFromU64Error = <$t as core::convert::TryFrom>::Error; - #[inline(always)] + #[inline] fn try_from_u64(value: u64) -> Result { <$t as core::convert::TryFrom>::try_from(value) } - #[inline(always)] - #[allow(unsafe_code)] - unsafe fn unchecked_from_u64(value: u64) -> Self { - value as Self - } - - #[inline(always)] + #[inline] #[must_use] fn to_usize(self) -> usize { usize::try_from(self).unwrap() @@ -163,10 +158,12 @@ impl FloatOps for f64 { #[must_use] #[inline] - fn integer_exp2_minus_signed(register: i8) -> Self { - f64::from_le_bytes( - (u64::try_from(1023_i16 - i16::from(register)).unwrap() << 52).to_le_bytes(), - ) + fn integer_exp2_minus_signed(register: i16) -> Self { + debug_assert!( + register > -1024, + "The register must be greater than -1024, got: {register}", + ); + f64::from_le_bytes((u64::try_from(1023_i16 - register).unwrap() << 52).to_le_bytes()) } #[must_use] @@ -195,8 +192,7 @@ mod test_integer_exp2_minus { ); assert_eq!( f64::from_bits( - u64::max_value().wrapping_sub(u64::from(register_value as u64)) << 54 - >> 2 + u64::max_value().wrapping_sub(u64::from(register_value as u64)) << 54 >> 2 ), f64::integer_exp2_minus(register_value as u8), "Expected: 2^(-{}), Got: {}", diff --git a/src/utils/random.rs b/src/utils/random.rs index b7dc7e5..00338b2 100644 --- a/src/utils/random.rs +++ b/src/utils/random.rs @@ -1,6 +1,6 @@ //! Random number generators. -use super::{One, Zero, PositiveInteger, VariableWord}; +use super::{One, VariableWord, Zero}; #[must_use] #[inline] @@ -60,17 +60,15 @@ pub fn iter_var_len_random_values( let size = minimal_size + if delta > 0 { state % delta } else { 0 }; state = splitmix64(state); - let actual_maximal_value: V::Word = maximal_value.map_or( - unsafe { V::Word::unchecked_from_u64(V::MASK) }, - |mv| unsafe { - V::Word::ONE + V::Word::unchecked_from_u64(xorshift64(state) & V::MASK) % mv - }, - ); + let actual_maximal_value: V::Word = maximal_value + .map_or(unsafe { V::unchecked_from_u64(V::MASK) }, |mv| unsafe { + V::Word::ONE + V::unchecked_from_u64(xorshift64(state) & V::MASK) % mv + }); state = splitmix64(state); (0..size).map(move |_| { state = xorshift64(state); - unsafe { V::Word::unchecked_from_u64(state & V::MASK) % actual_maximal_value } + unsafe { V::unchecked_from_u64(state & V::MASK) % actual_maximal_value } }) } diff --git a/src/utils/as_bytes.rs b/src/utils/to_bytes.rs similarity index 50% rename from src/utils/as_bytes.rs rename to src/utils/to_bytes.rs index ef8e622..ea6ed5b 100644 --- a/src/utils/as_bytes.rs +++ b/src/utils/to_bytes.rs @@ -1,57 +1,57 @@ -//! Submodule providing the trait AsBytes +//! Submodule providing the trait [`ToBytes`] /// Trait for an object that can be represented as bytes. -pub trait AsBytes { +pub trait ToBytes { /// The bytes representation of the object. type Bytes; /// Returns the bytes representation of the object. - fn as_bytes(self) -> Self::Bytes; + fn to_bytes(self) -> Self::Bytes; } -impl AsBytes for u8 { +impl ToBytes for u8 { type Bytes = [u8; 1]; #[inline] - fn as_bytes(self) -> Self::Bytes { + fn to_bytes(self) -> Self::Bytes { [self] } } -impl AsBytes for u16 { +impl ToBytes for u16 { type Bytes = [u8; 2]; #[inline] - fn as_bytes(self) -> Self::Bytes { + fn to_bytes(self) -> Self::Bytes { self.to_be_bytes() } } -impl AsBytes for u32 { +impl ToBytes for u32 { type Bytes = [u8; 4]; #[inline] - fn as_bytes(self) -> Self::Bytes { + fn to_bytes(self) -> Self::Bytes { self.to_be_bytes() } } -impl AsBytes for u64 { +impl ToBytes for u64 { type Bytes = [u8; 8]; #[inline] - fn as_bytes(self) -> Self::Bytes { + fn to_bytes(self) -> Self::Bytes { self.to_be_bytes() } } #[cfg(test)] mod tests { - use crate::prelude::*; use super::*; + use crate::prelude::*; #[test] - fn test_as_bytes() { + fn test_to_bytes() { let u8_value = 42u8; let u16_value = 42u16; let u24_value = u24::from(42_u32); @@ -61,13 +61,13 @@ mod tests { let u56_value = u56::from(42_u16); let u64_value = 42u64; - assert_eq!(u8_value.as_bytes(), [42]); - assert_eq!(u16_value.as_bytes(), [0, 42]); - assert_eq!(u24_value.as_bytes(), [0, 0, 42]); - assert_eq!(u32_value.as_bytes(), [0, 0, 0, 42]); - assert_eq!(u40_value.as_bytes(), [0, 0, 0, 0, 42]); - assert_eq!(u48_value.as_bytes(), [0, 0, 0, 0, 0, 42]); - assert_eq!(u56_value.as_bytes(), [0, 0, 0, 0, 0, 0, 42]); - assert_eq!(u64_value.as_bytes(), [0, 0, 0, 0, 0, 0, 0, 42]); + assert_eq!(u8_value.to_bytes(), [42]); + assert_eq!(u16_value.to_bytes(), [0, 42]); + assert_eq!(u24_value.to_bytes(), [0, 0, 42]); + assert_eq!(u32_value.to_bytes(), [0, 0, 0, 42]); + assert_eq!(u40_value.to_bytes(), [0, 0, 0, 0, 42]); + assert_eq!(u48_value.to_bytes(), [0, 0, 0, 0, 0, 42]); + assert_eq!(u56_value.to_bytes(), [0, 0, 0, 0, 0, 0, 42]); + assert_eq!(u64_value.to_bytes(), [0, 0, 0, 0, 0, 0, 0, 42]); } -} \ No newline at end of file +} diff --git a/src/utils/variable_word.rs b/src/utils/variable_word.rs index 7cf11f7..63bc030 100644 --- a/src/utils/variable_word.rs +++ b/src/utils/variable_word.rs @@ -9,58 +9,118 @@ use hyperloglog_derive::VariableWord; pub trait VariableWord: Send + Sync + Clone + Copy + Debug + Default { /// The number of bits in the word. const NUMBER_OF_BITS: u8; + /// The number of bits in the word as a usize. + const NUMBER_OF_BITS_USIZE: usize = Self::NUMBER_OF_BITS as usize; /// The number of bits in the word as a u64. const NUMBER_OF_BITS_U64: u64 = Self::NUMBER_OF_BITS as u64; /// The number of entries in a u64. const NUMBER_OF_ENTRIES: u8 = 64 / Self::NUMBER_OF_BITS; + /// The number of entries in a u64 as a usize. + const NUMBER_OF_ENTRIES_USIZE: usize = Self::NUMBER_OF_ENTRIES as usize; /// The number of entries in a u64. const NUMBER_OF_ENTRIES_U64: u64 = Self::NUMBER_OF_ENTRIES as u64; /// The mask for the word. const MASK: u64; /// The word type. type Word: PositiveInteger + TryInto + TryInto + TryInto; + + #[allow(unsafe_code)] + /// Converts the word to a u64. + /// + /// # Safety + /// This method is unsafe because it may return a value that may truncate the word. + /// It needs to be used with caution and where appropriate. + unsafe fn unchecked_from_u64(value: u64) -> Self::Word; } /// Virtual word with 24 bits. #[allow(non_camel_case_types)] -#[derive(VariableWord)] +#[derive(Clone, VariableWord)] pub struct u24(u32); /// Virtual word with 40 bits. #[allow(non_camel_case_types)] -#[derive(VariableWord)] +#[derive(Clone, VariableWord)] pub struct u40(u64); /// Virtual word with 48 bits. #[allow(non_camel_case_types)] -#[derive(VariableWord)] +#[derive(Clone, VariableWord)] pub struct u48(u64); /// Virtual word with 56 bits. #[allow(non_camel_case_types)] -#[derive(VariableWord)] +#[derive(Clone, VariableWord)] pub struct u56(u64); impl VariableWord for u8 { const NUMBER_OF_BITS: u8 = 8; type Word = u8; const MASK: u64 = 0xFF; + + #[inline] + #[allow(unsafe_code)] + #[expect( + clippy::cast_possible_truncation, + reason = "The value is checked to be within the bounds and the method is marked as unsafe." + )] + unsafe fn unchecked_from_u64(value: u64) -> Self { + debug_assert!( + value <= ::MASK, + "The value is too large for the number." + ); + value as Self + } } impl VariableWord for u16 { const NUMBER_OF_BITS: u8 = 16; type Word = u16; const MASK: u64 = 0xFFFF; + + #[inline] + #[allow(unsafe_code)] + #[expect( + clippy::cast_possible_truncation, + reason = "The value is checked to be within the bounds and the method is marked as unsafe." + )] + unsafe fn unchecked_from_u64(value: u64) -> Self { + debug_assert!( + value <= ::MASK, + "The value is too large for the number." + ); + value as Self + } } impl VariableWord for u32 { const NUMBER_OF_BITS: u8 = 32; type Word = u32; const MASK: u64 = 0xFFFF_FFFF; + + #[inline] + #[allow(unsafe_code)] + #[expect( + clippy::cast_possible_truncation, + reason = "The value is checked to be within the bounds and the method is marked as unsafe." + )] + unsafe fn unchecked_from_u64(value: u64) -> Self { + debug_assert!( + value <= ::MASK, + "The value is too large for the number." + ); + value as Self + } } impl VariableWord for u64 { const NUMBER_OF_BITS: u8 = 64; type Word = u64; const MASK: u64 = 0xFFFF_FFFF_FFFF_FFFF; + + #[inline] + #[allow(unsafe_code)] + unsafe fn unchecked_from_u64(value: u64) -> Self { + value + } } diff --git a/src/utils/variable_words.rs b/src/utils/variable_words.rs index bd45923..13a9f68 100644 --- a/src/utils/variable_words.rs +++ b/src/utils/variable_words.rs @@ -6,7 +6,7 @@ use core::slice::Iter; /// Trait for arrays of words. pub trait VariableWords { /// The type of the iterator over the words. - type Iter<'words>: ExactSizeIterator + type Words<'words>: ExactSizeIterator + DoubleEndedIterator where W: 'words, Self: 'words; @@ -21,7 +21,7 @@ pub trait VariableWords { fn sorted_insert_with_len(&mut self, value: W::Word, len: usize) -> bool; /// Returns an iterator over the words. - fn iter_variable_words<'words>(&'words self, len: usize) -> Self::Iter<'words> + fn iter_variable_words<'words>(&'words self, len: usize) -> Self::Words<'words> where W: 'words; } @@ -65,7 +65,7 @@ where W::Word: From<>::SliceType>, W::Word: Into<>::SliceType>, { - type Iter<'words> = Map< + type Words<'words> = Map< Copied>::SliceType>>, fn(>::SliceType) -> W::Word, > where @@ -91,9 +91,8 @@ where fn sorted_insert_with_len(&mut self, value: W::Word, len: usize) -> bool { debug_assert!( - self.as_ref().len() >= len + 1, - "The array must have enough space for the new value. The length is {} and the number of words is {}.", - len, + self.as_ref().len() > len, + "The array must have enough space for the new value. The length is {len} and the number of words is {}.", self.as_ref().len() ); debug_assert!( @@ -112,7 +111,7 @@ where } } - fn iter_variable_words<'words>(&'words self, len: usize) -> Self::Iter<'words> + fn iter_variable_words<'words>(&'words self, len: usize) -> Self::Words<'words> where W: 'words, { diff --git a/statistical_comparisons/Cargo.toml b/statistical_comparisons/Cargo.toml index 53985ef..106cc3f 100644 --- a/statistical_comparisons/Cargo.toml +++ b/statistical_comparisons/Cargo.toml @@ -13,14 +13,14 @@ streaming_algorithms = {git = "https://github.com/LucaCappelletti94/streaming_al cardinality-estimator = {git = "https://github.com/LucaCappelletti94/cardinality-estimator.git", branch = "mem_dbg", features = ["mem_dbg"]} rust-hyperloglog = {git = "https://github.com/LucaCappelletti94/rust-hyperloglog.git", branch = "updated_siphasher", package = "hyperloglog", features = ["mem_dbg"]} sourmash = {git="https://github.com/LucaCappelletti94/sourmash.git", features = ["mem_dbg"], branch = "latest_merged"} -hypertwobits = {git="https://github.com/LucaCappelletti94/hypertwobits.git", features = ["mem_dbg"], branch="merge_all"} -simple_hll = {git="https://github.com/LucaCappelletti94/simple_hll.git", features = ["mem_dbg"], branch="mem_dbg"} +hypertwobits = {git="https://github.com/LucaCappelletti94/hypertwobits.git", features = ["mem_dbg"], branch="main"} +simple_hll = {git="https://github.com/LucaCappelletti94/simple_hll.git", features = ["mem_dbg"], branch="main"} stattest = {git = "https://github.com/LucaCappelletti94/stattest", branch = "faster_wilcoxon"} csv = "1.3.0" -wyhash = "0.5.0" +wyhash = {git="https://github.com/LucaCappelletti94/wyhash-rs", branch="merged", features=["mem_dbg"]} mem_dbg = "0.2.4" paste = "1.0.15" -twox-hash = "1.6.3" +twox-hash = {git="https://github.com/LucaCappelletti94/twox-hash", branch="merged", features=["mem_dbg"]} indicatif = {version="0.17.8", features=["rayon"]} rayon = "1.10.0" serde = "1.0.206" @@ -31,6 +31,7 @@ bincode = "1.3.3" log = "0.4.22" env_logger = "0.11.5" flate2 = "1.0.31" +ahash = {git="https://github.com/LucaCappelletti94/aHash", branch="master", features=["mem_dbg"]} [features] std = [] @@ -39,15 +40,4 @@ mle = ["std", "hyperloglog-rs/mle"] precomputed_beta = ["hyperloglog-rs/precomputed_beta"] integer_plusplus = ["hyperloglog-rs/integer_plusplus"] plusplus_kmeans = ["hyperloglog-rs/plusplus_kmeans"] - -[[bench]] -name = "insert" -harness = false - -[[bench]] -name = "cardinality" -harness = false - -[[bench]] -name = "union" -harness = false +std_ln = ["hyperloglog-rs/std_ln"] \ No newline at end of file diff --git a/statistical_comparisons/README.md b/statistical_comparisons/README.md index 2028272..879b8a5 100644 --- a/statistical_comparisons/README.md +++ b/statistical_comparisons/README.md @@ -8,6 +8,7 @@ To run the statistical comparisons for quality of the estimation, use the follow ```bash RUSTFLAGS='-C target-cpu=native' cargo run --release +RUSTFLAGS='-C target-cpu=native' cargo run --release --features std_ln RUSTFLAGS='-C target-cpu=native' cargo run --release --features precomputed_beta RUSTFLAGS='-C target-cpu=native' cargo run --release --features integer_plusplus RUSTFLAGS='-C target-cpu=native' cargo run --release --features plusplus_kmeans diff --git a/statistical_comparisons/benches/README.md b/statistical_comparisons/benches/README.md deleted file mode 100644 index fa6dbcb..0000000 --- a/statistical_comparisons/benches/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# Benchmarks - -## Insert - -```bash -RUSTFLAGS='-C target-cpu=native' cargo bench --bench insert --features all_precisions > benches/insert.log -``` - -## Binary Search - -```bash -RUSTFLAGS='-C target-cpu=native' cargo bench --bench binary_search -``` - -## Cardinality - -```bash -RUSTFLAGS='-C target-cpu=native' cargo bench --bench cardinality --features all_precisions,integer_plusplus,precomputed_beta > benches/cardinality.log -``` - -## Union - -```bash -RUSTFLAGS='-C target-cpu=native' cargo bench --bench union --features all_precisions,integer_plusplus,precomputed_beta > benches/union.log -``` - -## Hash functions -One of the cardinal parts of any HyperLogLog implementation is the hash function. This benchmark compares the speed of different hash functions, including WyHash, XxHash, and the default Rust hasher. Earlier, it included also a custom implementation of SipHash, but it was removed due to the lack of entropy - potentially a bug in the implementation. - -You can run the benchmark with the following command: - -```bash -RUSTFLAGS='-C target-cpu=native' cargo bench --bench hash_functions -``` - -```bash -xx_hasher time: [7.9508 ms 7.9619 ms 7.9756 ms] - change: [-0.0498% +0.0989% +0.2755%] (p = 0.27 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 2 (2.00%) high mild - 15 (15.00%) high severe - -xx3_hasher time: [32.412 ms 32.444 ms 32.484 ms] - change: [+0.7360% +0.8759% +1.0216%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -wyhash time: [810.74 µs 811.29 µs 811.98 µs] - change: [+0.0325% +0.1810% +0.3246%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 5 (5.00%) high mild - 11 (11.00%) high severe - -default_hasher time: [4.1909 ms 4.1924 ms 4.1942 ms] -Found 19 outliers among 100 measurements (19.00%) - 7 (7.00%) high mild - 12 (12.00%) high -``` \ No newline at end of file diff --git a/statistical_comparisons/benches/cardinality.log b/statistical_comparisons/benches/cardinality.log deleted file mode 100644 index f3fc1bb..0000000 --- a/statistical_comparisons/benches/cardinality.log +++ /dev/null @@ -1,5209 +0,0 @@ -Cardinality LLB + XxHash64 - time: [10.405 µs 10.442 µs 10.468 µs] - change: [+2.5062% +2.9587% +3.4002%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality LLB + WyHash - time: [10.067 µs 10.072 µs 10.078 µs] - change: [+1.0419% +1.1427% +1.2703%] (p = 0.00 < 0.05) - Performance has regressed. -Found 21 outliers among 100 measurements (21.00%) - 2 (2.00%) low mild - 19 (19.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.062 µs 10.065 µs 10.068 µs] - change: [+0.8468% +0.9910% +1.1253%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [10.067 µs 10.086 µs 10.115 µs] - change: [+0.9798% +1.1012% +1.2596%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9542 µs 9.9567 µs 9.9598 µs] - change: [-0.4002% -0.1667% +0.0257%] (p = 0.14 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 12 (12.00%) high severe - -Cardinality LLB + WyHash - time: [9.9556 µs 9.9589 µs 9.9628 µs] - change: [+0.0525% +0.0870% +0.1196%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9593 µs 9.9804 µs 10.010 µs] - change: [+0.1160% +0.2134% +0.3524%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 20 outliers among 100 measurements (20.00%) - 7 (7.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + WyHash - time: [9.9531 µs 9.9544 µs 9.9561 µs] - change: [+0.0135% +0.0592% +0.1122%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9552 µs 9.9589 µs 9.9633 µs] - change: [-0.2234% -0.0623% +0.0673%] (p = 0.43 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + WyHash - time: [9.9541 µs 9.9561 µs 9.9586 µs] - change: [-0.3469% -0.1065% +0.0650%] (p = 0.39 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 6 (6.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9562 µs 9.9603 µs 9.9652 µs] - change: [-0.0222% +0.0355% +0.0890%] (p = 0.22 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low severe - 3 (3.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [9.9540 µs 9.9560 µs 9.9585 µs] - change: [+0.0443% +0.0978% +0.1588%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [10.342 µs 10.346 µs 10.349 µs] - change: [-0.1390% -0.0895% -0.0491%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 9 (9.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [10.385 µs 10.388 µs 10.392 µs] - change: [-0.0523% +0.0176% +0.0969%] (p = 0.70 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 12 (12.00%) high severe - -Cardinality PP + XxHash64 - time: [10.337 µs 10.339 µs 10.341 µs] - change: [-0.1291% -0.0489% +0.0529%] (p = 0.34 > 0.05) - No change in performance detected. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 11 (11.00%) high severe - -Cardinality PP + WyHash - time: [10.387 µs 10.390 µs 10.394 µs] - change: [-0.0602% -0.0232% +0.0151%] (p = 0.22 > 0.05) - No change in performance detected. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + XxHash64 - time: [10.333 µs 10.335 µs 10.337 µs] - change: [-0.0864% -0.0446% -0.0063%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + WyHash - time: [10.383 µs 10.385 µs 10.388 µs] - change: [+0.0376% +0.1141% +0.2050%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality PP + XxHash64 - time: [10.336 µs 10.339 µs 10.342 µs] - change: [-0.0502% +0.0177% +0.0840%] (p = 0.63 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 13 (13.00%) high severe - -Cardinality PP + WyHash - time: [10.380 µs 10.383 µs 10.387 µs] - change: [-0.1484% -0.0716% -0.0041%] (p = 0.05 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 3 (3.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + XxHash64 - time: [10.334 µs 10.339 µs 10.345 µs] - change: [-0.0457% +0.1022% +0.2895%] (p = 0.29 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 2 (2.00%) high mild - 15 (15.00%) high severe - -Cardinality PP + WyHash - time: [10.384 µs 10.386 µs 10.389 µs] - change: [-0.1595% -0.1121% -0.0720%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [10.338 µs 10.342 µs 10.348 µs] - change: [-0.2777% -0.1724% -0.0849%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 19 outliers among 100 measurements (19.00%) - 5 (5.00%) low mild - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality PP + WyHash - time: [10.382 µs 10.386 µs 10.391 µs] - change: [-0.1568% -0.1053% -0.0561%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.040 µs 10.044 µs 10.049 µs] - change: [-0.0247% +0.0389% +0.0967%] (p = 0.21 > 0.05) - No change in performance detected. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.034 µs 10.037 µs 10.041 µs] - change: [-0.0116% +0.0568% +0.1299%] (p = 0.13 > 0.05) - No change in performance detected. -Found 18 outliers among 100 measurements (18.00%) - 6 (6.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.039 µs 10.045 µs 10.050 µs] - change: [-0.0409% +0.0101% +0.0633%] (p = 0.70 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.038 µs 10.043 µs 10.049 µs] - change: [+0.0161% +0.1188% +0.2515%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 20 outliers among 100 measurements (20.00%) - 3 (3.00%) high mild - 17 (17.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.060 µs 10.063 µs 10.066 µs] - change: [-0.0055% +0.0712% +0.1433%] (p = 0.07 > 0.05) - No change in performance detected. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.064 µs 10.070 µs 10.076 µs] - change: [+0.0833% +0.1564% +0.2245%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 5 (5.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.059 µs 10.063 µs 10.067 µs] - change: [+0.0639% +0.1178% +0.1721%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.062 µs 10.084 µs 10.114 µs] - change: [+0.1202% +0.2333% +0.3881%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 17 outliers among 100 measurements (17.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 13 (13.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.550 µs 10.553 µs 10.556 µs] - change: [+0.0446% +0.0919% +0.1397%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.571 µs 10.577 µs 10.583 µs] - change: [+0.0120% +0.0678% +0.1327%] (p = 0.02 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.549 µs 10.551 µs 10.553 µs] - change: [-0.1330% +0.0691% +0.2651%] (p = 0.50 > 0.05) - No change in performance detected. -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.565 µs 10.571 µs 10.581 µs] - change: [-0.0684% +0.0097% +0.0784%] (p = 0.80 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.476 µs 10.480 µs 10.485 µs] - change: [+0.6564% +0.7291% +0.8135%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.524 µs 10.535 µs 10.551 µs] - change: [+0.6381% +0.7000% +0.7609%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.485 µs 10.491 µs 10.500 µs] - change: [+0.7208% +0.7926% +0.8783%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.528 µs 10.530 µs 10.533 µs] - change: [+0.6681% +0.7392% +0.7922%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.380 µs 10.385 µs 10.390 µs] - change: [-0.1361% -0.0742% +0.0121%] (p = 0.03 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.449 µs 10.451 µs 10.454 µs] - change: [-0.0775% +0.0338% +0.1440%] (p = 0.57 > 0.05) - No change in performance detected. -Found 13 outliers among 100 measurements (13.00%) - 6 (6.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.380 µs 10.385 µs 10.393 µs] - change: [-0.1317% -0.0994% -0.0602%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.450 µs 10.455 µs 10.462 µs] - change: [-0.0211% +0.0423% +0.1186%] (p = 0.25 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 6 (6.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.381 µs 10.384 µs 10.387 µs] - change: [-0.1712% -0.1229% -0.0790%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 4 (4.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.448 µs 10.452 µs 10.457 µs] - change: [+0.0680% +0.1872% +0.3501%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) high mild - 17 (17.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.381 µs 10.389 µs 10.400 µs] - change: [-0.2243% -0.1458% -0.0718%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.449 µs 10.454 µs 10.460 µs] - change: [-0.0452% +0.0231% +0.0919%] (p = 0.51 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Cardinality Tabac + XxHash64 - time: [235.99 µs 236.14 µs 236.42 µs] - change: [+0.3841% +0.7318% +1.2041%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [368.49 µs 368.61 µs 368.77 µs] - change: [-6.9497% -6.8855% -6.8141%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) high mild - 2 (10.00%) high severe - -Cardinality SA + XxHash64 - time: [48.034 µs 48.062 µs 48.108 µs] - change: [-0.2526% -0.1995% -0.1318%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality CF + WyHash - time: [86.234 µs 86.252 µs 86.276 µs] - change: [+0.1450% +0.2561% +0.3459%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 7 (7.00%) high mild - 9 (9.00%) high severe - -Cardinality CF + XxHash64 - time: [86.164 µs 86.265 µs 86.398 µs] - change: [+0.2674% +0.3681% +0.4719%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [1.5816 ms 1.5830 ms 1.5840 ms] - change: [-0.3628% -0.2774% -0.1895%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Cardinality SM - time: [847.06 µs 847.73 µs 848.42 µs] - change: [-4.2568% -4.1524% -4.0409%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality LLB + XxHash64 - time: [9.9496 µs 9.9553 µs 9.9633 µs] - change: [-0.8421% -0.5165% -0.2616%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + WyHash - time: [9.9504 µs 9.9562 µs 9.9644 µs] - change: [-0.2261% -0.1565% -0.0787%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 21 outliers among 100 measurements (21.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 15 (15.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9552 µs 9.9580 µs 9.9610 µs] - change: [-0.2166% -0.1708% -0.1164%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + WyHash - time: [9.9521 µs 9.9583 µs 9.9661 µs] - change: [-0.2769% -0.2088% -0.1314%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.058 µs 10.060 µs 10.063 µs] - change: [-0.0470% +0.0813% +0.1781%] (p = 0.17 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [10.059 µs 10.065 µs 10.072 µs] - change: [+0.1062% +0.1541% +0.2033%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 18 outliers among 100 measurements (18.00%) - 5 (5.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.309 µs 10.370 µs 10.423 µs] - change: [+1.1729% +1.6238% +2.0614%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality LLB + WyHash - time: [10.046 µs 10.051 µs 10.055 µs] - change: [-0.3608% -0.2532% -0.1423%] (p = 0.00 < 0.05) - Change within noise threshold. - -Cardinality LLB + XxHash64 - time: [9.9442 µs 9.9474 µs 9.9515 µs] - change: [-0.3299% -0.2374% -0.1349%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + WyHash - time: [9.9446 µs 9.9469 µs 9.9499 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9617 µs 9.9648 µs 9.9687 µs] -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [9.9614 µs 9.9643 µs 9.9678 µs] -Found 14 outliers among 100 measurements (14.00%) - 6 (6.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [10.630 µs 10.637 µs 10.646 µs] -Found 14 outliers among 100 measurements (14.00%) - 7 (7.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + WyHash - time: [10.686 µs 10.690 µs 10.695 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 11 (11.00%) high severe - -Cardinality PP + XxHash64 - time: [10.623 µs 10.631 µs 10.644 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + WyHash - time: [10.698 µs 10.716 µs 10.737 µs] -Found 19 outliers among 100 measurements (19.00%) - 4 (4.00%) high mild - 15 (15.00%) high severe - -Cardinality PP + XxHash64 - time: [10.628 µs 10.630 µs 10.633 µs] -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) high mild - 9 (9.00%) high severe - -Cardinality PP + WyHash - time: [10.691 µs 10.694 µs 10.698 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality PP + XxHash64 - time: [10.633 µs 10.636 µs 10.639 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) high mild - 13 (13.00%) high severe - -Cardinality PP + WyHash - time: [10.690 µs 10.692 µs 10.694 µs] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [10.697 µs 10.706 µs 10.720 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 14 (14.00%) high severe - -Cardinality PP + WyHash - time: [10.747 µs 10.750 µs 10.753 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [10.625 µs 10.630 µs 10.637 µs] -Found 20 outliers among 100 measurements (20.00%) - 5 (5.00%) high mild - 15 (15.00%) high severe - -Cardinality PP + WyHash - time: [10.665 µs 10.667 µs 10.671 µs] -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.119 µs 10.134 µs 10.151 µs] -Found 17 outliers among 100 measurements (17.00%) - 4 (4.00%) high mild - 13 (13.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.106 µs 10.108 µs 10.111 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.103 µs 10.106 µs 10.110 µs] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 13 (13.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.105 µs 10.108 µs 10.113 µs] -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.061 µs 10.067 µs 10.074 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.045 µs 10.051 µs 10.059 µs] -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 15 (15.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.042 µs 10.044 µs 10.047 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.052 µs 10.057 µs 10.065 µs] -Found 12 outliers among 100 measurements (12.00%) - 7 (7.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.032 µs 10.034 µs 10.037 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.034 µs 10.038 µs 10.045 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.494 µs 10.498 µs 10.503 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.492 µs 10.497 µs 10.506 µs] -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.654 µs 10.662 µs 10.671 µs] -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.710 µs 10.713 µs 10.717 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.653 µs 10.660 µs 10.670 µs] -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.711 µs 10.714 µs 10.717 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.777 µs 10.787 µs 10.799 µs] -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.833 µs 10.837 µs 10.843 µs] -Found 13 outliers among 100 measurements (13.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.767 µs 10.772 µs 10.777 µs] -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.834 µs 10.839 µs 10.845 µs] -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.648 µs 10.655 µs 10.669 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.726 µs 10.731 µs 10.737 µs] -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low severe - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [10.656 µs 10.659 µs 10.662 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridPP + WyHash - time: [10.725 µs 10.729 µs 10.734 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality Tabac + XxHash64 - time: [325.99 µs 326.16 µs 326.34 µs] -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) low mild - 2 (10.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [492.62 µs 492.80 µs 493.02 µs] - -Cardinality SA + XxHash64 - time: [48.723 µs 48.734 µs 48.749 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality CF + WyHash - time: [85.698 µs 85.741 µs 85.796 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality CF + XxHash64 - time: [85.692 µs 85.709 µs 85.731 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [3.0830 ms 3.0908 ms 3.1018 ms] - -Cardinality SM - time: [1.1278 ms 1.1294 ms 1.1311 ms] - -Cardinality LLB + XxHash64 - time: [9.9451 µs 9.9480 µs 9.9515 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [9.9495 µs 9.9567 µs 9.9669 µs] -Found 18 outliers among 100 measurements (18.00%) - 5 (5.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9459 µs 9.9480 µs 9.9507 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [9.9479 µs 9.9513 µs 9.9558 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.231 µs 10.239 µs 10.248 µs] -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - -Cardinality LLB + WyHash - time: [10.215 µs 10.223 µs 10.234 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) low mild - 3 (3.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.081 µs 10.086 µs 10.093 µs] -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 7 (7.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [10.074 µs 10.077 µs 10.081 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.114 µs 10.120 µs 10.129 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + WyHash - time: [10.624 µs 10.630 µs 10.636 µs] -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.008 µs 10.014 µs 10.023 µs] -Found 13 outliers among 100 measurements (13.00%) - 5 (5.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + WyHash - time: [10.014 µs 10.018 µs 10.023 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [11.321 µs 11.329 µs 11.341 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + WyHash - time: [11.230 µs 11.234 µs 11.239 µs] -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + XxHash64 - time: [11.319 µs 11.330 µs 11.345 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [11.226 µs 11.231 µs 11.237 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + XxHash64 - time: [11.512 µs 11.516 µs 11.520 µs] -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [11.479 µs 11.506 µs 11.544 µs] -Found 12 outliers among 100 measurements (12.00%) - 6 (6.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [11.448 µs 11.451 µs 11.455 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + WyHash - time: [11.354 µs 11.359 µs 11.365 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [11.474 µs 11.485 µs 11.499 µs] -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [11.386 µs 11.389 µs 11.392 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [11.442 µs 11.446 µs 11.451 µs] -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [11.344 µs 11.349 µs 11.357 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.482 µs 10.488 µs 10.495 µs] -Found 20 outliers among 100 measurements (20.00%) - 4 (4.00%) high mild - 16 (16.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.495 µs 10.498 µs 10.501 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.491 µs 10.501 µs 10.514 µs] -Found 14 outliers among 100 measurements (14.00%) - 6 (6.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.498 µs 10.500 µs 10.505 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.281 µs 10.287 µs 10.295 µs] -Found 13 outliers among 100 measurements (13.00%) - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.258 µs 10.261 µs 10.265 µs] -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.335 µs 10.341 µs 10.349 µs] -Found 12 outliers among 100 measurements (12.00%) - 6 (6.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.359 µs 10.367 µs 10.379 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.127 µs 10.134 µs 10.142 µs] -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.131 µs 10.135 µs 10.141 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.626 µs 10.630 µs 10.634 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.632 µs 10.637 µs 10.645 µs] -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.485 µs 11.488 µs 11.492 µs] -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.418 µs 11.427 µs 11.438 µs] -Found 16 outliers among 100 measurements (16.00%) - 4 (4.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.480 µs 11.482 µs 11.485 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.444 µs 11.457 µs 11.476 µs] -Found 16 outliers among 100 measurements (16.00%) - 8 (8.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.593 µs 11.598 µs 11.604 µs] -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.534 µs 11.542 µs 11.553 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.661 µs 11.666 µs 11.671 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.579 µs 11.583 µs 11.588 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.566 µs 11.575 µs 11.586 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.495 µs 11.500 µs 11.508 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.769 µs 11.774 µs 11.781 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.663 µs 11.670 µs 11.678 µs] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Cardinality Tabac + XxHash64 - time: [542.04 µs 542.54 µs 543.25 µs] -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [703.27 µs 703.62 µs 704.30 µs] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Cardinality SA + XxHash64 - time: [50.540 µs 50.567 µs 50.601 µs] -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality CF + WyHash - time: [87.371 µs 87.399 µs 87.434 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality CF + XxHash64 - time: [87.307 µs 87.356 µs 87.424 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 9 (9.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [6.0508 ms 6.0677 ms 6.0857 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality SM - time: [1.4335 ms 1.4354 ms 1.4378 ms] - -Cardinality LLB + XxHash64 - time: [9.9512 µs 9.9532 µs 9.9555 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality LLB + WyHash - time: [9.9521 µs 9.9553 µs 9.9594 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 7 (7.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9531 µs 9.9559 µs 9.9594 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Cardinality LLB + WyHash - time: [9.9527 µs 9.9566 µs 9.9619 µs] -Found 17 outliers among 100 measurements (17.00%) - 6 (6.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + XxHash64 - time: [12.200 µs 12.279 µs 12.339 µs] - -Cardinality LLB + WyHash - time: [11.421 µs 11.426 µs 11.432 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [13.927 µs 13.931 µs 13.935 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [14.084 µs 14.092 µs 14.102 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + XxHash64 - time: [11.014 µs 11.021 µs 11.028 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Cardinality LLB + WyHash - time: [11.026 µs 11.034 µs 11.043 µs] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.082 µs 14.090 µs 14.099 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + WyHash - time: [14.081 µs 14.088 µs 14.096 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + XxHash64 - time: [12.795 µs 12.799 µs 12.804 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + WyHash - time: [12.655 µs 12.662 µs 12.671 µs] -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [12.783 µs 12.786 µs 12.791 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [12.675 µs 12.689 µs 12.706 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [13.922 µs 13.927 µs 13.933 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [13.797 µs 13.805 µs 13.816 µs] -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [14.712 µs 14.731 µs 14.759 µs] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + WyHash - time: [14.815 µs 14.944 µs 15.061 µs] -Found 19 outliers among 100 measurements (19.00%) - 2 (2.00%) high mild - 17 (17.00%) high severe - -Cardinality PP + XxHash64 - time: [13.436 µs 13.443 µs 13.451 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Cardinality PP + WyHash - time: [13.373 µs 13.379 µs 13.387 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [14.906 µs 14.915 µs 14.928 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [14.882 µs 14.888 µs 14.894 µs] -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.484 µs 10.487 µs 10.490 µs] -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.490 µs 10.495 µs 10.502 µs] -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 5 (5.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.487 µs 10.490 µs 10.495 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.489 µs 10.494 µs 10.501 µs] -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [12.516 µs 12.520 µs 12.523 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [12.481 µs 12.492 µs 12.506 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.170 µs 16.176 µs 16.185 µs] -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.979 µs 15.983 µs 15.988 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [12.067 µs 12.073 µs 12.079 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [12.059 µs 12.064 µs 12.071 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [15.963 µs 15.969 µs 15.978 µs] -Found 16 outliers among 100 measurements (16.00%) - 8 (8.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.919 µs 15.922 µs 15.926 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [13.165 µs 13.172 µs 13.182 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [13.068 µs 13.072 µs 13.075 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [13.163 µs 13.167 µs 13.172 µs] -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + WyHash - time: [13.068 µs 13.070 µs 13.073 µs] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [14.570 µs 14.580 µs 14.595 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [14.417 µs 14.422 µs 14.429 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [15.057 µs 15.181 µs 15.321 µs] - -Cardinality HybridPP + WyHash - time: [15.630 µs 15.704 µs 15.770 µs] -Found 11 outliers among 100 measurements (11.00%) - 11 (11.00%) low mild - -Cardinality HybridPP + XxHash64 - time: [14.731 µs 14.740 µs 14.751 µs] -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [14.609 µs 14.617 µs 14.626 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [17.202 µs 17.237 µs 17.280 µs] -Found 17 outliers among 100 measurements (17.00%) - 2 (2.00%) high mild - 15 (15.00%) high severe - -Cardinality HybridPP + WyHash - time: [17.090 µs 17.098 µs 17.107 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality Tabac + XxHash64 - time: [972.39 µs 972.79 µs 973.22 µs] -Found 4 outliers among 20 measurements (20.00%) - 4 (20.00%) high mild - -Cardinality TabacPP + XxHash64 - time: [1.1531 ms 1.1535 ms 1.1542 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Cardinality SA + XxHash64 - time: [54.602 µs 54.634 µs 54.675 µs] -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) high mild - 12 (12.00%) high severe - -Cardinality CF + WyHash - time: [89.002 µs 89.023 µs 89.048 µs] -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality CF + XxHash64 - time: [89.005 µs 89.038 µs 89.076 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [11.847 ms 11.859 ms 11.869 ms] - -Cardinality SM - time: [2.4817 ms 2.4830 ms 2.4843 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality LLB + XxHash64 - time: [9.9816 µs 9.9892 µs 9.9995 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + WyHash - time: [10.048 µs 10.053 µs 10.059 µs] -Found 22 outliers among 100 measurements (22.00%) - 2 (2.00%) high mild - 20 (20.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.054 µs 10.056 µs 10.059 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality LLB + WyHash - time: [10.053 µs 10.062 µs 10.074 µs] -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [12.275 µs 12.492 µs 12.692 µs] - -Cardinality LLB + WyHash - time: [12.049 µs 12.216 µs 12.384 µs] - -Cardinality LLB + XxHash64 - time: [11.287 µs 11.335 µs 11.386 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Cardinality LLB + WyHash - time: [11.342 µs 11.372 µs 11.405 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [12.424 µs 12.625 µs 12.815 µs] - -Cardinality LLB + WyHash - time: [12.111 µs 12.313 µs 12.513 µs] - -Cardinality LLB + XxHash64 - time: [13.528 µs 13.532 µs 13.537 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + WyHash - time: [13.555 µs 13.560 µs 13.565 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [14.341 µs 14.347 µs 14.353 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + WyHash - time: [14.218 µs 14.225 µs 14.233 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [14.328 µs 14.333 µs 14.339 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Cardinality PP + WyHash - time: [14.219 µs 14.225 µs 14.233 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + XxHash64 - time: [15.751 µs 15.757 µs 15.765 µs] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + WyHash - time: [15.593 µs 15.601 µs 15.610 µs] -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) low severe - 3 (3.00%) low mild - 1 (1.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [15.734 µs 15.740 µs 15.746 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low severe - 2 (2.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + WyHash - time: [15.671 µs 15.677 µs 15.683 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + XxHash64 - time: [15.725 µs 15.741 µs 15.760 µs] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 11 (11.00%) high severe - -Cardinality PP + WyHash - time: [15.500 µs 15.506 µs 15.513 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + XxHash64 - time: [15.609 µs 15.618 µs 15.629 µs] -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + WyHash - time: [15.468 µs 15.477 µs 15.488 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low severe - 4 (4.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.556 µs 10.572 µs 10.604 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.555 µs 10.559 µs 10.564 µs] -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.568 µs 10.580 µs 10.598 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.563 µs 10.571 µs 10.580 µs] -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [15.578 µs 15.587 µs 15.597 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.559 µs 15.573 µs 15.588 µs] -Found 13 outliers among 100 measurements (13.00%) - 9 (9.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [15.758 µs 15.765 µs 15.775 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.726 µs 15.729 µs 15.734 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [15.592 µs 15.601 µs 15.612 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.639 µs 15.648 µs 15.661 µs] -Found 15 outliers among 100 measurements (15.00%) - 8 (8.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [15.887 µs 15.891 µs 15.896 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [15.884 µs 15.893 µs 15.903 µs] -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [14.952 µs 14.955 µs 14.958 µs] -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [14.819 µs 14.825 µs 14.832 µs] -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [14.963 µs 14.970 µs 14.979 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridPP + WyHash - time: [14.834 µs 14.839 µs 14.844 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [18.294 µs 18.307 µs 18.328 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 7 (7.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + WyHash - time: [18.141 µs 18.148 µs 18.158 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [18.125 µs 18.130 µs 18.135 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + WyHash - time: [18.233 µs 18.244 µs 18.261 µs] -Found 15 outliers among 100 measurements (15.00%) - 6 (6.00%) low mild - 1 (1.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [16.740 µs 16.776 µs 16.812 µs] - -Cardinality HybridPP + WyHash - time: [16.979 µs 16.985 µs 16.992 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) low severe - 3 (3.00%) low mild - 1 (1.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [17.279 µs 17.288 µs 17.303 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [17.174 µs 17.179 µs 17.185 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 8 (8.00%) high severe - -Cardinality Tabac + XxHash64 - time: [1.8657 ms 1.8665 ms 1.8679 ms] -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [2.0288 ms 2.0296 ms 2.0304 ms] -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Cardinality SA + XxHash64 - time: [59.027 µs 59.043 µs 59.061 µs] -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Cardinality CF + WyHash - time: [92.197 µs 92.249 µs 92.326 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality CF + XxHash64 - time: [92.017 µs 92.038 µs 92.064 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [22.860 ms 22.885 ms 22.913 ms] - -Cardinality SM - time: [4.5568 ms 4.5587 ms 4.5619 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9998 µs 10.003 µs 10.007 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + WyHash - time: [9.9867 µs 9.9886 µs 9.9913 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + XxHash64 - time: [9.9871 µs 9.9907 µs 9.9951 µs] -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality LLB + WyHash - time: [9.9892 µs 9.9924 µs 9.9964 µs] -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 13 (13.00%) high severe - -Cardinality LLB + XxHash64 - time: [13.474 µs 13.487 µs 13.503 µs] -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) high mild - 12 (12.00%) high severe - -Cardinality LLB + WyHash - time: [13.714 µs 13.720 µs 13.727 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + XxHash64 - time: [12.148 µs 12.177 µs 12.206 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) low severe - 3 (3.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Cardinality LLB + WyHash - time: [12.278 µs 12.305 µs 12.334 µs] -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - -Cardinality LLB + XxHash64 - time: [12.850 µs 12.953 µs 13.064 µs] - -Cardinality LLB + WyHash - time: [13.113 µs 13.207 µs 13.297 µs] - -Cardinality LLB + XxHash64 - time: [12.287 µs 12.320 µs 12.354 µs] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 1 (1.00%) high severe - -Cardinality LLB + WyHash - time: [12.446 µs 12.478 µs 12.510 µs] -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) low mild - 1 (1.00%) high severe - -Cardinality PP + XxHash64 - time: [16.978 µs 16.999 µs 17.028 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [16.952 µs 16.960 µs 16.969 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + XxHash64 - time: [16.980 µs 16.988 µs 16.997 µs] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Cardinality PP + WyHash - time: [16.976 µs 16.992 µs 17.016 µs] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + XxHash64 - time: [18.332 µs 18.338 µs 18.347 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [18.349 µs 18.355 µs 18.362 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [18.680 µs 18.687 µs 18.696 µs] -Found 14 outliers among 100 measurements (14.00%) - 11 (11.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [18.836 µs 18.842 µs 18.848 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [18.610 µs 18.618 µs 18.628 µs] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + WyHash - time: [18.380 µs 18.386 µs 18.393 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [18.767 µs 18.776 µs 18.788 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [18.731 µs 18.739 µs 18.751 µs] -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.741 µs 10.744 µs 10.748 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.759 µs 10.762 µs 10.766 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.758 µs 10.762 µs 10.767 µs] -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 6 (6.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.765 µs 10.768 µs 10.771 µs] -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.105 µs 16.109 µs 16.114 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.117 µs 16.129 µs 16.146 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.039 µs 16.044 µs 16.049 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 13 (13.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.091 µs 16.095 µs 16.099 µs] -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.056 µs 16.061 µs 16.068 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.099 µs 16.105 µs 16.112 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.130 µs 16.137 µs 16.146 µs] -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.072 µs 16.076 µs 16.081 µs] -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [18.484 µs 18.493 µs 18.501 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [18.645 µs 18.654 µs 18.664 µs] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [18.485 µs 18.494 µs 18.504 µs] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [18.626 µs 18.636 µs 18.648 µs] -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Cardinality HybridPP + XxHash64 - time: [20.841 µs 20.848 µs 20.856 µs] -Found 9 outliers among 100 measurements (9.00%) - 7 (7.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [20.862 µs 20.872 µs 20.884 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 8 (8.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [20.853 µs 20.860 µs 20.868 µs] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [21.048 µs 21.066 µs 21.090 µs] -Found 12 outliers among 100 measurements (12.00%) - 6 (6.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [20.787 µs 20.792 µs 20.800 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [20.955 µs 20.963 µs 20.971 µs] -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [20.856 µs 20.862 µs 20.869 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [20.979 µs 21.000 µs 21.024 µs] -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Cardinality Tabac + XxHash64 - time: [3.5952 ms 3.5959 ms 3.5968 ms] -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [3.7972 ms 3.7992 ms 3.8018 ms] -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Cardinality SA + XxHash64 - time: [68.878 µs 68.913 µs 68.960 µs] -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality CF + WyHash - time: [97.750 µs 97.889 µs 98.111 µs] -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality CF + XxHash64 - time: [97.894 µs 97.937 µs 97.992 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [44.244 ms 44.264 ms 44.285 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality SM - time: [8.9125 ms 8.9150 ms 8.9175 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality LLB + XxHash64 - time: [10.076 µs 10.082 µs 10.089 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + WyHash - time: [10.086 µs 10.089 µs 10.094 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.085 µs 10.093 µs 10.106 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality LLB + WyHash - time: [10.082 µs 10.086 µs 10.091 µs] -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.129 µs 14.134 µs 14.139 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + WyHash - time: [14.661 µs 14.666 µs 14.672 µs] -Found 11 outliers among 100 measurements (11.00%) - 7 (7.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [17.138 µs 17.259 µs 17.377 µs] -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + WyHash - time: [17.966 µs 17.974 µs 17.983 µs] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.579 µs 14.596 µs 14.616 µs] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Cardinality LLB + WyHash - time: [14.620 µs 14.631 µs 14.641 µs] - -Cardinality LLB + XxHash64 - time: [16.684 µs 16.701 µs 16.719 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + WyHash - time: [17.102 µs 17.121 µs 17.139 µs] -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - -Cardinality PP + XxHash64 - time: [19.099 µs 19.110 µs 19.123 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Cardinality PP + WyHash - time: [19.050 µs 19.058 µs 19.066 µs] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [19.014 µs 19.023 µs 19.033 µs] - -Cardinality PP + WyHash - time: [19.104 µs 19.115 µs 19.126 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [21.565 µs 21.573 µs 21.581 µs] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [21.409 µs 21.423 µs 21.443 µs] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + XxHash64 - time: [22.830 µs 22.853 µs 22.888 µs] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Cardinality PP + WyHash - time: [22.815 µs 22.833 µs 22.856 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [21.286 µs 21.295 µs 21.305 µs] -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [21.188 µs 21.202 µs 21.218 µs] -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [23.548 µs 23.558 µs 23.571 µs] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Cardinality PP + WyHash - time: [23.510 µs 23.526 µs 23.545 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.013 µs 11.017 µs 11.024 µs] -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [11.005 µs 11.011 µs 11.019 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.044 µs 11.078 µs 11.133 µs] -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) high mild - 12 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [11.026 µs 11.031 µs 11.039 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.953 µs 16.958 µs 16.966 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.935 µs 16.945 µs 16.956 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.422 µs 16.428 µs 16.436 µs] -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [18.888 µs 18.898 µs 18.912 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.959 µs 16.968 µs 16.977 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.950 µs 16.956 µs 16.964 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 10 (10.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [18.420 µs 18.433 µs 18.450 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + WyHash - time: [18.423 µs 18.428 µs 18.434 µs] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [22.736 µs 22.750 µs 22.767 µs] -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + WyHash - time: [22.792 µs 22.799 µs 22.808 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [23.176 µs 23.190 µs 23.207 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [22.738 µs 22.746 µs 22.755 µs] -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [25.936 µs 25.955 µs 25.978 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [25.876 µs 25.886 µs 25.898 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [26.716 µs 26.726 µs 26.736 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [26.693 µs 26.704 µs 26.716 µs] -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [25.947 µs 25.957 µs 25.968 µs] -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + WyHash - time: [26.742 µs 26.754 µs 26.767 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [25.712 µs 25.735 µs 25.758 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [25.436 µs 25.463 µs 25.490 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Cardinality Tabac + XxHash64 - time: [7.0388 ms 7.0420 ms 7.0462 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality TabacPP + XxHash64 - time: [7.2363 ms 7.2393 ms 7.2428 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality SA + XxHash64 - time: [89.935 µs 89.982 µs 90.043 µs] -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality CF + WyHash - time: [107.40 µs 107.43 µs 107.47 µs] -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality CF + XxHash64 - time: [107.26 µs 107.29 µs 107.33 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low severe - 6 (6.00%) high mild - 4 (4.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [85.644 ms 85.724 ms 85.835 ms] -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) low mild - 2 (10.00%) high severe - -Cardinality SM - time: [17.354 ms 17.361 ms 17.371 ms] -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) high mild - 2 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.170 µs 10.173 µs 10.176 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + WyHash - time: [10.173 µs 10.177 µs 10.183 µs] -Found 15 outliers among 100 measurements (15.00%) - 6 (6.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.170 µs 10.178 µs 10.189 µs] -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + WyHash - time: [10.175 µs 10.178 µs 10.183 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) high mild - 7 (7.00%) high severe - -Cardinality LLB + XxHash64 - time: [17.870 µs 17.876 µs 17.883 µs] -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Cardinality LLB + WyHash - time: [17.899 µs 17.906 µs 17.913 µs] -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.971 µs 14.984 µs 15.002 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Cardinality LLB + WyHash - time: [18.770 µs 18.779 µs 18.788 µs] -Found 13 outliers among 100 measurements (13.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality LLB + XxHash64 - time: [17.966 µs 17.982 µs 18.001 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) low severe - 2 (2.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + WyHash - time: [17.953 µs 17.962 µs 17.970 µs] -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [18.832 µs 18.844 µs 18.859 µs] -Found 15 outliers among 100 measurements (15.00%) - 5 (5.00%) high mild - 10 (10.00%) high severe - -Cardinality LLB + WyHash - time: [18.854 µs 18.860 µs 18.867 µs] -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 7 (7.00%) high mild - 9 (9.00%) high severe - -Cardinality PP + XxHash64 - time: [22.686 µs 22.692 µs 22.699 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + WyHash - time: [22.773 µs 22.791 µs 22.811 µs] - -Cardinality PP + XxHash64 - time: [22.790 µs 22.811 µs 22.832 µs] -Found 7 outliers among 100 measurements (7.00%) - 7 (7.00%) high mild - -Cardinality PP + WyHash - time: [22.786 µs 22.792 µs 22.798 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [25.976 µs 25.990 µs 26.007 µs] -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + WyHash - time: [25.943 µs 25.962 µs 25.986 µs] -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + XxHash64 - time: [26.321 µs 26.339 µs 26.362 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [26.551 µs 26.567 µs 26.587 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [25.614 µs 25.622 µs 25.631 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + WyHash - time: [25.770 µs 25.784 µs 25.801 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + XxHash64 - time: [26.383 µs 26.404 µs 26.431 µs] -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + WyHash - time: [26.404 µs 26.415 µs 26.429 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.499 µs 11.508 µs 11.520 µs] -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [11.496 µs 11.499 µs 11.502 µs] -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.558 µs 11.570 µs 11.585 µs] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [11.532 µs 11.536 µs 11.540 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [20.635 µs 20.649 µs 20.668 µs] -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + WyHash - time: [20.661 µs 20.667 µs 20.675 µs] -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [21.643 µs 21.651 µs 21.660 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [21.653 µs 21.658 µs 21.664 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [20.634 µs 20.641 µs 20.649 µs] -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridLLB + WyHash - time: [20.664 µs 20.672 µs 20.681 µs] -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [21.516 µs 21.522 µs 21.530 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [21.482 µs 21.494 µs 21.508 µs] -Found 12 outliers among 100 measurements (12.00%) - 7 (7.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [27.467 µs 27.481 µs 27.494 µs] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [27.337 µs 27.357 µs 27.382 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [27.390 µs 27.403 µs 27.419 µs] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + WyHash - time: [27.303 µs 27.313 µs 27.325 µs] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Cardinality HybridPP + XxHash64 - time: [30.099 µs 30.119 µs 30.142 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + WyHash - time: [30.017 µs 30.029 µs 30.042 µs] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [31.321 µs 31.339 µs 31.362 µs] -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [30.714 µs 30.735 µs 30.758 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [31.546 µs 31.565 µs 31.588 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [31.344 µs 31.362 µs 31.382 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [32.948 µs 32.964 µs 32.983 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + WyHash - time: [31.790 µs 31.811 µs 31.833 µs] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) low mild - 1 (1.00%) high severe - -Cardinality Tabac + XxHash64 - time: [14.091 ms 14.095 ms 14.099 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality TabacPP + XxHash64 - time: [14.538 ms 14.544 ms 14.551 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality SA + XxHash64 - time: [167.86 µs 167.97 µs 168.08 µs] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Cardinality CF + WyHash - time: [130.04 µs 130.08 µs 130.13 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 9 (9.00%) high severe - -Cardinality CF + XxHash64 - time: [130.12 µs 130.29 µs 130.48 µs] -Found 17 outliers among 100 measurements (17.00%) - 3 (3.00%) high mild - 14 (14.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [163.50 ms 163.72 ms 163.93 ms] - -Cardinality SM - time: [33.655 ms 33.661 ms 33.669 ms] -Found 4 outliers among 20 measurements (20.00%) - 1 (5.00%) high mild - 3 (15.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.557 µs 10.562 µs 10.569 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + WyHash - time: [10.490 µs 10.494 µs 10.499 µs] -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) high mild - 3 (3.00%) high severe - -Cardinality LLB + XxHash64 - time: [10.574 µs 10.580 µs 10.587 µs] -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Cardinality LLB + WyHash - time: [10.935 µs 10.945 µs 10.958 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [19.167 µs 19.207 µs 19.262 µs] -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) high mild - 9 (9.00%) high severe - -Cardinality LLB + WyHash - time: [19.183 µs 19.190 µs 19.197 µs] -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) high mild - 3 (3.00%) high severe - -Cardinality LLB + XxHash64 - time: [20.419 µs 20.432 µs 20.450 µs] -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Cardinality LLB + WyHash - time: [20.406 µs 20.422 µs 20.441 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + XxHash64 - time: [19.237 µs 19.246 µs 19.258 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 6 (6.00%) high severe - -Cardinality LLB + WyHash - time: [19.407 µs 19.419 µs 19.434 µs] - -Cardinality LLB + XxHash64 - time: [21.395 µs 21.403 µs 21.413 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality LLB + WyHash - time: [20.696 µs 20.707 µs 20.722 µs] -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Cardinality PP + XxHash64 - time: [34.550 µs 34.558 µs 34.569 µs] -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Cardinality PP + WyHash - time: [34.593 µs 34.608 µs 34.629 µs] -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [34.535 µs 34.540 µs 34.548 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality PP + WyHash - time: [34.566 µs 34.581 µs 34.600 µs] -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 13 (13.00%) high severe - -Cardinality PP + XxHash64 - time: [35.237 µs 35.251 µs 35.271 µs] -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + WyHash - time: [35.318 µs 35.331 µs 35.347 µs] -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [36.057 µs 36.064 µs 36.072 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [36.106 µs 36.124 µs 36.149 µs] -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [35.746 µs 35.755 µs 35.766 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [35.734 µs 35.751 µs 35.775 µs] -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Cardinality PP + XxHash64 - time: [35.874 µs 35.892 µs 35.915 µs] -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality PP + WyHash - time: [35.929 µs 35.939 µs 35.952 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.986 µs 11.995 µs 12.006 µs] -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridLLB + WyHash - time: [11.984 µs 11.992 µs 12.001 µs] -Found 13 outliers among 100 measurements (13.00%) - 6 (6.00%) high mild - 7 (7.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [12.054 µs 12.062 µs 12.071 µs] -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [12.017 µs 12.027 µs 12.041 µs] -Found 17 outliers among 100 measurements (17.00%) - 3 (3.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [22.218 µs 22.224 µs 22.231 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + WyHash - time: [22.149 µs 22.158 µs 22.169 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 5 (5.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [23.334 µs 23.340 µs 23.347 µs] -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [23.201 µs 23.209 µs 23.218 µs] -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [22.219 µs 22.248 µs 22.277 µs] -Found 14 outliers among 100 measurements (14.00%) - 7 (7.00%) low severe - 1 (1.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [22.231 µs 22.239 µs 22.249 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [23.285 µs 23.299 µs 23.316 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [23.270 µs 23.298 µs 23.332 µs] -Found 16 outliers among 100 measurements (16.00%) - 5 (5.00%) high mild - 11 (11.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [40.045 µs 40.059 µs 40.073 µs] -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [40.000 µs 40.020 µs 40.045 µs] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [40.711 µs 40.996 µs 41.245 µs] -Found 21 outliers among 100 measurements (21.00%) - 1 (1.00%) high mild - 20 (20.00%) high severe - -Cardinality HybridPP + WyHash - time: [40.090 µs 40.116 µs 40.151 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [43.331 µs 43.359 µs 43.391 µs] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Cardinality HybridPP + WyHash - time: [43.483 µs 43.535 µs 43.602 µs] -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [41.220 µs 41.345 µs 41.530 µs] -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [41.654 µs 41.776 µs 41.885 µs] - -Cardinality HybridPP + XxHash64 - time: [40.814 µs 40.834 µs 40.862 µs] -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [42.983 µs 43.026 µs 43.078 µs] - -Cardinality HybridPP + XxHash64 - time: [41.078 µs 41.091 µs 41.107 µs] -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Cardinality HybridPP + WyHash - time: [41.167 µs 41.189 µs 41.220 µs] -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Cardinality Tabac + XxHash64 - time: [28.326 ms 28.336 ms 28.346 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Cardinality TabacPP + XxHash64 - time: [29.679 ms 29.693 ms 29.708 ms] -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Cardinality SA + XxHash64 - time: [309.63 µs 309.88 µs 310.20 µs] -Found 18 outliers among 100 measurements (18.00%) - 10 (10.00%) low mild - 4 (4.00%) high mild - 4 (4.00%) high severe - -Cardinality CF + WyHash - time: [166.49 µs 166.53 µs 166.57 µs] -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Cardinality CF + XxHash64 - time: [166.41 µs 166.45 µs 166.50 µs] -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 7 (7.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [304.79 ms 305.29 ms 305.87 ms] -Found 3 outliers among 20 measurements (15.00%) - 2 (10.00%) high mild - 1 (5.00%) high severe - -Cardinality SM - time: [66.954 ms 67.033 ms 67.141 ms] -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [8.9320 µs 8.9360 µs 8.9406 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [8.9499 µs 8.9530 µs 8.9566 µs] - -Cardinality LLB + XxHash64 - time: [8.9153 µs 8.9203 µs 8.9267 µs] - -Cardinality LLB + WyHash - time: [8.9372 µs 8.9407 µs 8.9450 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [13.472 µs 13.572 µs 13.656 µs] -Found 9 outliers among 50 measurements (18.00%) - 9 (18.00%) high severe - -Cardinality LLB + WyHash - time: [13.340 µs 13.347 µs 13.354 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Cardinality LLB + XxHash64 - time: [15.527 µs 15.567 µs 15.601 µs] -Found 14 outliers among 50 measurements (28.00%) - 11 (22.00%) low severe - 3 (6.00%) high mild - -Cardinality LLB + WyHash - time: [13.425 µs 13.440 µs 13.457 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [13.193 µs 13.217 µs 13.244 µs] - -Cardinality LLB + WyHash - time: [13.183 µs 13.724 µs 14.229 µs] -Found 7 outliers among 50 measurements (14.00%) - 7 (14.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.437 µs 14.442 µs 14.447 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [14.651 µs 14.660 µs 14.671 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [56.220 µs 56.237 µs 56.257 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [56.184 µs 56.196 µs 56.210 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [56.211 µs 56.231 µs 56.257 µs] -Found 10 outliers among 50 measurements (20.00%) - 1 (2.00%) low mild - 4 (8.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [56.179 µs 56.201 µs 56.228 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [56.919 µs 56.938 µs 56.960 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [57.109 µs 57.122 µs 57.138 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Cardinality PP + XxHash64 - time: [56.766 µs 56.800 µs 56.845 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [56.636 µs 56.655 µs 56.678 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [56.428 µs 56.441 µs 56.457 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + WyHash - time: [56.381 µs 56.394 µs 56.410 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [57.033 µs 57.058 µs 57.088 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [56.733 µs 56.763 µs 56.799 µs] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.890 µs 10.900 µs 10.910 µs] - -Cardinality HybridLLB + WyHash - time: [10.865 µs 10.883 µs 10.902 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [10.820 µs 10.830 µs 10.840 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + WyHash - time: [10.708 µs 10.718 µs 10.728 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [17.281 µs 17.294 µs 17.310 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [17.173 µs 17.188 µs 17.206 µs] - -Cardinality HybridLLB + XxHash64 - time: [17.881 µs 17.892 µs 17.904 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + WyHash - time: [18.183 µs 18.187 µs 18.193 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [17.244 µs 17.251 µs 17.258 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [17.265 µs 17.279 µs 17.297 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [18.831 µs 18.874 µs 18.914 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) low severe - 3 (6.00%) low mild - -Cardinality HybridLLB + WyHash - time: [18.624 µs 18.646 µs 18.678 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [64.387 µs 64.426 µs 64.479 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Cardinality HybridPP + WyHash - time: [64.523 µs 64.650 µs 64.820 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [64.333 µs 64.353 µs 64.378 µs] - -Cardinality HybridPP + WyHash - time: [64.318 µs 64.355 µs 64.409 µs] - -Cardinality HybridPP + XxHash64 - time: [64.637 µs 64.658 µs 64.680 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality HybridPP + WyHash - time: [64.573 µs 64.602 µs 64.642 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [66.184 µs 66.256 µs 66.368 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [66.035 µs 66.072 µs 66.127 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [64.967 µs 64.996 µs 65.033 µs] - -Cardinality HybridPP + WyHash - time: [64.710 µs 64.730 µs 64.752 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [65.099 µs 65.128 µs 65.164 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [65.106 µs 65.146 µs 65.195 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality Tabac + XxHash64 - time: [57.814 ms 57.837 ms 57.865 ms] - -Cardinality TabacPP + XxHash64 - time: [58.495 ms 58.511 ms 58.530 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality SA + XxHash64 - time: [464.85 µs 464.95 µs 465.06 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) low mild - 6 (12.00%) high mild - 1 (2.00%) high severe - -Cardinality CF + WyHash - time: [185.31 µs 185.35 µs 185.41 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Cardinality CF + XxHash64 - time: [185.35 µs 185.39 µs 185.44 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low severe - 4 (8.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [528.41 ms 528.63 ms 528.88 ms] - -Cardinality SM - time: [133.65 ms 133.74 ms 133.86 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Cardinality LLB + XxHash64 - time: [8.2797 µs 8.2825 µs 8.2858 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + WyHash - time: [8.3978 µs 8.4039 µs 8.4126 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [8.2837 µs 8.2858 µs 8.2885 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Cardinality LLB + WyHash - time: [8.3940 µs 8.3972 µs 8.4010 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [12.740 µs 12.744 µs 12.748 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) low mild - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [12.691 µs 12.696 µs 12.703 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + XxHash64 - time: [13.690 µs 13.698 µs 13.709 µs] -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) low severe - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [13.232 µs 13.237 µs 13.241 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Cardinality LLB + XxHash64 - time: [12.934 µs 12.938 µs 12.942 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + WyHash - time: [14.263 µs 14.292 µs 14.328 µs] - -Cardinality LLB + XxHash64 - time: [14.187 µs 14.195 µs 14.204 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + WyHash - time: [14.552 µs 14.558 µs 14.564 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [60.950 µs 60.973 µs 61.002 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [60.964 µs 60.999 µs 61.050 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [60.942 µs 60.955 µs 60.972 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) low mild - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + WyHash - time: [60.958 µs 60.971 µs 60.986 µs] -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) high severe - -Cardinality PP + XxHash64 - time: [61.776 µs 61.792 µs 61.811 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [61.939 µs 61.950 µs 61.964 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + XxHash64 - time: [62.044 µs 62.075 µs 62.116 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [61.882 µs 61.910 µs 61.947 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [62.588 µs 62.605 µs 62.627 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + WyHash - time: [62.352 µs 62.415 µs 62.513 µs] -Found 8 outliers among 50 measurements (16.00%) - 8 (16.00%) high severe - -Cardinality PP + XxHash64 - time: [62.138 µs 62.155 µs 62.176 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [61.644 µs 61.683 µs 61.736 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.160 µs 10.182 µs 10.214 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.301 µs 10.308 µs 10.315 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [10.266 µs 10.283 µs 10.304 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + WyHash - time: [10.252 µs 10.269 µs 10.289 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.362 µs 16.381 µs 16.405 µs] -Found 6 outliers among 50 measurements (12.00%) - 5 (10.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.308 µs 16.313 µs 16.318 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [18.031 µs 18.071 µs 18.102 µs] - -Cardinality HybridLLB + WyHash - time: [18.398 µs 18.408 µs 18.418 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [17.368 µs 17.384 µs 17.399 µs] - -Cardinality HybridLLB + WyHash - time: [17.605 µs 17.619 µs 17.636 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [18.227 µs 18.245 µs 18.261 µs] - -Cardinality HybridLLB + WyHash - time: [18.655 µs 18.661 µs 18.666 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low severe - -Cardinality HybridPP + XxHash64 - time: [69.109 µs 69.146 µs 69.187 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [69.049 µs 69.084 µs 69.124 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [68.988 µs 69.009 µs 69.033 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [68.943 µs 68.963 µs 68.988 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [70.049 µs 70.064 µs 70.083 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality HybridPP + WyHash - time: [70.277 µs 70.313 µs 70.358 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [70.012 µs 70.046 µs 70.093 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [70.488 µs 70.506 µs 70.530 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [70.420 µs 70.438 µs 70.462 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [70.657 µs 70.696 µs 70.745 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [70.346 µs 70.395 µs 70.467 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [70.328 µs 70.366 µs 70.419 µs] -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) high mild - 2 (4.00%) high severe - -Cardinality Tabac + XxHash64 - time: [114.24 ms 114.49 ms 114.91 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [122.20 ms 122.29 ms 122.43 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality SA + XxHash64 - time: [485.92 µs 486.18 µs 486.47 µs] - -Cardinality CF + WyHash - time: [188.36 µs 188.47 µs 188.62 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality CF + XxHash64 - time: [187.82 µs 187.89 µs 187.96 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) high mild - 8 (16.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [903.88 ms 904.91 ms 905.87 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Cardinality SM - time: [267.06 ms 267.12 ms 267.18 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Cardinality LLB + XxHash64 - time: [8.1425 µs 8.1522 µs 8.1648 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality LLB + WyHash - time: [8.4400 µs 8.4537 µs 8.4658 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low severe - 1 (2.00%) low mild - -Cardinality LLB + XxHash64 - time: [8.1514 µs 8.1587 µs 8.1686 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + WyHash - time: [8.3731 µs 8.3992 µs 8.4221 µs] -Found 8 outliers among 50 measurements (16.00%) - 6 (12.00%) low severe - 2 (4.00%) low mild - -Cardinality LLB + XxHash64 - time: [12.838 µs 12.843 µs 12.850 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality LLB + WyHash - time: [13.558 µs 13.564 µs 13.573 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [15.213 µs 15.234 µs 15.268 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + WyHash - time: [17.008 µs 17.058 µs 17.112 µs] - -Cardinality LLB + XxHash64 - time: [13.141 µs 13.149 µs 13.161 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality LLB + WyHash - time: [13.195 µs 13.209 µs 13.231 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.972 µs 14.987 µs 15.007 µs] - -Cardinality LLB + WyHash - time: [15.229 µs 15.242 µs 15.263 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [49.197 µs 49.250 µs 49.320 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality PP + WyHash - time: [49.216 µs 49.230 µs 49.248 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [49.189 µs 49.222 µs 49.268 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [49.203 µs 49.212 µs 49.223 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality PP + XxHash64 - time: [49.484 µs 49.505 µs 49.533 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Cardinality PP + WyHash - time: [49.520 µs 49.573 µs 49.671 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [51.492 µs 51.505 µs 51.522 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [50.870 µs 50.905 µs 50.946 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [49.971 µs 49.991 µs 50.013 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + WyHash - time: [49.906 µs 49.921 µs 49.940 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [50.080 µs 50.096 µs 50.114 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [50.987 µs 51.053 µs 51.127 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.090 µs 10.102 µs 10.116 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + WyHash - time: [10.200 µs 10.223 µs 10.250 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.081 µs 10.093 µs 10.106 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + WyHash - time: [10.107 µs 10.118 µs 10.126 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) low severe - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [17.062 µs 17.070 µs 17.081 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [17.626 µs 17.736 µs 17.856 µs] -Found 9 outliers among 50 measurements (18.00%) - 5 (10.00%) low severe - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [19.987 µs 19.990 µs 19.994 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Cardinality HybridLLB + WyHash - time: [20.097 µs 20.102 µs 20.107 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [17.432 µs 17.438 µs 17.444 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + WyHash - time: [18.192 µs 18.201 µs 18.212 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [20.236 µs 20.241 µs 20.247 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [19.670 µs 19.732 µs 19.776 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) low severe - 1 (2.00%) low mild - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [55.022 µs 55.042 µs 55.062 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [55.159 µs 55.178 µs 55.199 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [54.990 µs 55.009 µs 55.030 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [54.999 µs 55.016 µs 55.036 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [55.625 µs 55.670 µs 55.730 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + WyHash - time: [55.603 µs 55.626 µs 55.654 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [57.138 µs 57.156 µs 57.177 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [56.346 µs 56.387 µs 56.447 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [56.197 µs 56.210 µs 56.225 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [56.239 µs 56.260 µs 56.285 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [56.379 µs 56.395 µs 56.416 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridPP + WyHash - time: [55.973 µs 55.989 µs 56.010 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality Tabac + XxHash64 - time: [228.73 ms 228.82 ms 228.91 ms] - -Cardinality TabacPP + XxHash64 - time: [256.05 ms 256.11 ms 256.17 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Cardinality SA + XxHash64 - time: [447.97 µs 448.10 µs 448.23 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality CF + WyHash - time: [185.73 µs 185.94 µs 186.30 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Cardinality CF + XxHash64 - time: [185.69 µs 185.77 µs 185.87 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) high mild - 7 (14.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [1.2510 s 1.2518 s 1.2524 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Cardinality SM - time: [536.84 ms 537.04 ms 537.28 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Cardinality LLB + XxHash64 - time: [7.3173 µs 7.3366 µs 7.3714 µs] - change: [-3.6143% -3.3774% -3.0493%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality LLB + WyHash - time: [7.3496 µs 7.3546 µs 7.3611 µs] - change: [-3.7250% -3.1436% -2.6407%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [7.2672 µs 7.2709 µs 7.2755 µs] - change: [-4.9663% -4.7565% -4.5615%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + WyHash - time: [7.3019 µs 7.3051 µs 7.3092 µs] - change: [-2.2438% -2.1118% -2.0068%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Cardinality LLB + XxHash64 - time: [12.050 µs 12.057 µs 12.065 µs] - change: [-4.4701% -4.3270% -4.2150%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 50 measurements (12.00%) - 5 (10.00%) high mild - 1 (2.00%) high severe - -Cardinality LLB + WyHash - time: [12.055 µs 12.062 µs 12.072 µs] - change: [-5.4658% -5.3638% -5.2389%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [24.042 µs 24.055 µs 24.071 µs] - change: [-5.3248% -5.2379% -5.1523%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [24.420 µs 24.429 µs 24.439 µs] - change: [+2.6403% +2.7730% +2.9351%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + XxHash64 - time: [30.904 µs 30.918 µs 30.934 µs] - change: [+130.11% +132.41% +134.67%] (p = 0.00 < 0.05) - Performance has regressed. -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality LLB + WyHash - time: [31.032 µs 31.041 µs 31.054 µs] - change: [+142.30% +142.52% +142.77%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [23.543 µs 23.557 µs 23.577 µs] - change: [-4.2598% -3.7769% -3.2507%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [23.455 µs 23.465 µs 23.476 µs] - change: [-1.9260% -1.8365% -1.7477%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [9.0981 µs 9.1008 µs 9.1040 µs] - change: [+11.300% +11.378% +11.457%] (p = 0.00 < 0.05) - Performance has regressed. -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + WyHash - time: [8.7681 µs 8.7715 µs 8.7754 µs] - change: [+8.7690% +8.8484% +8.9171%] (p = 0.00 < 0.05) - Performance has regressed. -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [9.0860 µs 9.0898 µs 9.0953 µs] - change: [+10.645% +10.895% +11.164%] (p = 0.00 < 0.05) - Performance has regressed. -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [8.8299 µs 8.8464 µs 8.8678 µs] - change: [+9.3680% +9.5400% +9.7030%] (p = 0.00 < 0.05) - Performance has regressed. -Found 12 outliers among 50 measurements (24.00%) - 2 (4.00%) low mild - 1 (2.00%) high mild - 9 (18.00%) high severe - -Cardinality PP + XxHash64 - time: [12.958 µs 13.158 µs 13.305 µs] - change: [+1.4389% +2.7045% +3.9264%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality PP + WyHash - time: [12.340 µs 12.347 µs 12.357 µs] - change: [-1.7026% -0.1007% +1.1710%] (p = 0.91 > 0.05) - No change in performance detected. -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [23.721 µs 23.768 µs 23.828 µs] - change: [-6.6105% -5.8920% -4.9659%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality PP + WyHash - time: [22.634 µs 22.783 µs 22.908 µs] - change: [-8.1712% -7.8794% -7.5436%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 50 measurements (18.00%) - 9 (18.00%) high severe - -Cardinality PP + XxHash64 - time: [31.128 µs 31.175 µs 31.230 µs] - change: [+124.51% +124.88% +125.26%] (p = 0.00 < 0.05) - Performance has regressed. -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality PP + WyHash - time: [33.603 µs 33.615 µs 33.629 µs] - change: [+146.56% +146.88% +147.33%] (p = 0.00 < 0.05) - Performance has regressed. -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [23.652 µs 23.666 µs 23.683 µs] - change: [+0.1529% +0.3726% +0.5557%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [24.288 µs 24.297 µs 24.308 µs] - change: [-1.6137% -1.4958% -1.4044%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 50 measurements (14.00%) - 6 (12.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [10.122 µs 10.132 µs 10.144 µs] - change: [-7.5439% -6.8571% -6.3763%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Cardinality HybridLLB + WyHash - time: [10.086 µs 10.100 µs 10.114 µs] - change: [-7.8529% -6.9617% -6.1450%] (p = 0.00 < 0.05) - Performance has improved. - -Cardinality HybridLLB + XxHash64 - time: [9.3140 µs 9.3267 µs 9.3399 µs] - change: [-4.2833% -4.0512% -3.8248%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + WyHash - time: [9.2669 µs 9.2859 µs 9.3095 µs] - change: [-3.0298% -2.7892% -2.5399%] (p = 0.00 < 0.05) - Performance has improved. - -Cardinality HybridLLB + XxHash64 - time: [16.095 µs 16.109 µs 16.125 µs] - change: [+2.0320% +2.3236% +2.6178%] (p = 0.00 < 0.05) - Performance has regressed. -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.126 µs 16.139 µs 16.152 µs] - change: [-0.8547% -0.5363% -0.2444%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 50 measurements (20.00%) - 6 (12.00%) low mild - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [33.618 µs 33.634 µs 33.648 µs] - change: [+1.8070% +2.2739% +2.7808%] (p = 0.00 < 0.05) - Performance has regressed. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + WyHash - time: [31.231 µs 31.410 µs 31.549 µs] - change: [-6.5652% -6.2699% -5.9523%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 50 measurements (18.00%) - 9 (18.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [30.702 µs 30.724 µs 30.756 µs] - change: [+69.035% +70.821% +72.565%] (p = 0.00 < 0.05) - Performance has regressed. -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [30.549 µs 31.006 µs 31.440 µs] - change: [+74.133% +75.283% +76.695%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [30.815 µs 30.839 µs 30.871 µs] - change: [-7.5846% -7.4137% -7.2334%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [31.905 µs 32.041 µs 32.162 µs] - change: [-6.9344% -6.3046% -5.6947%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Cardinality HybridPP + XxHash64 - time: [9.8452 µs 9.8552 µs 9.8664 µs] - change: [-8.0489% -7.9079% -7.7670%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridPP + WyHash - time: [9.8400 µs 9.8468 µs 9.8544 µs] - change: [-8.1750% -8.0200% -7.8644%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [8.8977 µs 8.9086 µs 8.9213 µs] - change: [-10.146% -9.9670% -9.7748%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridPP + WyHash - time: [8.9133 µs 8.9214 µs 8.9319 µs] - change: [-11.282% -10.861% -10.473%] (p = 0.00 < 0.05) - Performance has improved. - -Cardinality HybridPP + XxHash64 - time: [18.376 µs 18.390 µs 18.405 µs] - change: [+13.174% +13.345% +13.518%] (p = 0.00 < 0.05) - Performance has regressed. -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) low mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [18.339 µs 18.352 µs 18.365 µs] - change: [+12.103% +12.228% +12.344%] (p = 0.00 < 0.05) - Performance has regressed. -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality HybridPP + XxHash64 - time: [32.492 µs 32.740 µs 32.985 µs] - change: [+1.2785% +1.6237% +2.0313%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [32.808 µs 32.932 µs 33.052 µs] - change: [+0.7638% +0.9465% +1.1582%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [27.146 µs 27.159 µs 27.175 µs] - change: [+53.377% +53.499% +53.630%] (p = 0.00 < 0.05) - Performance has regressed. -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [27.175 µs 27.184 µs 27.195 µs] - change: [+52.787% +52.965% +53.132%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) low mild - 3 (6.00%) high mild - -Cardinality HybridPP + XxHash64 - time: [31.723 µs 31.804 µs 31.874 µs] - change: [+1.0987% +1.5047% +1.9302%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality HybridPP + WyHash - time: [32.730 µs 32.806 µs 32.889 µs] - change: [+3.2416% +3.4236% +3.6418%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality Tabac + XxHash64 - time: [455.11 ms 455.20 ms 455.30 ms] - change: [-0.3935% -0.2814% -0.1993%] (p = 0.00 < 0.05) - Change within noise threshold. - -Cardinality TabacPP + XxHash64 - time: [408.47 ms 408.59 ms 408.73 ms] - change: [-3.5068% -3.4752% -3.4383%] (p = 0.00 < 0.05) - Performance has improved. - -Cardinality SA + XxHash64 - time: [126.24 µs 126.29 µs 126.37 µs] - change: [+0.1923% +0.2599% +0.3275%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality CF + WyHash - time: [186.31 µs 186.35 µs 186.39 µs] - change: [-0.0646% +0.0137% +0.0805%] (p = 0.73 > 0.05) - No change in performance detected. -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality CF + XxHash64 - time: [186.39 µs 186.53 µs 186.76 µs] - change: [+0.1283% +0.2404% +0.3584%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [34.279 ms 34.318 ms 34.399 ms] - change: [-3.0927% -2.8988% -2.6793%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Cardinality SM - time: [291.21 ms 291.29 ms 291.38 ms] - change: [+56.162% +56.309% +56.435%] (p = 0.00 < 0.05) - Performance has regressed. - -Cardinality LLB + XxHash64 - time: [7.4022 µs 7.4071 µs 7.4132 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + WyHash - time: [7.4735 µs 7.4754 µs 7.4780 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [8.2214 µs 8.2252 µs 8.2319 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality LLB + WyHash - time: [7.4773 µs 7.4841 µs 7.4939 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + XxHash64 - time: [11.999 µs 12.005 µs 12.012 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) high mild - 7 (14.00%) high severe - -Cardinality LLB + WyHash - time: [11.973 µs 11.976 µs 11.979 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + XxHash64 - time: [20.509 µs 20.541 µs 20.588 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + WyHash - time: [20.712 µs 20.718 µs 20.724 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.787 µs 14.823 µs 14.861 µs] - -Cardinality LLB + WyHash - time: [14.583 µs 14.592 µs 14.605 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + XxHash64 - time: [19.913 µs 19.920 µs 19.928 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + WyHash - time: [19.180 µs 19.185 µs 19.192 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [7.8929 µs 7.8956 µs 7.8987 µs] -Found 7 outliers among 50 measurements (14.00%) - 5 (10.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [7.9504 µs 7.9579 µs 7.9694 µs] -Found 8 outliers among 50 measurements (16.00%) - 5 (10.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [7.8956 µs 7.8978 µs 7.9004 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high mild - -Cardinality PP + WyHash - time: [7.9320 µs 7.9364 µs 7.9426 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Cardinality PP + XxHash64 - time: [12.224 µs 12.228 µs 12.233 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality PP + WyHash - time: [12.233 µs 12.237 µs 12.242 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [19.703 µs 19.708 µs 19.715 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [19.913 µs 19.922 µs 19.931 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low severe - 1 (2.00%) low mild - 1 (2.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [13.960 µs 13.984 µs 14.008 µs] -Found 11 outliers among 50 measurements (22.00%) - 6 (12.00%) low severe - 1 (2.00%) low mild - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [14.068 µs 14.078 µs 14.091 µs] -Found 10 outliers among 50 measurements (20.00%) - 2 (4.00%) high mild - 8 (16.00%) high severe - -Cardinality PP + XxHash64 - time: [20.033 µs 20.040 µs 20.047 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [19.913 µs 19.926 µs 19.942 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [8.5263 µs 8.5357 µs 8.5461 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [8.5193 µs 8.5289 µs 8.5403 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [8.4587 µs 8.4731 µs 8.4895 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + WyHash - time: [8.4721 µs 8.4821 µs 8.4942 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [14.894 µs 14.910 µs 14.926 µs] - -Cardinality HybridLLB + WyHash - time: [14.808 µs 14.817 µs 14.826 µs] - -Cardinality HybridLLB + XxHash64 - time: [22.270 µs 22.295 µs 22.329 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [22.565 µs 22.614 µs 22.677 µs] - -Cardinality HybridLLB + XxHash64 - time: [15.949 µs 15.965 µs 15.985 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.067 µs 16.095 µs 16.119 µs] - -Cardinality HybridLLB + XxHash64 - time: [23.756 µs 23.799 µs 23.864 µs] -Found 14 outliers among 50 measurements (28.00%) - 4 (8.00%) low mild - 4 (8.00%) high mild - 6 (12.00%) high severe - -Cardinality HybridLLB + WyHash - time: [22.622 µs 22.965 µs 23.372 µs] -Found 11 outliers among 50 measurements (22.00%) - 5 (10.00%) low mild - 6 (12.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [7.7171 µs 7.7261 µs 7.7347 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Cardinality HybridPP + WyHash - time: [7.8197 µs 7.9126 µs 7.9995 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [7.7419 µs 7.7703 µs 7.8126 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [7.7411 µs 7.7575 µs 7.7764 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [13.066 µs 13.075 µs 13.085 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [12.845 µs 12.849 µs 12.854 µs] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [22.505 µs 22.521 µs 22.538 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Cardinality HybridPP + WyHash - time: [23.107 µs 23.194 µs 23.317 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) low mild - 2 (4.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [16.097 µs 16.104 µs 16.112 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridPP + WyHash - time: [17.914 µs 18.269 µs 18.521 µs] - -Cardinality HybridPP + XxHash64 - time: [22.117 µs 22.126 µs 22.138 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Cardinality HybridPP + WyHash - time: [22.030 µs 22.208 µs 22.426 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality Tabac + XxHash64 - time: [914.32 ms 915.89 ms 917.82 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Cardinality TabacPP + XxHash64 - time: [1.2440 s 1.2448 s 1.2457 s] - -Cardinality SA + XxHash64 - time: [125.46 µs 125.52 µs 125.60 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) low severe - 4 (8.00%) high severe - -Cardinality CF + WyHash - time: [187.32 µs 187.45 µs 187.59 µs] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Cardinality CF + XxHash64 - time: [187.25 µs 187.33 µs 187.46 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [59.222 ms 59.273 ms 59.355 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality SM - time: [581.78 ms 589.92 ms 604.95 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Cardinality LLB + XxHash64 - time: [7.5991 µs 7.6625 µs 7.7648 µs] -Found 15 outliers among 50 measurements (30.00%) - 1 (2.00%) low severe - 5 (10.00%) low mild - 1 (2.00%) high mild - 8 (16.00%) high severe - -Cardinality LLB + WyHash - time: [7.5084 µs 7.5251 µs 7.5512 µs] -Found 7 outliers among 50 measurements (14.00%) - 7 (14.00%) high severe - -Cardinality LLB + XxHash64 - time: [7.5776 µs 7.5921 µs 7.6131 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Cardinality LLB + WyHash - time: [7.5805 µs 7.5823 µs 7.5844 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality LLB + XxHash64 - time: [14.135 µs 14.142 µs 14.149 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high severe - -Cardinality LLB + WyHash - time: [12.980 µs 12.990 µs 13.007 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality LLB + XxHash64 - time: [16.247 µs 16.275 µs 16.323 µs] -Found 6 outliers among 50 measurements (12.00%) - 4 (8.00%) high mild - 2 (4.00%) high severe - -Cardinality LLB + WyHash - time: [16.245 µs 16.306 µs 16.374 µs] -Found 7 outliers among 50 measurements (14.00%) - 7 (14.00%) high mild - -Cardinality LLB + XxHash64 - time: [17.263 µs 17.308 µs 17.380 µs] - -Cardinality LLB + WyHash - time: [18.222 µs 18.395 µs 18.543 µs] - -Cardinality LLB + XxHash64 - time: [16.074 µs 16.154 µs 16.231 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Cardinality LLB + WyHash - time: [16.417 µs 16.465 µs 16.527 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high mild - -Cardinality PP + XxHash64 - time: [8.1594 µs 8.1707 µs 8.1817 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [8.4993 µs 8.5437 µs 8.5957 µs] -Found 12 outliers among 50 measurements (24.00%) - 7 (14.00%) low severe - 4 (8.00%) low mild - 1 (2.00%) high severe - -Cardinality PP + XxHash64 - time: [8.3173 µs 8.3567 µs 8.4020 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Cardinality PP + WyHash - time: [8.1452 µs 8.1790 µs 8.2191 µs] - -Cardinality PP + XxHash64 - time: [12.203 µs 12.210 µs 12.219 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Cardinality PP + WyHash - time: [12.250 µs 12.259 µs 12.271 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [16.370 µs 16.411 µs 16.452 µs] -Found 12 outliers among 50 measurements (24.00%) - 7 (14.00%) low severe - 1 (2.00%) low mild - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + WyHash - time: [16.290 µs 16.331 µs 16.386 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + XxHash64 - time: [18.093 µs 18.103 µs 18.115 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality PP + WyHash - time: [17.710 µs 17.720 µs 17.732 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality PP + XxHash64 - time: [16.515 µs 16.525 µs 16.538 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Cardinality PP + WyHash - time: [16.870 µs 16.891 µs 16.914 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [8.7509 µs 8.7581 µs 8.7683 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [8.7221 µs 8.7267 µs 8.7318 µs] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [8.0122 µs 8.0667 µs 8.1173 µs] - -Cardinality HybridLLB + WyHash - time: [7.6804 µs 7.6894 µs 7.6990 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [11.791 µs 11.795 µs 11.800 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Cardinality HybridLLB + WyHash - time: [12.517 µs 12.641 µs 12.798 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.121 µs 16.130 µs 16.141 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.072 µs 16.163 µs 16.266 µs] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Cardinality HybridLLB + XxHash64 - time: [17.543 µs 17.575 µs 17.619 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridLLB + WyHash - time: [17.990 µs 18.008 µs 18.033 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality HybridLLB + XxHash64 - time: [16.091 µs 16.098 µs 16.106 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Cardinality HybridLLB + WyHash - time: [16.237 µs 16.245 µs 16.255 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [7.6738 µs 7.6789 µs 7.6857 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridPP + WyHash - time: [7.6457 µs 7.6488 µs 7.6521 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [6.8285 µs 6.9437 µs 7.1078 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridPP + WyHash - time: [6.8084 µs 6.8107 µs 6.8135 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [11.920 µs 11.927 µs 11.938 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridPP + WyHash - time: [11.940 µs 11.945 µs 11.951 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [16.080 µs 16.096 µs 16.119 µs] -Found 12 outliers among 50 measurements (24.00%) - 12 (24.00%) high severe - -Cardinality HybridPP + WyHash - time: [15.674 µs 15.679 µs 15.684 µs] -Found 11 outliers among 50 measurements (22.00%) - 4 (8.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [17.408 µs 17.412 µs 17.417 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + WyHash - time: [17.722 µs 17.727 µs 17.733 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Cardinality HybridPP + XxHash64 - time: [16.054 µs 16.163 µs 16.334 µs] -Found 11 outliers among 50 measurements (22.00%) - 4 (8.00%) high mild - 7 (14.00%) high severe - -Cardinality HybridPP + WyHash - time: [15.696 µs 15.775 µs 15.897 µs] -Found 9 outliers among 50 measurements (18.00%) - 9 (18.00%) high severe - -Cardinality Tabac + XxHash64 - time: [1.8220 s 1.8266 s 1.8342 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Cardinality TabacPP + XxHash64 - time: [1.3404 s 1.3409 s 1.3417 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality SA + XxHash64 - time: [125.12 µs 125.21 µs 125.33 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Cardinality CF + WyHash - time: [186.73 µs 186.79 µs 186.87 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Cardinality CF + XxHash64 - time: [187.69 µs 187.75 µs 187.83 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Cardinality FrankPP + SipHasher13 - time: [119.21 ms 119.38 ms 119.68 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality SM - time: [1.1611 s 1.1693 s 1.1855 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Cardinality H2B time: [147.58 µs 147.65 µs 147.74 µs] -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low severe - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality H2B time: [148.26 µs 150.73 µs 154.27 µs] -Found 20 outliers among 100 measurements (20.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 14 (14.00%) high severe - -Cardinality H2B> - time: [148.35 µs 148.40 µs 148.48 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Cardinality H2B> - time: [149.19 µs 149.39 µs 149.65 µs] -Found 20 outliers among 100 measurements (20.00%) - 20 (20.00%) high severe - -Cardinality H2B> - time: [148.17 µs 148.28 µs 148.43 µs] -Found 18 outliers among 100 measurements (18.00%) - 3 (3.00%) high mild - 15 (15.00%) high severe - -Cardinality H2B> - time: [148.66 µs 148.70 µs 148.76 µs] -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 10 (10.00%) high severe - -Cardinality H2B> - time: [149.27 µs 149.60 µs 150.03 µs] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) high mild - 15 (15.00%) high severe - -Cardinality H3B time: [147.44 µs 147.48 µs 147.53 µs] -Found 20 outliers among 100 measurements (20.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 16 (16.00%) high severe - -Cardinality H3B time: [148.30 µs 148.41 µs 148.54 µs] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Cardinality H3B> - time: [149.68 µs 149.87 µs 150.12 µs] -Found 13 outliers among 100 measurements (13.00%) - 5 (5.00%) high mild - 8 (8.00%) high severe - -Cardinality H3B> - time: [148.75 µs 148.80 µs 148.85 µs] -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 11 (11.00%) high severe - -Cardinality H3B> - time: [148.92 µs 151.15 µs 154.43 µs] -Found 17 outliers among 100 measurements (17.00%) - 6 (6.00%) high mild - 11 (11.00%) high severe - -Cardinality H3B> - time: [149.12 µs 149.49 µs 149.99 µs] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 12 (12.00%) high severe - -Cardinality H3B> - time: [148.34 µs 148.37 µs 148.42 µs] -Found 15 outliers among 100 measurements (15.00%) - 4 (4.00%) high mild - 11 (11.00%) high severe - -Cardinality HashSet time: [6.6455 µs 6.6482 µs 6.6523 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 12 (12.00%) high severe - diff --git a/statistical_comparisons/benches/cardinality.rs b/statistical_comparisons/benches/cardinality.rs deleted file mode 100644 index 4d8d53f..0000000 --- a/statistical_comparisons/benches/cardinality.rs +++ /dev/null @@ -1,345 +0,0 @@ -#![feature(test)] -extern crate test; - -use criterion::{criterion_group, criterion_main, Criterion}; -use hyperloglog_rs::prelude::*; -use std::collections::HashSet; -use std::hint::black_box; -use wyhash::WyHash; -mod utils; - -use utils::*; - -const RANDOM_STATE: u64 = 87561346897134_u64; -const NUMBER_OF_COUNTERS: usize = 10_000; -const NUMBER_OF_ELEMENTS: usize = 50_000; - -fn cardinality_bencher< - H: Estimator + hyperloglog_rs::prelude::Named + ExtendableApproximatedSet, ->( - b: &mut Criterion, -) { - let mut random_state = splitmix64(RANDOM_STATE); - let counters: Vec = (0..NUMBER_OF_COUNTERS) - .map(|_| { - let mut counter = H::default(); - random_state = splitmix64(random_state); - for value in iter_var_len_random_values(NUMBER_OF_ELEMENTS, None, random_state) { - counter.insert(&value); - } - counter - }) - .collect(); - - b.bench_function( - format!("Cardinality {}", H::default().name()).as_str(), - |b| { - b.iter(|| { - let mut total_cardinality = 0.0_f64; - for counter in counters.iter() { - total_cardinality += black_box(counter).estimate_cardinality(); - } - total_cardinality - }) - }, - ); -} - -macro_rules! bench_cardinality { - ($precision:ty, $bits:ty, $hasher:ty) => { - paste::item! { - fn [] (b: &mut Criterion) { - cardinality_bencher::>::ArrayRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::PackedRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::ArrayRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::PackedRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::PackedRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>::PackedRegister, $hasher>>>(b); - } - } - }; -} - -macro_rules! bench_cludflare_cardinality { - ($precision:ty, $bits:ty, $($hasher:ty),*) => { - $( - paste::item! { - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - } - )* - }; -} - -type XxHash64 = twox_hash::XxHash64; - -/// Macro to generate a criterion benchmark with the provided precision exponent and bits -macro_rules! bench_cardinality_bits { - ($precision:ty, $($bits:ty),*) => { - $( - bench_cardinality!($precision, $bits, WyHash); - bench_cardinality!($precision, $bits, XxHash64); - )* - }; -} - -/// Macro to generate criterion groups. -macro_rules! bench_cardinality_registers { - ($precision:ty, $sample_size:expr, $($register:expr),*) => { - $( - paste::paste! { - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [], [], [], - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [], [], [] - } - } - )* - }; -} - -/// Macro to generate a criterion benchmark with the provided precision exponents -macro_rules! bench_cardinalities { - ($(($precision:ty, $sample_size:expr)),*) => { - $( - bench_cludflare_cardinality!($precision, Bits6, WyHash, XxHash64); - bench_cardinality_bits!($precision, Bits6); - bench_cardinality_bits!($precision, Bits8); - - paste::item! { - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - cardinality_bencher::>(b); - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - - bench_cardinality_registers!($precision, $sample_size, "array", "packedarray"); - } - )* - }; -} - -macro_rules! bench_hyper_two_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - cardinality_bencher::>(b); - } - } - )* - }; -} - -macro_rules! bench_hyper_three_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - cardinality_bencher::>(b); - } - } - )* - }; -} - -use hypertwobits::h2b::{ - M1024 as M1024H2B, M128 as M128H2B, M2048 as M2048H2B, M256 as M256H2B, M4096 as M4096H2B, - M512 as M512H2B, M64 as M64H2B, -}; -bench_hyper_two_bits!(M64H2B, M128H2B, M256H2B, M512H2B, M1024H2B, M2048H2B, M4096H2B); - -use hypertwobits::h3b::{ - M1024 as M1024H3B, M128 as M128H3B, M2048 as M2048H3B, M256 as M256H3B, M4096 as M4096H3B, - M512 as M512H3B, M64 as M64H3B, -}; -bench_hyper_three_bits!(M64H3B, M128H3B, M256H3B, M512H3B, M1024H3B, M2048H3B, M4096H3B); - -fn bench_hashset_cardinality(b: &mut Criterion) { - cardinality_bencher::>(b); -} - -criterion_group!( - name = cardinality_hyper_two_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hypertwobits_m64h2b_cardinality, bench_hypertwobits_m128h2b_cardinality, bench_hypertwobits_m256h2b_cardinality, bench_hypertwobits_m512h2b_cardinality, bench_hypertwobits_m1024h2b_cardinality, bench_hypertwobits_m2048h2b_cardinality, bench_hypertwobits_m4096h2b_cardinality -); - -criterion_group!( - name = cardinality_hyper_three_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hyperthreebits_m64h3b_cardinality, bench_hyperthreebits_m128h3b_cardinality, bench_hyperthreebits_m256h3b_cardinality, bench_hyperthreebits_m512h3b_cardinality, bench_hyperthreebits_m1024h3b_cardinality, bench_hyperthreebits_m2048h3b_cardinality, bench_hyperthreebits_m4096h3b_cardinality -); - -criterion_group!( - name = cardinality_hashset; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hashset_cardinality -); - -#[cfg(feature = "low_precisions")] -bench_cardinalities!( - (Precision4, 100), - (Precision5, 100), - (Precision6, 100), - (Precision7, 100), - (Precision8, 100), - (Precision9, 100), - (Precision10, 100) -); - -#[cfg(feature = "medium_precisions")] -bench_cardinalities!( - (Precision11, 100), - (Precision12, 100), - (Precision13, 50), - (Precision14, 50), - (Precision15, 50), - (Precision16, 50) -); - -#[cfg(feature = "high_precisions")] -bench_cardinalities!((Precision17, 50), (Precision18, 50)); - -/// Macro to generate the criterion main for all precisions -macro_rules! bench_cardinality_main { - ($($precision:ty),*) => { - paste::paste!{ - criterion_main!( - $( - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - )* - cardinality_hyper_two_bits, - cardinality_hyper_three_bits, - cardinality_hashset - ); - } - }; -} - -bench_cardinality_main!( - Precision4, - Precision5, - Precision6, - Precision7, - Precision8, - Precision9, - Precision10, - Precision11, - Precision12, - Precision13, - Precision14, - Precision15, - Precision16, - Precision17, - Precision18 -); diff --git a/statistical_comparisons/benches/insert.log b/statistical_comparisons/benches/insert.log deleted file mode 100644 index 996ba5a..0000000 --- a/statistical_comparisons/benches/insert.log +++ /dev/null @@ -1,3531 +0,0 @@ -Insert PP + XxHash64 - time: [64.112 µs 64.131 µs 64.155 µs] - change: [-1.7437% -1.6533% -1.5739%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 6 (6.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [49.230 µs 49.242 µs 49.256 µs] - change: [-3.7448% -3.6725% -3.6110%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Insert PP + XxHash64 - time: [62.585 µs 62.621 µs 62.666 µs] - change: [-1.6811% -1.5717% -1.4525%] (p = 0.00 < 0.05) - Performance has improved. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 11 (11.00%) high severe - -Insert PP + WyHash - time: [47.792 µs 47.809 µs 47.835 µs] - change: [-0.2318% -0.1039% +0.0154%] (p = 0.11 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 15 (15.00%) high severe - -Insert PP + XxHash64 - time: [64.820 µs 64.861 µs 64.914 µs] - change: [+0.2686% +0.4216% +0.5525%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) high mild - 15 (15.00%) high severe - -Insert PP + WyHash - time: [51.287 µs 51.314 µs 51.346 µs] - change: [-0.6951% -0.1913% +0.1669%] (p = 0.50 > 0.05) - No change in performance detected. -Found 21 outliers among 100 measurements (21.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 15 (15.00%) high severe - -Insert PP + XxHash64 - time: [60.834 µs 60.904 µs 60.996 µs] - change: [-2.0368% -1.8645% -1.7024%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert PP + WyHash - time: [48.766 µs 48.781 µs 48.800 µs] - change: [-0.0360% +0.0168% +0.0665%] (p = 0.56 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 6 (6.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [77.993 µs 78.063 µs 78.136 µs] - change: [-1.3495% -1.2555% -1.1790%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 7 (7.00%) high mild - 11 (11.00%) high severe - -Insert PP + WyHash - time: [57.468 µs 57.495 µs 57.531 µs] - change: [+0.7800% +0.8789% +0.9750%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high severe - -Insert PP + XxHash64 - time: [75.632 µs 75.676 µs 75.725 µs] - change: [-0.8472% -0.7714% -0.6917%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Insert PP + WyHash - time: [54.340 µs 54.362 µs 54.391 µs] - change: [-0.1512% -0.0738% -0.0074%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [73.736 µs 73.812 µs 73.900 µs] - change: [-1.0024% -0.9122% -0.7987%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + WyHash - time: [54.091 µs 54.141 µs 54.205 µs] - change: [-0.1275% -0.0628% +0.0128%] (p = 0.08 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [72.372 µs 72.438 µs 72.521 µs] - change: [-0.3151% -0.0852% +0.0921%] (p = 0.47 > 0.05) - No change in performance detected. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [52.144 µs 52.182 µs 52.229 µs] - change: [-0.1602% -0.0977% -0.0240%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 20 outliers among 100 measurements (20.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 16 (16.00%) high severe - -Insert HybridPP + XxHash64 - time: [73.009 µs 73.048 µs 73.100 µs] - change: [-1.6288% -1.5281% -1.4309%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 7 (7.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [53.600 µs 53.635 µs 53.683 µs] - change: [+2.0244% +2.1502% +2.2372%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [70.602 µs 70.678 µs 70.779 µs] - change: [-1.3020% -1.2067% -1.1094%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + WyHash - time: [50.634 µs 50.671 µs 50.719 µs] - change: [-0.1006% -0.0044% +0.0765%] (p = 0.93 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) high mild - 12 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [81.021 µs 81.163 µs 81.339 µs] - change: [+0.6435% +0.7983% +0.9624%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [55.887 µs 55.916 µs 55.955 µs] - change: [-2.3553% -2.3098% -2.2640%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [76.227 µs 76.270 µs 76.312 µs] - change: [-1.4997% -1.4033% -1.3171%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 13 (13.00%) low mild - 5 (5.00%) high mild - -Insert HybridPP + WyHash - time: [55.413 µs 55.465 µs 55.528 µs] - change: [+1.0611% +1.1736% +1.2864%] (p = 0.00 < 0.05) - Performance has regressed. -Found 20 outliers among 100 measurements (20.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 15 (15.00%) high severe - -Insert Tabac + XxHash64 - time: [73.486 µs 73.517 µs 73.555 µs] - change: [-0.3224% -0.1598% -0.0242%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Insert TabacPP + XxHash64 - time: [80.663 µs 80.711 µs 80.768 µs] - change: [-0.1928% -0.1183% -0.0478%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Insert SA + XxHash64 - time: [65.053 µs 65.086 µs 65.119 µs] - change: [-2.1949% -2.1371% -2.0739%] (p = 0.00 < 0.05) - Performance has improved. -Found 21 outliers among 100 measurements (21.00%) - 10 (10.00%) low mild - 5 (5.00%) high mild - 6 (6.00%) high severe - -Insert CF + WyHash - time: [53.128 µs 53.139 µs 53.153 µs] - change: [+0.1042% +0.3221% +0.4902%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert CF + XxHash64 - time: [82.430 µs 82.485 µs 82.555 µs] - change: [-1.7082% -1.6369% -1.5624%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Insert FrankPP + SipHasher13 - time: [89.457 µs 89.521 µs 89.636 µs] - change: [+1.4598% +1.5576% +1.6519%] (p = 0.00 < 0.05) - Performance has regressed. -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) high mild - 2 (10.00%) high severe - -Insert SM time: [419.72 µs 420.46 µs 421.31 µs] - change: [-0.4488% -0.2132% +0.0732%] (p = 0.14 > 0.05) - No change in performance detected. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert PP + XxHash64 - time: [64.442 µs 64.474 µs 64.518 µs] - change: [-2.7366% -2.5415% -2.3292%] (p = 0.00 < 0.05) - Performance has improved. -Found 23 outliers among 100 measurements (23.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 17 (17.00%) high severe - -Insert PP + WyHash - time: [51.738 µs 51.764 µs 51.796 µs] - change: [-0.2076% -0.0935% +0.0062%] (p = 0.09 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 15 (15.00%) high severe - -Insert PP + XxHash64 - time: [61.886 µs 62.016 µs 62.182 µs] - change: [-2.5712% -2.4080% -2.2299%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Insert PP + WyHash - time: [47.923 µs 47.939 µs 47.962 µs] - change: [-0.0981% -0.0215% +0.0534%] (p = 0.58 > 0.05) - No change in performance detected. -Found 16 outliers among 100 measurements (16.00%) - 5 (5.00%) high mild - 11 (11.00%) high severe - -Insert PP + XxHash64 - time: [64.797 µs 64.813 µs 64.833 µs] - change: [-1.3813% -1.3417% -1.3001%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 8 (8.00%) low mild - 6 (6.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [56.069 µs 56.098 µs 56.134 µs] - change: [-0.0670% +0.0320% +0.1586%] (p = 0.61 > 0.05) - No change in performance detected. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) high mild - 10 (10.00%) high severe - -Insert PP + XxHash64 - time: [62.509 µs 62.552 µs 62.621 µs] - change: [-0.4090% -0.1932% +0.1224%] (p = 0.16 > 0.05) - No change in performance detected. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [48.956 µs 48.973 µs 48.997 µs] - change: [+0.1223% +0.2637% +0.4480%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 13 (13.00%) high severe - -Insert PP + XxHash64 - time: [81.618 µs 81.654 µs 81.700 µs] - change: [-0.8665% -0.7169% -0.5518%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [56.646 µs 56.671 µs 56.700 µs] - change: [-2.3776% -2.2972% -2.1982%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert PP + XxHash64 - time: [76.914 µs 76.954 µs 77.012 µs] - change: [-1.7014% -1.6007% -1.4894%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 11 (11.00%) high severe - -Insert PP + WyHash - time: [53.930 µs 53.946 µs 53.965 µs] - change: [-2.6914% -2.5799% -2.5026%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [75.615 µs 75.677 µs 75.753 µs] - change: [-0.1868% -0.0438% +0.0918%] (p = 0.56 > 0.05) - No change in performance detected. - -Insert HybridPP + WyHash - time: [57.890 µs 57.909 µs 57.932 µs] - change: [+11.495% +11.606% +11.716%] (p = 0.00 < 0.05) - Performance has regressed. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [72.920 µs 72.943 µs 72.967 µs] - change: [-1.7013% -1.3512% -1.0419%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 7 (7.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [52.497 µs 52.524 µs 52.553 µs] - change: [-3.0229% -2.8985% -2.7611%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [76.142 µs 76.293 µs 76.451 µs] - change: [+0.0435% +0.2587% +0.4370%] (p = 0.01 < 0.05) - Change within noise threshold. - -Insert HybridPP + WyHash - time: [53.451 µs 53.535 µs 53.644 µs] - change: [+0.1704% +0.3541% +0.5824%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 18 outliers among 100 measurements (18.00%) - 6 (6.00%) high mild - 12 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [71.559 µs 71.594 µs 71.639 µs] - change: [-0.6089% -0.4908% -0.3711%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 23 outliers among 100 measurements (23.00%) - 3 (3.00%) low severe - 4 (4.00%) low mild - 3 (3.00%) high mild - 13 (13.00%) high severe - -Insert HybridPP + WyHash - time: [52.534 µs 52.547 µs 52.563 µs] - change: [-0.0000% +0.0604% +0.1274%] (p = 0.07 > 0.05) - No change in performance detected. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [82.656 µs 82.708 µs 82.768 µs] - change: [-1.4425% -1.3504% -1.2477%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 8 (8.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [57.347 µs 57.397 µs 57.466 µs] - change: [+1.1303% +1.2455% +1.3801%] (p = 0.00 < 0.05) - Performance has regressed. -Found 17 outliers among 100 measurements (17.00%) - 5 (5.00%) high mild - 12 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [78.331 µs 78.353 µs 78.377 µs] - change: [-0.4554% -0.2802% -0.1285%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 7 (7.00%) high mild - 1 (1.00%) high severe - -Insert HybridPP + WyHash - time: [54.259 µs 54.276 µs 54.298 µs] - change: [-2.8859% -2.6212% -2.3627%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) high mild - 9 (9.00%) high severe - -Insert Tabac + XxHash64 - time: [74.172 µs 74.191 µs 74.216 µs] - change: [-1.0389% -0.6784% -0.3515%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) high mild - 2 (10.00%) high severe - -Insert TabacPP + XxHash64 - time: [81.662 µs 81.726 µs 81.812 µs] - change: [-0.5231% -0.3219% -0.1208%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert SA + XxHash64 - time: [64.693 µs 64.744 µs 64.797 µs] - change: [-3.5945% -3.4749% -3.3579%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Insert CF + WyHash - time: [54.451 µs 54.518 µs 54.601 µs] - change: [-2.7839% -2.6546% -2.5255%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Insert CF + XxHash64 - time: [83.046 µs 83.106 µs 83.178 µs] - change: [-1.9483% -1.8602% -1.7612%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 5 (5.00%) high mild - 11 (11.00%) high severe - -Insert FrankPP + SipHasher13 - time: [89.734 µs 90.189 µs 90.678 µs] - change: [+1.5589% +1.8185% +2.1699%] (p = 0.00 < 0.05) - Performance has regressed. -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high severe - -Insert SM time: [421.59 µs 422.47 µs 423.66 µs] - change: [+10.129% +10.460% +10.871%] (p = 0.00 < 0.05) - Performance has regressed. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert PP + XxHash64 - time: [67.314 µs 67.352 µs 67.410 µs] - change: [-0.1258% -0.0275% +0.0746%] (p = 0.60 > 0.05) - No change in performance detected. -Found 22 outliers among 100 measurements (22.00%) - 13 (13.00%) low mild - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert PP + WyHash - time: [52.790 µs 52.813 µs 52.841 µs] - change: [-0.0229% +0.0171% +0.0596%] (p = 0.44 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Insert PP + XxHash64 - time: [63.119 µs 63.171 µs 63.239 µs] - change: [-2.1173% -1.9721% -1.8135%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [48.503 µs 48.543 µs 48.590 µs] - change: [-0.0242% +0.0328% +0.0869%] (p = 0.26 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [75.504 µs 75.575 µs 75.669 µs] - change: [-1.0099% -0.9302% -0.8542%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Insert PP + WyHash - time: [54.072 µs 54.124 µs 54.197 µs] - change: [-0.4162% -0.3454% -0.2503%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 10 (10.00%) high severe - -Insert PP + XxHash64 - time: [62.496 µs 62.526 µs 62.566 µs] - change: [-2.0572% -1.4552% -0.5041%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [49.415 µs 49.427 µs 49.441 µs] - change: [-0.0907% -0.0258% +0.0269%] (p = 0.43 > 0.05) - No change in performance detected. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 6 (6.00%) high severe - -Insert PP + XxHash64 - time: [82.399 µs 82.426 µs 82.455 µs] - change: [-0.9925% -0.8457% -0.7253%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [54.835 µs 54.849 µs 54.867 µs] - change: [-3.7708% -3.7182% -3.6705%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert PP + XxHash64 - time: [79.909 µs 79.930 µs 79.951 µs] - change: [+0.2580% +0.3004% +0.3362%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) low severe - 3 (3.00%) high mild - 2 (2.00%) high severe - -Insert PP + WyHash - time: [54.599 µs 54.615 µs 54.632 µs] - change: [+0.6553% +0.7260% +0.7885%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [76.470 µs 76.504 µs 76.541 µs] - change: [-1.8813% -1.7768% -1.6771%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [57.134 µs 57.150 µs 57.170 µs] - change: [-0.3002% -0.1643% -0.0509%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [72.889 µs 72.916 µs 72.945 µs] - change: [-0.9915% -0.9135% -0.8501%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - -Insert HybridPP + WyHash - time: [54.026 µs 54.039 µs 54.056 µs] - change: [-0.1307% -0.0488% +0.0206%] (p = 0.22 > 0.05) - No change in performance detected. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low mild - 6 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [76.148 µs 76.174 µs 76.202 µs] - change: [-2.6980% -2.6197% -2.5302%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Insert HybridPP + WyHash - time: [58.398 µs 58.411 µs 58.428 µs] - change: [-0.1391% -0.0657% -0.0088%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [73.007 µs 73.035 µs 73.073 µs] - change: [-1.5660% -1.4068% -1.2613%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + WyHash - time: [53.028 µs 53.035 µs 53.044 µs] - change: [-0.0635% -0.0012% +0.0727%] (p = 0.97 > 0.05) - No change in performance detected. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [82.920 µs 82.950 µs 82.983 µs] - change: [-0.9672% -0.8660% -0.7792%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + WyHash - time: [57.722 µs 57.750 µs 57.784 µs] - change: [+0.4540% +0.5665% +0.6615%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [78.936 µs 78.960 µs 78.987 µs] - change: [-0.3997% -0.2260% -0.1096%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Insert HybridPP + WyHash - time: [53.053 µs 53.068 µs 53.086 µs] - change: [-6.4787% -6.3959% -6.3266%] (p = 0.00 < 0.05) - Performance has improved. -Found 19 outliers among 100 measurements (19.00%) - 5 (5.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Insert Tabac + XxHash64 - time: [75.391 µs 75.487 µs 75.680 µs] - change: [-0.5627% -0.1913% +0.1447%] (p = 0.32 > 0.05) - No change in performance detected. -Found 4 outliers among 20 measurements (20.00%) - 4 (20.00%) high severe - -Insert TabacPP + XxHash64 - time: [84.227 µs 84.249 µs 84.282 µs] - change: [-0.5186% -0.4524% -0.3847%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Insert SA + XxHash64 - time: [65.947 µs 66.039 µs 66.185 µs] - change: [-1.5102% -1.3563% -1.1803%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert CF + WyHash - time: [57.716 µs 57.741 µs 57.772 µs] - change: [+6.2279% +6.3273% +6.4181%] (p = 0.00 < 0.05) - Performance has regressed. -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) high mild - 14 (14.00%) high severe - -Insert CF + XxHash64 - time: [84.194 µs 84.235 µs 84.288 µs] - change: [-0.1424% -0.0610% +0.0391%] (p = 0.21 > 0.05) - No change in performance detected. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) high mild - 8 (8.00%) high severe - -Insert FrankPP + SipHasher13 - time: [87.171 µs 87.207 µs 87.265 µs] - change: [-1.8496% -1.6168% -1.4320%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high severe - -Insert SM time: [421.50 µs 422.20 µs 422.87 µs] - change: [+8.4701% +8.6814% +8.8688%] (p = 0.00 < 0.05) - Performance has regressed. - -Insert PP + XxHash64 - time: [66.955 µs 67.032 µs 67.140 µs] - change: [-4.4418% -4.1578% -3.8427%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Insert PP + WyHash - time: [51.632 µs 51.748 µs 51.904 µs] - change: [-0.0991% +0.0912% +0.3078%] (p = 0.38 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) high mild - 13 (13.00%) high severe - -Insert PP + XxHash64 - time: [65.228 µs 65.266 µs 65.313 µs] - change: [-1.3187% -1.2087% -1.0499%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 7 (7.00%) high mild - 6 (6.00%) high severe - -Insert PP + WyHash - time: [48.973 µs 48.992 µs 49.013 µs] - change: [-7.2091% -7.1443% -7.0841%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Insert PP + XxHash64 - time: [77.835 µs 77.882 µs 77.931 µs] - change: [-0.3886% -0.3182% -0.2382%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert PP + WyHash - time: [54.489 µs 54.504 µs 54.522 µs] - change: [-0.1401% -0.0604% +0.0214%] (p = 0.15 > 0.05) - No change in performance detected. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Insert PP + XxHash64 - time: [64.741 µs 64.849 µs 65.020 µs] - change: [-2.5743% -2.3920% -2.1852%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [50.032 µs 50.057 µs 50.086 µs] - change: [+0.3782% +0.4571% +0.5298%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [83.962 µs 84.002 µs 84.044 µs] - change: [-0.6019% -0.5035% -0.4117%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Insert PP + WyHash - time: [54.433 µs 54.450 µs 54.470 µs] - change: [-4.6410% -4.4696% -4.3224%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 4 (4.00%) high severe - -Insert PP + XxHash64 - time: [81.423 µs 81.447 µs 81.475 µs] - change: [-0.4151% -0.3749% -0.3312%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert PP + WyHash - time: [55.307 µs 55.321 µs 55.339 µs] - change: [-2.0357% -1.9461% -1.8588%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [77.879 µs 77.997 µs 78.193 µs] - change: [-1.3579% -1.2412% -1.0942%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [57.323 µs 57.341 µs 57.361 µs] - change: [+0.0256% +0.0717% +0.1203%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + XxHash64 - time: [74.105 µs 74.176 µs 74.285 µs] - change: [-2.8079% -2.6768% -2.5637%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [58.667 µs 58.690 µs 58.721 µs] - change: [-0.7303% -0.6718% -0.6156%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + XxHash64 - time: [77.669 µs 77.707 µs 77.755 µs] - change: [-1.1778% -1.0658% -0.9641%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [56.263 µs 56.283 µs 56.313 µs] - change: [-0.3620% -0.2170% -0.0952%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [74.335 µs 74.366 µs 74.416 µs] - change: [-0.1535% -0.0832% -0.0061%] (p = 0.02 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + WyHash - time: [52.909 µs 52.932 µs 52.961 µs] - change: [+1.1931% +1.4205% +1.6006%] (p = 0.00 < 0.05) - Performance has regressed. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [84.740 µs 84.803 µs 84.884 µs] - change: [-0.9327% -0.7877% -0.6436%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [58.952 µs 59.007 µs 59.077 µs] - change: [+3.1977% +3.3276% +3.4422%] (p = 0.00 < 0.05) - Performance has regressed. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [81.029 µs 81.070 µs 81.120 µs] - change: [+0.1265% +0.2194% +0.3208%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + WyHash - time: [57.279 µs 57.297 µs 57.319 µs] - change: [+0.6324% +0.8764% +1.0899%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) high mild - 9 (9.00%) high severe - -Insert Tabac + XxHash64 - time: [77.598 µs 77.746 µs 77.932 µs] - change: [-0.8399% -0.4684% -0.1316%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 4 outliers among 20 measurements (20.00%) - 4 (20.00%) high severe - -Insert TabacPP + XxHash64 - time: [88.545 µs 88.594 µs 88.656 µs] - change: [-0.4425% -0.3617% -0.2734%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert SA + XxHash64 - time: [65.132 µs 65.192 µs 65.267 µs] - change: [-1.5624% -1.4697% -1.3622%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 5 (5.00%) high mild - 8 (8.00%) high severe - -Insert CF + WyHash - time: [55.791 µs 55.815 µs 55.844 µs] - change: [-2.6926% -2.5412% -2.4172%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert CF + XxHash64 - time: [87.283 µs 87.460 µs 87.680 µs] - change: [-0.2850% -0.1763% -0.0636%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Insert FrankPP + SipHasher13 - time: [87.514 µs 87.554 µs 87.599 µs] - change: [-2.9460% -2.8420% -2.7528%] (p = 0.00 < 0.05) - Performance has improved. - -Insert SM time: [421.96 µs 422.46 µs 423.04 µs] - change: [+8.8370% +9.0007% +9.2155%] (p = 0.00 < 0.05) - Performance has regressed. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Insert PP + XxHash64 - time: [71.135 µs 71.192 µs 71.263 µs] - change: [-0.9985% -0.9279% -0.8512%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 5 (5.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [53.331 µs 53.359 µs 53.393 µs] - change: [-0.0724% -0.0045% +0.0635%] (p = 0.90 > 0.05) - No change in performance detected. -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) high mild - 13 (13.00%) high severe - -Insert PP + XxHash64 - time: [67.837 µs 67.942 µs 68.100 µs] - change: [-1.8334% -1.7282% -1.6022%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Insert PP + WyHash - time: [51.220 µs 51.238 µs 51.260 µs] - change: [-0.4255% -0.3321% -0.2514%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [70.504 µs 70.536 µs 70.573 µs] - change: [-5.3087% -5.2380% -5.1666%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert PP + WyHash - time: [51.459 µs 51.491 µs 51.531 µs] - change: [-0.3543% -0.1565% +0.0020%] (p = 0.09 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 10 (10.00%) high severe - -Insert PP + XxHash64 - time: [67.690 µs 67.720 µs 67.754 µs] - change: [-2.6536% -2.5613% -2.4854%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 6 (6.00%) high mild - 10 (10.00%) high severe - -Insert PP + WyHash - time: [49.229 µs 49.258 µs 49.306 µs] - change: [-0.1319% -0.0427% +0.0257%] (p = 0.33 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Insert PP + XxHash64 - time: [86.234 µs 86.268 µs 86.307 µs] - change: [-3.7060% -3.2784% -2.9337%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [55.088 µs 55.105 µs 55.126 µs] - change: [-2.2249% -2.1125% -2.0196%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Insert PP + XxHash64 - time: [84.189 µs 84.254 µs 84.350 µs] - change: [-0.1356% -0.0754% -0.0095%] (p = 0.03 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 13 (13.00%) high severe - -Insert PP + WyHash - time: [54.749 µs 54.764 µs 54.781 µs] - change: [-0.8436% -0.7298% -0.6408%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [80.498 µs 80.517 µs 80.541 µs] - change: [-1.2069% -1.1006% -1.0204%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [57.854 µs 57.867 µs 57.881 µs] - change: [-0.2334% -0.1423% -0.0733%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [77.780 µs 77.854 µs 77.940 µs] - change: [-0.7980% -0.7157% -0.6243%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + WyHash - time: [57.216 µs 57.232 µs 57.250 µs] - change: [-0.0761% +0.0113% +0.0867%] (p = 0.80 > 0.05) - No change in performance detected. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [80.183 µs 80.234 µs 80.284 µs] - change: [-0.7078% -0.6395% -0.5787%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 11 (11.00%) high severe - -Insert HybridPP + WyHash - time: [56.727 µs 56.753 µs 56.786 µs] - change: [-0.1229% -0.0233% +0.0579%] (p = 0.64 > 0.05) - No change in performance detected. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [76.451 µs 76.495 µs 76.563 µs] - change: [-1.9544% -1.6910% -1.2846%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) low mild - 3 (3.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + WyHash - time: [54.229 µs 54.241 µs 54.254 µs] - change: [-0.3385% -0.2328% -0.1480%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [87.416 µs 87.487 µs 87.579 µs] - change: [+0.0802% +0.1682% +0.2551%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + WyHash - time: [56.087 µs 56.109 µs 56.137 µs] - change: [-1.0401% -0.9604% -0.8853%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [83.388 µs 83.415 µs 83.442 µs] - change: [-0.8537% -0.7830% -0.7094%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high severe - -Insert HybridPP + WyHash - time: [57.726 µs 57.755 µs 57.787 µs] - change: [+0.4525% +0.5630% +0.6602%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high severe - -Insert Tabac + XxHash64 - time: [79.284 µs 79.315 µs 79.358 µs] - change: [-2.2957% -2.1500% -1.9651%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert TabacPP + XxHash64 - time: [97.396 µs 97.426 µs 97.457 µs] - change: [-0.7273% -0.5914% -0.4741%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert SA + XxHash64 - time: [66.250 µs 66.320 µs 66.390 µs] - change: [-1.5422% -1.3542% -1.1586%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Insert CF + WyHash - time: [57.975 µs 58.000 µs 58.031 µs] - change: [-3.7461% -3.3004% -2.9086%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert CF + XxHash64 - time: [88.935 µs 88.972 µs 89.014 µs] - change: [-1.5114% -1.4362% -1.3674%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Insert FrankPP + SipHasher13 - time: [87.211 µs 87.229 µs 87.257 µs] - change: [-1.7848% -1.5665% -1.3020%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high severe - -Insert SM time: [420.98 µs 421.17 µs 421.37 µs] - change: [+8.7800% +9.0692% +9.3947%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 20 measurements (25.00%) - 1 (5.00%) low mild - 1 (5.00%) high mild - 3 (15.00%) high severe - -Insert PP + XxHash64 - time: [76.421 µs 76.579 µs 76.807 µs] - change: [-4.0327% -3.4789% -2.8875%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert PP + WyHash - time: [52.357 µs 52.381 µs 52.412 µs] - change: [-0.0268% +0.0710% +0.1888%] (p = 0.21 > 0.05) - No change in performance detected. -Found 14 outliers among 100 measurements (14.00%) - 3 (3.00%) high mild - 11 (11.00%) high severe - -Insert PP + XxHash64 - time: [74.419 µs 74.445 µs 74.477 µs] - change: [-1.3266% -1.2492% -1.1782%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [49.154 µs 49.192 µs 49.244 µs] - change: [-0.0192% +0.0835% +0.1723%] (p = 0.09 > 0.05) - No change in performance detected. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert PP + XxHash64 - time: [85.490 µs 85.547 µs 85.617 µs] - change: [-0.7482% -0.6664% -0.5778%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 5 (5.00%) low mild - 6 (6.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [54.131 µs 54.150 µs 54.175 µs] - change: [-1.8296% -1.7735% -1.7148%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [73.281 µs 73.337 µs 73.400 µs] - change: [-1.7236% -1.6310% -1.5428%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Insert PP + WyHash - time: [49.460 µs 49.473 µs 49.487 µs] - change: [-0.5465% -0.4536% -0.3826%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert PP + XxHash64 - time: [89.826 µs 89.900 µs 89.998 µs] - change: [-0.2224% -0.1369% -0.0459%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Insert PP + WyHash - time: [54.565 µs 54.613 µs 54.672 µs] - change: [-1.7340% -1.6422% -1.5474%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 6 (6.00%) high mild - 9 (9.00%) high severe - -Insert PP + XxHash64 - time: [85.616 µs 85.803 µs 86.047 µs] - change: [-2.2546% -1.8956% -1.5727%] (p = 0.00 < 0.05) - Performance has improved. - -Insert PP + WyHash - time: [55.215 µs 55.252 µs 55.295 µs] - change: [+0.0362% +0.1083% +0.1904%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + XxHash64 - time: [85.346 µs 85.416 µs 85.503 µs] - change: [-0.1628% -0.0867% -0.0126%] (p = 0.02 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + WyHash - time: [57.250 µs 57.278 µs 57.311 µs] - change: [-0.0830% +0.0279% +0.1346%] (p = 0.64 > 0.05) - No change in performance detected. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [81.719 µs 81.772 µs 81.843 µs] - change: [-2.1300% -1.9921% -1.8266%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [55.131 µs 55.160 µs 55.191 µs] - change: [-0.0458% +0.0592% +0.1551%] (p = 0.26 > 0.05) - No change in performance detected. - -Insert HybridPP + XxHash64 - time: [85.582 µs 85.656 µs 85.749 µs] - change: [-1.8788% -1.7637% -1.6324%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + WyHash - time: [56.663 µs 56.690 µs 56.726 µs] - change: [-0.3334% -0.1554% -0.0018%] (p = 0.06 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [80.648 µs 80.713 µs 80.791 µs] - change: [-1.2437% -1.1202% -1.0191%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + WyHash - time: [53.295 µs 53.330 µs 53.373 µs] - change: [-0.1828% -0.0821% +0.0221%] (p = 0.12 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [91.606 µs 91.677 µs 91.766 µs] - change: [-0.6943% -0.5985% -0.4997%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [58.543 µs 58.567 µs 58.595 µs] - change: [+4.2476% +4.3463% +4.4373%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [87.774 µs 87.809 µs 87.862 µs] - change: [-0.5149% -0.3667% -0.2068%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [57.759 µs 57.957 µs 58.242 µs] - change: [-0.4405% -0.2143% +0.0744%] (p = 0.11 > 0.05) - No change in performance detected. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) high mild - 9 (9.00%) high severe - -Insert Tabac + XxHash64 - time: [86.414 µs 86.467 µs 86.536 µs] - change: [-0.6709% -0.4173% -0.2033%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Insert TabacPP + XxHash64 - time: [112.72 µs 112.86 µs 113.03 µs] - change: [-0.9341% -0.6530% -0.4429%] (p = 0.00 < 0.05) - Change within noise threshold. - -Insert SA + XxHash64 - time: [66.132 µs 66.219 µs 66.319 µs] - change: [+0.1972% +0.4043% +0.7487%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert CF + WyHash - time: [60.001 µs 60.339 µs 60.864 µs] - change: [-2.4477% -2.1645% -1.7877%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) high mild - 13 (13.00%) high severe - -Insert CF + XxHash64 - time: [95.273 µs 95.352 µs 95.459 µs] - change: [-1.8160% -1.7309% -1.6303%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert FrankPP + SipHasher13 - time: [86.728 µs 86.752 µs 86.778 µs] - change: [-3.1355% -3.0423% -2.9477%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Insert SM time: [419.32 µs 419.81 µs 420.38 µs] - change: [-2.5067% -2.3291% -2.1665%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Insert PP + XxHash64 - time: [84.543 µs 84.584 µs 84.638 µs] - change: [-0.5883% -0.4765% -0.3827%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Insert PP + WyHash - time: [51.307 µs 51.322 µs 51.343 µs] - change: [-0.1500% -0.0753% -0.0146%] (p = 0.02 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Insert PP + XxHash64 - time: [81.381 µs 81.409 µs 81.440 µs] - change: [-1.2411% -1.1747% -1.1144%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Insert PP + WyHash - time: [49.389 µs 49.414 µs 49.447 µs] - change: [+0.0929% +0.2274% +0.3463%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [93.199 µs 93.246 µs 93.304 µs] - change: [-1.3972% -1.3333% -1.2654%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert PP + WyHash - time: [53.826 µs 53.844 µs 53.866 µs] - change: [-0.0961% +0.0043% +0.0900%] (p = 0.94 > 0.05) - No change in performance detected. -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Insert PP + XxHash64 - time: [80.437 µs 80.523 µs 80.656 µs] - change: [-1.2539% -1.1439% -1.0439%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Insert PP + WyHash - time: [49.960 µs 49.981 µs 50.007 µs] - change: [+0.1162% +0.1730% +0.2247%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Insert PP + XxHash64 - time: [96.390 µs 96.593 µs 96.861 µs] - change: [+0.1494% +0.3615% +0.5889%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 10 (10.00%) high severe - -Insert PP + WyHash - time: [54.988 µs 55.011 µs 55.041 µs] - change: [+0.9726% +1.0204% +1.0666%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) low mild - 5 (5.00%) high severe - -Insert PP + XxHash64 - time: [96.667 µs 96.695 µs 96.727 µs] - change: [-0.8826% -0.8205% -0.7564%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 7 (7.00%) high mild - 2 (2.00%) high severe - -Insert PP + WyHash - time: [55.118 µs 55.140 µs 55.168 µs] - change: [+0.3901% +0.4326% +0.4802%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + XxHash64 - time: [92.844 µs 92.899 µs 92.965 µs] - change: [-0.9215% -0.8116% -0.6920%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + WyHash - time: [57.166 µs 57.211 µs 57.279 µs] - change: [-0.0886% +0.0092% +0.1018%] (p = 0.86 > 0.05) - No change in performance detected. -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [90.008 µs 90.078 µs 90.163 µs] - change: [-1.1157% -1.0110% -0.8940%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Insert HybridPP + WyHash - time: [55.164 µs 55.200 µs 55.246 µs] - change: [-2.0235% -1.9568% -1.8954%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 11 (11.00%) high severe - -Insert HybridPP + XxHash64 - time: [93.029 µs 93.102 µs 93.213 µs] - change: [-0.5618% -0.4531% -0.3367%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + WyHash - time: [56.578 µs 56.617 µs 56.666 µs] - change: [-0.1568% +0.0580% +0.2185%] (p = 0.59 > 0.05) - No change in performance detected. -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) low mild - 1 (1.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [89.252 µs 89.321 µs 89.427 µs] - change: [-0.6615% -0.6077% -0.5450%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + WyHash - time: [53.716 µs 53.734 µs 53.756 µs] - change: [-0.0437% +0.0258% +0.0922%] (p = 0.48 > 0.05) - No change in performance detected. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [100.22 µs 100.27 µs 100.33 µs] - change: [-0.2832% -0.2303% -0.1736%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 4 (4.00%) low mild - 2 (2.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + WyHash - time: [56.629 µs 56.671 µs 56.723 µs] - change: [-1.4060% -1.2864% -1.1558%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + XxHash64 - time: [96.286 µs 96.364 µs 96.469 µs] - change: [-0.5584% -0.4699% -0.3866%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 17 outliers among 100 measurements (17.00%) - 10 (10.00%) high mild - 7 (7.00%) high severe - -Insert HybridPP + WyHash - time: [57.954 µs 57.981 µs 58.012 µs] - change: [-0.1314% -0.0461% +0.0313%] (p = 0.29 > 0.05) - No change in performance detected. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Insert Tabac + XxHash64 - time: [93.919 µs 93.999 µs 94.136 µs] - change: [-1.1156% -0.9463% -0.7735%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert TabacPP + XxHash64 - time: [141.56 µs 141.90 µs 142.27 µs] - change: [+0.1098% +0.3693% +0.6174%] (p = 0.01 < 0.05) - Change within noise threshold. - -Insert SA + XxHash64 - time: [65.963 µs 65.993 µs 66.026 µs] - change: [-2.1704% -2.0540% -1.9280%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 5 (5.00%) high severe - -Insert CF + WyHash - time: [63.234 µs 63.268 µs 63.306 µs] - change: [-0.0787% +0.0459% +0.1844%] (p = 0.50 > 0.05) - No change in performance detected. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) high mild - 6 (6.00%) high severe - -Insert CF + XxHash64 - time: [105.45 µs 105.51 µs 105.59 µs] - change: [+0.1446% +0.2135% +0.3026%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert FrankPP + SipHasher13 - time: [86.520 µs 86.835 µs 87.288 µs] - change: [-1.8819% -1.6414% -1.3411%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high severe - -Insert SM time: [423.54 µs 423.84 µs 424.23 µs] - change: [+12.028% +12.212% +12.435%] (p = 0.00 < 0.05) - Performance has regressed. -Found 4 outliers among 20 measurements (20.00%) - 1 (5.00%) low mild - 2 (10.00%) high mild - 1 (5.00%) high severe - -Insert PP + XxHash64 - time: [92.671 µs 92.698 µs 92.729 µs] - change: [-0.4549% -0.3552% -0.2684%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 6 (6.00%) high mild - 5 (5.00%) high severe - -Insert PP + WyHash - time: [51.989 µs 52.001 µs 52.016 µs] - change: [-0.2546% -0.1118% -0.0082%] (p = 0.07 > 0.05) - No change in performance detected. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert PP + XxHash64 - time: [88.109 µs 88.153 µs 88.210 µs] - change: [+0.0320% +0.1446% +0.2508%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Insert PP + WyHash - time: [51.886 µs 51.902 µs 51.921 µs] - change: [+0.0171% +0.1868% +0.3856%] (p = 0.03 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Insert PP + XxHash64 - time: [100.84 µs 100.89 µs 100.95 µs] - change: [-0.3955% -0.2890% -0.1917%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 5 (5.00%) high severe - -Insert PP + WyHash - time: [54.006 µs 54.020 µs 54.039 µs] - change: [-0.0836% -0.0068% +0.0576%] (p = 0.86 > 0.05) - No change in performance detected. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 9 (9.00%) high severe - -Insert PP + XxHash64 - time: [89.297 µs 89.348 µs 89.395 µs] - change: [-0.2322% -0.0476% +0.1437%] (p = 0.62 > 0.05) - No change in performance detected. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [50.826 µs 50.865 µs 50.909 µs] - change: [-0.0756% +0.1699% +0.4275%] (p = 0.18 > 0.05) - No change in performance detected. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Insert PP + XxHash64 - time: [102.32 µs 102.38 µs 102.46 µs] - change: [-0.9176% -0.7328% -0.5755%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) high mild - 9 (9.00%) high severe - -Insert PP + WyHash - time: [54.197 µs 54.213 µs 54.234 µs] - change: [-1.8491% -1.7398% -1.6490%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Insert PP + XxHash64 - time: [104.23 µs 104.26 µs 104.30 µs] - change: [-0.6197% -0.4886% -0.3716%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Insert PP + WyHash - time: [55.534 µs 55.548 µs 55.565 µs] - change: [+0.3245% +0.3664% +0.4073%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 14 outliers among 100 measurements (14.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [102.80 µs 102.90 µs 103.09 µs] - change: [+0.0186% +0.1487% +0.3136%] (p = 0.04 < 0.05) - Change within noise threshold. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + WyHash - time: [60.156 µs 60.185 µs 60.215 µs] - change: [+2.1533% +2.2853% +2.4096%] (p = 0.00 < 0.05) - Performance has regressed. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [100.56 µs 100.59 µs 100.62 µs] - change: [-0.6045% -0.4516% -0.3040%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 13 outliers among 100 measurements (13.00%) - 3 (3.00%) low mild - 4 (4.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [58.921 µs 58.946 µs 58.975 µs] - change: [-0.3242% +0.0659% +0.3156%] (p = 0.78 > 0.05) - No change in performance detected. - -Insert HybridPP + XxHash64 - time: [103.12 µs 103.16 µs 103.20 µs] - change: [-0.8749% -0.7733% -0.6751%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 10 (10.00%) high severe - -Insert HybridPP + WyHash - time: [58.895 µs 58.918 µs 58.946 µs] - change: [+1.4183% +1.5135% +1.6163%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [99.410 µs 99.448 µs 99.491 µs] - change: [-2.2938% -1.8546% -1.4321%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Insert HybridPP + WyHash - time: [57.274 µs 57.312 µs 57.372 µs] - change: [-2.4287% -1.9677% -1.5179%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Insert HybridPP + XxHash64 - time: [122.43 µs 122.52 µs 122.62 µs] - change: [+10.868% +11.304% +11.734%] (p = 0.00 < 0.05) - Performance has regressed. -Found 18 outliers among 100 measurements (18.00%) - 5 (5.00%) high mild - 13 (13.00%) high severe - -Insert HybridPP + WyHash - time: [57.819 µs 57.838 µs 57.859 µs] - change: [-0.9028% -0.8332% -0.7677%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [108.09 µs 108.14 µs 108.21 µs] - change: [+0.5598% +0.6037% +0.6472%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Insert HybridPP + WyHash - time: [60.826 µs 60.855 µs 60.887 µs] - change: [+0.4071% +0.4655% +0.5215%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Insert Tabac + XxHash64 - time: [102.59 µs 102.62 µs 102.65 µs] - change: [-0.3650% -0.2447% -0.1576%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Insert TabacPP + XxHash64 - time: [191.61 µs 192.06 µs 192.41 µs] - change: [-0.9687% -0.7135% -0.4313%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Insert SA + XxHash64 - time: [66.031 µs 66.077 µs 66.130 µs] - change: [-1.9459% -1.8045% -1.6604%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Insert CF + WyHash - time: [64.467 µs 64.521 µs 64.589 µs] - change: [-1.7890% -1.5742% -1.3854%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Insert CF + XxHash64 - time: [115.19 µs 115.23 µs 115.29 µs] - change: [-1.0831% -1.0179% -0.9453%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 18 outliers among 100 measurements (18.00%) - 1 (1.00%) low mild - 7 (7.00%) high mild - 10 (10.00%) high severe - -Insert FrankPP + SipHasher13 - time: [86.500 µs 86.519 µs 86.542 µs] - change: [-2.3776% -2.2903% -2.1504%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 20 measurements (15.00%) - 2 (10.00%) high mild - 1 (5.00%) high severe - -Insert SM time: [422.12 µs 422.85 µs 423.85 µs] - change: [+0.2733% +0.4894% +0.7296%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Insert PP + XxHash64 - time: [92.809 µs 92.837 µs 92.870 µs] - change: [-0.7984% -0.7460% -0.6992%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Insert PP + WyHash - time: [51.955 µs 51.983 µs 52.020 µs] - change: [-0.0985% +0.0100% +0.1449%] (p = 0.87 > 0.05) - No change in performance detected. -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 13 (13.00%) high severe - -Insert PP + XxHash64 - time: [88.965 µs 88.990 µs 89.021 µs] - change: [-0.8265% -0.7429% -0.6606%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 12 (12.00%) high severe - -Insert PP + WyHash - time: [51.976 µs 51.991 µs 52.011 µs] - change: [-1.7199% -1.5592% -1.3955%] (p = 0.00 < 0.05) - Performance has improved. -Found 19 outliers among 100 measurements (19.00%) - 1 (1.00%) high mild - 18 (18.00%) high severe - -Insert PP + XxHash64 - time: [102.15 µs 102.17 µs 102.20 µs] - change: [-0.6385% -0.5831% -0.5319%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert PP + WyHash - time: [54.614 µs 54.627 µs 54.644 µs] - change: [-0.2504% -0.1329% -0.0350%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low severe - 3 (3.00%) high mild - 6 (6.00%) high severe - -Insert PP + XxHash64 - time: [88.784 µs 88.819 µs 88.859 µs] - change: [-1.0943% -0.9689% -0.8488%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 16 outliers among 100 measurements (16.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Insert PP + WyHash - time: [51.394 µs 51.428 µs 51.470 µs] - change: [-0.4001% -0.2439% -0.0973%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Insert PP + XxHash64 - time: [101.68 µs 101.72 µs 101.77 µs] - change: [-1.1661% -1.0283% -0.8696%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 12 (12.00%) high severe - -Insert PP + WyHash - time: [55.136 µs 55.149 µs 55.166 µs] - change: [+0.3787% +0.4500% +0.5287%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) high mild - 8 (8.00%) high severe - -Insert PP + XxHash64 - time: [105.16 µs 105.22 µs 105.28 µs] - change: [-0.6078% -0.5270% -0.4419%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Insert PP + WyHash - time: [55.840 µs 55.853 µs 55.870 µs] - change: [-0.5120% -0.4342% -0.3668%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + XxHash64 - time: [108.86 µs 108.89 µs 108.93 µs] - change: [-0.6708% -0.5247% -0.4083%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [65.220 µs 65.245 µs 65.274 µs] - change: [-0.2927% -0.0826% +0.1398%] (p = 0.47 > 0.05) - No change in performance detected. -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [109.57 µs 109.60 µs 109.63 µs] - change: [-1.8007% -1.6026% -1.3929%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Insert HybridPP + WyHash - time: [69.243 µs 69.285 µs 69.335 µs] - change: [+1.4731% +1.6693% +1.8424%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Insert HybridPP + XxHash64 - time: [108.53 µs 108.56 µs 108.60 µs] - change: [-1.2883% -1.2238% -1.1649%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [65.324 µs 65.411 µs 65.534 µs] - change: [-1.2207% -0.9945% -0.6976%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [109.98 µs 110.01 µs 110.06 µs] - change: [+1.6644% +1.7534% +1.8491%] (p = 0.00 < 0.05) - Performance has regressed. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + WyHash - time: [67.200 µs 67.271 µs 67.362 µs] - change: [-0.3454% -0.2329% -0.1103%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert HybridPP + XxHash64 - time: [115.91 µs 116.07 µs 116.27 µs] - change: [-6.0193% -3.6333% -1.4194%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + WyHash - time: [64.885 µs 64.937 µs 64.998 µs] - change: [+0.9058% +1.0909% +1.2681%] (p = 0.00 < 0.05) - Change within noise threshold. - -Insert HybridPP + XxHash64 - time: [117.12 µs 117.17 µs 117.24 µs] - change: [-0.1080% +0.0043% +0.1088%] (p = 0.94 > 0.05) - No change in performance detected. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 7 (7.00%) high mild - 9 (9.00%) high severe - -Insert HybridPP + WyHash - time: [70.678 µs 70.709 µs 70.744 µs] - change: [-0.3084% -0.2376% -0.1712%] (p = 0.00 < 0.05) - Change within noise threshold. - -Insert Tabac + XxHash64 - time: [104.83 µs 104.95 µs 105.07 µs] - change: [-0.6857% -0.5158% -0.3490%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high mild - -Insert TabacPP + XxHash64 - time: [299.97 µs 300.55 µs 301.13 µs] - change: [-1.1479% -1.0049% -0.8457%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 20 measurements (15.00%) - 3 (15.00%) high mild - -Insert SA + XxHash64 - time: [66.242 µs 66.297 µs 66.365 µs] - change: [-1.6207% -1.5340% -1.4383%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) high mild - 9 (9.00%) high severe - -Insert CF + WyHash - time: [67.535 µs 67.604 µs 67.700 µs] - change: [-3.6148% -3.3829% -3.1906%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Insert CF + XxHash64 - time: [119.05 µs 119.10 µs 119.17 µs] - change: [-0.9247% -0.8493% -0.7918%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Insert FrankPP + SipHasher13 - time: [86.572 µs 86.615 µs 86.679 µs] - change: [-2.1787% -2.1373% -2.0917%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Insert SM time: [422.34 µs 423.34 µs 424.66 µs] - change: [+0.4348% +0.6638% +0.8994%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Insert PP + XxHash64 - time: [83.251 µs 83.297 µs 83.346 µs] - change: [-1.6598% -1.5458% -1.4239%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [52.137 µs 52.168 µs 52.205 µs] - change: [-0.0494% -0.0033% +0.0414%] (p = 0.89 > 0.05) - No change in performance detected. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [80.186 µs 80.226 µs 80.270 µs] - change: [-2.5585% -2.4572% -2.3378%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [52.093 µs 52.108 µs 52.128 µs] - change: [+2.0077% +2.1309% +2.3060%] (p = 0.00 < 0.05) - Performance has regressed. -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Insert PP + XxHash64 - time: [100.89 µs 100.94 µs 100.98 µs] - change: [+7.6739% +7.7385% +7.8053%] (p = 0.00 < 0.05) - Performance has regressed. -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Insert PP + WyHash - time: [54.530 µs 54.545 µs 54.563 µs] - change: [-0.3386% -0.2684% -0.1768%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) high mild - 8 (16.00%) high severe - -Insert PP + XxHash64 - time: [81.636 µs 82.022 µs 82.779 µs] - change: [-0.2561% +0.5549% +1.8210%] (p = 0.57 > 0.05) - No change in performance detected. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [51.416 µs 51.436 µs 51.463 µs] - change: [-0.0429% +0.0454% +0.1274%] (p = 0.33 > 0.05) - No change in performance detected. -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [96.429 µs 96.486 µs 96.554 µs] - change: [-0.7249% -0.6479% -0.5598%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Insert PP + WyHash - time: [55.004 µs 55.030 µs 55.064 µs] - change: [-1.9591% -1.8526% -1.7475%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [97.086 µs 97.154 µs 97.243 µs] - change: [-0.1114% -0.0304% +0.0625%] (p = 0.49 > 0.05) - No change in performance detected. -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert PP + WyHash - time: [56.396 µs 56.427 µs 56.473 µs] - change: [-0.3155% -0.2328% -0.1302%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [119.93 µs 120.02 µs 120.14 µs] - change: [-0.2647% -0.1510% -0.0192%] (p = 0.03 < 0.05) - Change within noise threshold. -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) low mild - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [84.375 µs 84.448 µs 84.530 µs] - change: [+0.0270% +0.0985% +0.1734%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Insert HybridPP + XxHash64 - time: [127.05 µs 127.14 µs 127.28 µs] - change: [-0.9616% -0.7010% -0.4957%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) high mild - 8 (16.00%) high severe - -Insert HybridPP + WyHash - time: [94.537 µs 94.629 µs 94.754 µs] - change: [-0.4250% -0.3367% -0.2264%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [127.82 µs 127.90 µs 128.02 µs] - change: [+5.4232% +5.5043% +5.5906%] (p = 0.00 < 0.05) - Performance has regressed. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [82.997 µs 83.058 µs 83.140 µs] - change: [+0.0275% +0.2513% +0.4246%] (p = 0.01 < 0.05) - Change within noise threshold. -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [126.46 µs 126.59 µs 126.71 µs] - change: [-0.0806% +0.1476% +0.3143%] (p = 0.16 > 0.05) - No change in performance detected. - -Insert HybridPP + WyHash - time: [92.400 µs 92.501 µs 92.643 µs] - change: [-0.3199% -0.1404% +0.0280%] (p = 0.12 > 0.05) - No change in performance detected. -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [123.24 µs 123.31 µs 123.41 µs] - change: [+0.2186% +0.3677% +0.5483%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [80.415 µs 80.456 µs 80.502 µs] - change: [-0.7710% -0.6327% -0.5143%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Insert HybridPP + XxHash64 - time: [133.96 µs 134.28 µs 134.78 µs] - change: [-1.9139% -0.8179% +0.0741%] (p = 0.12 > 0.05) - No change in performance detected. -Found 7 outliers among 50 measurements (14.00%) - 7 (14.00%) high severe - -Insert HybridPP + WyHash - time: [95.145 µs 95.234 µs 95.370 µs] - change: [-1.3357% -1.2372% -1.1181%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert Tabac + XxHash64 - time: [95.075 µs 95.094 µs 95.117 µs] - change: [-4.4219% -2.9057% -1.4882%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Insert TabacPP + XxHash64 - time: [590.75 µs 591.20 µs 591.66 µs] - change: [-3.0169% -1.4273% +0.1213%] (p = 0.12 > 0.05) - No change in performance detected. - -Insert SA + XxHash64 - time: [66.368 µs 66.479 µs 66.617 µs] - change: [-4.4119% -3.7130% -3.0216%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert CF + WyHash - time: [70.609 µs 70.658 µs 70.723 µs] - change: [-3.8060% -3.1371% -2.5353%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert CF + XxHash64 - time: [113.18 µs 113.23 µs 113.31 µs] - change: [-2.8666% -2.3282% -1.8403%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) high severe - -Insert FrankPP + SipHasher13 - time: [89.467 µs 89.535 µs 89.654 µs] - change: [-1.2316% +0.0049% +0.8977%] (p = 0.99 > 0.05) - No change in performance detected. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Insert SM time: [420.75 µs 421.27 µs 421.58 µs] - change: [-3.9181% -2.3510% -0.8387%] (p = 0.01 < 0.05) - Change within noise threshold. - -Insert PP + XxHash64 - time: [75.530 µs 75.577 µs 75.630 µs] - change: [-3.8812% -2.4425% -1.4678%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + WyHash - time: [52.144 µs 52.173 µs 52.207 µs] - change: [-4.6922% -4.0085% -3.3101%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Insert PP + XxHash64 - time: [73.715 µs 73.742 µs 73.781 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Insert PP + WyHash - time: [52.352 µs 52.367 µs 52.384 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Insert PP + XxHash64 - time: [85.467 µs 85.542 µs 85.654 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) low mild - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [54.977 µs 54.992 µs 55.011 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [72.901 µs 72.983 µs 73.086 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [51.893 µs 51.925 µs 51.967 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [90.253 µs 90.412 µs 90.641 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [55.780 µs 55.809 µs 55.847 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert PP + XxHash64 - time: [88.903 µs 89.050 µs 89.292 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [57.279 µs 57.333 µs 57.412 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [165.86 µs 165.98 µs 166.18 µs] -Found 8 outliers among 50 measurements (16.00%) - 6 (12.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [138.07 µs 138.10 µs 138.15 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [195.69 µs 195.83 µs 196.06 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [170.50 µs 170.65 µs 170.85 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [165.12 µs 165.23 µs 165.37 µs] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) low mild - 3 (6.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + WyHash - time: [137.39 µs 137.42 µs 137.46 µs] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Insert HybridPP + XxHash64 - time: [194.31 µs 194.37 µs 194.43 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [169.57 µs 169.61 µs 169.67 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [164.11 µs 164.21 µs 164.37 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [130.53 µs 130.57 µs 130.62 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + XxHash64 - time: [203.48 µs 203.77 µs 204.26 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [172.89 µs 172.94 µs 173.01 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Insert Tabac + XxHash64 - time: [85.555 µs 85.698 µs 85.987 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Insert TabacPP + XxHash64 - time: [1.2517 ms 1.2528 ms 1.2535 ms] - -Insert SA + XxHash64 - time: [66.404 µs 66.451 µs 66.509 µs] -Found 10 outliers among 50 measurements (20.00%) - 4 (8.00%) high mild - 6 (12.00%) high severe - -Insert CF + WyHash - time: [73.953 µs 73.978 µs 74.004 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert CF + XxHash64 - time: [107.65 µs 107.83 µs 108.07 µs] -Found 7 outliers among 50 measurements (14.00%) - 5 (10.00%) high mild - 2 (4.00%) high severe - -Insert FrankPP + SipHasher13 - time: [89.623 µs 89.794 µs 90.235 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Insert SM time: [379.06 µs 379.25 µs 379.45 µs] - -Insert PP + XxHash64 - time: [70.726 µs 70.765 µs 70.817 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [52.901 µs 52.914 µs 52.931 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [70.133 µs 70.175 µs 70.230 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [53.333 µs 53.358 µs 53.393 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Insert PP + XxHash64 - time: [80.004 µs 80.086 µs 80.200 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [55.716 µs 55.739 µs 55.769 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [69.189 µs 69.228 µs 69.278 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert PP + WyHash - time: [52.548 µs 52.581 µs 52.623 µs] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [88.086 µs 88.154 µs 88.228 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low severe - 2 (4.00%) low mild - 1 (2.00%) high mild - 1 (2.00%) high severe - -Insert PP + WyHash - time: [57.722 µs 57.769 µs 57.828 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Insert PP + XxHash64 - time: [85.460 µs 85.584 µs 85.728 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Insert PP + WyHash - time: [57.933 µs 57.981 µs 58.037 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [326.42 µs 326.65 µs 326.93 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [298.42 µs 299.89 µs 301.76 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [431.99 µs 432.40 µs 432.95 µs] -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) high severe - -Insert HybridPP + WyHash - time: [405.39 µs 405.51 µs 405.64 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [328.05 µs 328.30 µs 328.62 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [298.67 µs 298.75 µs 298.85 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [441.73 µs 441.83 µs 441.94 µs] -Found 7 outliers among 50 measurements (14.00%) - 5 (10.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [407.54 µs 407.71 µs 407.98 µs] -Found 10 outliers among 50 measurements (20.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - 6 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [308.47 µs 308.60 µs 308.74 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [276.08 µs 276.15 µs 276.24 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [452.99 µs 453.26 µs 453.68 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low severe - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [413.66 µs 413.75 µs 413.85 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low severe - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert Tabac + XxHash64 - time: [81.065 µs 81.089 µs 81.107 µs] - -Insert TabacPP + XxHash64 - time: [814.38 µs 814.65 µs 815.02 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert SA + XxHash64 - time: [66.577 µs 66.592 µs 66.611 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert CF + WyHash - time: [76.677 µs 76.704 µs 76.737 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Insert CF + XxHash64 - time: [107.60 µs 107.64 µs 107.69 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Insert FrankPP + SipHasher13 - time: [87.563 µs 87.616 µs 87.700 µs] - -Insert SM time: [379.32 µs 379.51 µs 379.92 µs] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Insert PP + XxHash64 - time: [70.239 µs 70.285 µs 70.349 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [52.840 µs 52.863 µs 52.891 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [68.454 µs 68.473 µs 68.495 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [51.992 µs 52.029 µs 52.078 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [69.625 µs 69.645 µs 69.668 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [54.169 µs 54.188 µs 54.215 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [68.517 µs 68.535 µs 68.558 µs] -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) high severe - -Insert PP + WyHash - time: [52.069 µs 52.085 µs 52.104 µs] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Insert PP + XxHash64 - time: [86.899 µs 86.931 µs 86.970 µs] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Insert PP + WyHash - time: [57.816 µs 57.889 µs 58.000 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [84.769 µs 84.805 µs 84.855 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Insert PP + WyHash - time: [57.427 µs 57.443 µs 57.460 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [859.48 µs 859.80 µs 860.24 µs] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + WyHash - time: [837.46 µs 837.70 µs 838.00 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) high mild - 6 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [857.84 µs 858.07 µs 858.34 µs] -Found 9 outliers among 50 measurements (18.00%) - 4 (8.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [837.67 µs 838.01 µs 838.41 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [887.78 µs 888.05 µs 888.37 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [860.00 µs 860.45 µs 861.05 µs] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.0588 ms 1.0595 ms 1.0604 ms] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [882.03 µs 882.63 µs 883.32 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [943.85 µs 944.17 µs 944.68 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + WyHash - time: [831.19 µs 831.68 µs 832.39 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.0770 ms 1.0777 ms 1.0788 ms] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [882.62 µs 883.02 µs 883.56 µs] -Found 9 outliers among 50 measurements (18.00%) - 4 (8.00%) high mild - 5 (10.00%) high severe - -Insert Tabac + XxHash64 - time: [77.753 µs 77.810 µs 77.934 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert TabacPP + XxHash64 - time: [554.05 µs 554.74 µs 555.61 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert SA + XxHash64 - time: [66.035 µs 66.122 µs 66.243 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) high mild - 8 (16.00%) high severe - -Insert CF + WyHash - time: [75.102 µs 75.232 µs 75.440 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert CF + XxHash64 - time: [103.32 µs 103.45 µs 103.62 µs] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low mild - 4 (8.00%) high mild - 4 (8.00%) high severe - -Insert FrankPP + SipHasher13 - time: [88.060 µs 88.221 µs 88.526 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Insert SM time: [379.64 µs 379.71 µs 379.81 µs] - -Insert PP + XxHash64 - time: [70.223 µs 70.237 µs 70.255 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [52.437 µs 52.450 µs 52.465 µs] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [67.444 µs 67.472 µs 67.511 µs] -Found 8 outliers among 50 measurements (16.00%) - 5 (10.00%) high mild - 3 (6.00%) high severe - -Insert PP + WyHash - time: [53.320 µs 53.335 µs 53.355 µs] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [90.099 µs 90.132 µs 90.176 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + WyHash - time: [54.269 µs 54.298 µs 54.339 µs] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [67.310 µs 67.333 µs 67.362 µs] -Found 9 outliers among 50 measurements (18.00%) - 3 (6.00%) high mild - 6 (12.00%) high severe - -Insert PP + WyHash - time: [53.507 µs 53.525 µs 53.548 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert PP + XxHash64 - time: [87.810 µs 87.851 µs 87.906 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [57.922 µs 57.940 µs 57.959 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [84.163 µs 84.193 µs 84.228 µs] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert PP + WyHash - time: [56.764 µs 56.803 µs 56.857 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [859.06 µs 859.66 µs 860.51 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [838.60 µs 840.32 µs 843.23 µs] -Found 5 outliers among 50 measurements (10.00%) - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [859.25 µs 859.60 µs 860.02 µs] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [838.28 µs 838.77 µs 839.40 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.0986 ms 1.0991 ms 1.0998 ms] -Found 7 outliers among 50 measurements (14.00%) - 3 (6.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + WyHash - time: [1.0593 ms 1.0596 ms 1.0599 ms] -Found 9 outliers among 50 measurements (18.00%) - 2 (4.00%) low severe - 1 (2.00%) low mild - 5 (10.00%) high mild - 1 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.5955 ms 1.5959 ms 1.5963 ms] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [1.2581 ms 1.2584 ms 1.2587 ms] -Found 10 outliers among 50 measurements (20.00%) - 4 (8.00%) high mild - 6 (12.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.3592 ms 1.3596 ms 1.3600 ms] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [1.0432 ms 1.0435 ms 1.0438 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Insert HybridPP + XxHash64 - time: [1.6131 ms 1.6134 ms 1.6137 ms] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Insert HybridPP + WyHash - time: [1.2614 ms 1.2624 ms 1.2638 ms] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Insert Tabac + XxHash64 - time: [77.610 µs 77.631 µs 77.648 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert TabacPP + XxHash64 - time: [429.03 µs 429.30 µs 429.42 µs] - -Insert SA + XxHash64 - time: [66.808 µs 66.825 µs 66.847 µs] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) high mild - 2 (4.00%) high severe - -Insert CF + WyHash - time: [75.282 µs 75.298 µs 75.321 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert CF + XxHash64 - time: [104.71 µs 104.74 µs 104.77 µs] -Found 10 outliers among 50 measurements (20.00%) - 1 (2.00%) low mild - 4 (8.00%) high mild - 5 (10.00%) high severe - -Insert FrankPP + SipHasher13 - time: [88.365 µs 88.417 µs 88.510 µs] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Insert SM time: [380.08 µs 380.19 µs 380.37 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert PP + XxHash64 - time: [70.072 µs 70.097 µs 70.132 µs] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Insert PP + WyHash - time: [52.572 µs 52.607 µs 52.653 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) low severe - 3 (6.00%) low mild - 1 (2.00%) high mild - 2 (4.00%) high severe - -Insert PP + XxHash64 - time: [68.157 µs 68.214 µs 68.286 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [53.365 µs 53.398 µs 53.448 µs] -Found 8 outliers among 50 measurements (16.00%) - 4 (8.00%) high mild - 4 (8.00%) high severe - -Insert PP + XxHash64 - time: [80.191 µs 80.253 µs 80.343 µs] -Found 8 outliers among 50 measurements (16.00%) - 3 (6.00%) high mild - 5 (10.00%) high severe - -Insert PP + WyHash - time: [54.155 µs 54.190 µs 54.244 µs] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) low mild - 3 (6.00%) high severe - -Insert PP + XxHash64 - time: [69.046 µs 69.065 µs 69.087 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + WyHash - time: [54.320 µs 54.332 µs 54.349 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert PP + XxHash64 - time: [87.043 µs 87.075 µs 87.107 µs] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high severe - -Insert PP + WyHash - time: [57.557 µs 57.574 µs 57.594 µs] -Found 6 outliers among 50 measurements (12.00%) - 5 (10.00%) high mild - 1 (2.00%) high severe - -Insert PP + XxHash64 - time: [84.891 µs 84.953 µs 85.045 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Insert PP + WyHash - time: [59.299 µs 59.311 µs 59.327 µs] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) low severe - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + XxHash64 - time: [859.47 µs 860.05 µs 860.80 µs] -Found 8 outliers among 50 measurements (16.00%) - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert HybridPP + WyHash - time: [838.95 µs 839.13 µs 839.34 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [859.04 µs 859.32 µs 859.65 µs] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) low mild - 6 (12.00%) high severe - -Insert HybridPP + WyHash - time: [839.47 µs 839.89 µs 840.45 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.8037 ms 1.8051 ms 1.8070 ms] -Found 7 outliers among 50 measurements (14.00%) - 2 (4.00%) high mild - 5 (10.00%) high severe - -Insert HybridPP + WyHash - time: [1.7484 ms 1.7489 ms 1.7496 ms] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + XxHash64 - time: [2.2886 ms 2.2892 ms 2.2898 ms] -Found 7 outliers among 50 measurements (14.00%) - 5 (10.00%) high mild - 2 (4.00%) high severe - -Insert HybridPP + WyHash - time: [2.0209 ms 2.0214 ms 2.0222 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - 4 (8.00%) high severe - -Insert HybridPP + XxHash64 - time: [1.9903 ms 1.9912 ms 1.9931 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [1.6753 ms 1.6757 ms 1.6761 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 4 (8.00%) high mild - 1 (2.00%) high severe - -Insert HybridPP + XxHash64 - time: [2.2998 ms 2.3004 ms 2.3011 ms] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Insert HybridPP + WyHash - time: [2.0260 ms 2.0272 ms 2.0288 ms] -Found 9 outliers among 50 measurements (18.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - 6 (12.00%) high severe - -Insert Tabac + XxHash64 - time: [77.956 µs 77.977 µs 78.003 µs] - -Insert TabacPP + XxHash64 - time: [367.20 µs 367.44 µs 367.76 µs] - -Insert SA + XxHash64 - time: [67.968 µs 68.015 µs 68.074 µs] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low mild - 4 (8.00%) high severe - -Insert CF + WyHash - time: [75.168 µs 75.205 µs 75.252 µs] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Insert CF + XxHash64 - time: [104.88 µs 105.21 µs 105.71 µs] -Found 6 outliers among 50 measurements (12.00%) - 2 (4.00%) high mild - 4 (8.00%) high severe - -Insert FrankPP + SipHasher13 - time: [91.730 µs 91.749 µs 91.769 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert SM time: [383.53 µs 383.82 µs 384.63 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Insert H2B time: [50.472 µs 50.488 µs 50.508 µs] -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Insert H2B time: [48.506 µs 48.522 µs 48.541 µs] -Found 11 outliers among 100 measurements (11.00%) - 3 (3.00%) low mild - 1 (1.00%) high mild - 7 (7.00%) high severe - -Insert H2B> time: [53.009 µs 53.038 µs 53.086 µs] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Insert H2B> time: [55.395 µs 55.447 µs 55.519 µs] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Insert H2B> time: [66.962 µs 66.996 µs 67.033 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Insert H2B> time: [69.945 µs 70.056 µs 70.200 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Insert H2B> time: [64.928 µs 65.029 µs 65.138 µs] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Insert H3B time: [52.473 µs 52.482 µs 52.492 µs] -Found 15 outliers among 100 measurements (15.00%) - 2 (2.00%) low severe - 3 (3.00%) low mild - 10 (10.00%) high severe - -Insert H3B time: [53.382 µs 53.399 µs 53.421 µs] -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 6 (6.00%) high severe - -Insert H3B> time: [60.819 µs 60.846 µs 60.874 µs] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Insert H3B> time: [77.342 µs 77.428 µs 77.560 µs] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Insert H3B> time: [99.853 µs 99.944 µs 100.07 µs] -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Insert H3B> time: [104.98 µs 105.03 µs 105.09 µs] -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Insert H3B> time: [104.43 µs 104.48 µs 104.54 µs] -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe -Insert SHLL - time: [47.487 µs 47.508 µs 47.525 µs] - -Insert SHLL - time: [48.006 µs 48.182 µs 48.506 µs] -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Insert SHLL - time: [46.485 µs 46.502 µs 46.520 µs] - -Insert SHLL - time: [47.726 µs 48.052 µs 48.643 µs] -Found 4 outliers among 20 measurements (20.00%) - 4 (20.00%) high severe - -Insert SHLL - time: [49.279 µs 49.290 µs 49.302 µs] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Insert SHLL - time: [48.405 µs 48.421 µs 48.439 µs] - -Insert SHLL - time: [48.520 µs 48.535 µs 48.551 µs] -Found 3 outliers among 20 measurements (15.00%) - 2 (10.00%) high mild - 1 (5.00%) high severe - -Insert SHLL - time: [48.610 µs 48.650 µs 48.697 µs] - -Insert SHLL - time: [48.121 µs 48.248 µs 48.455 µs] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Insert SHLL - time: [48.716 µs 48.734 µs 48.752 µs] - -Insert SHLL - time: [47.811 µs 48.460 µs 49.549 µs] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Insert SHLL - time: [48.016 µs 48.047 µs 48.098 µs] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Insert SHLL - time: [49.355 µs 50.196 µs 51.847 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Insert SHLL - time: [50.197 µs 50.227 µs 50.264 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert SHLL - time: [51.216 µs 51.225 µs 51.235 µs] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Insert HashSet time: [203.81 µs 203.85 µs 203.90 µs] -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 9 (9.00%) high severe - diff --git a/statistical_comparisons/benches/insert.rs b/statistical_comparisons/benches/insert.rs deleted file mode 100644 index f117775..0000000 --- a/statistical_comparisons/benches/insert.rs +++ /dev/null @@ -1,265 +0,0 @@ -#![feature(test)] -extern crate test; - -use criterion::{criterion_group, criterion_main, Criterion}; -use hyperloglog_rs::prelude::*; -use statistical_comparisons::utils::*; -use std::{collections::HashSet, hint::black_box}; -use wyhash::WyHash; - -const RANDOM_STATE: u64 = 87561346897134_u64; -const NUMBER_OF_ELEMENTS: usize = 10_000; - -fn insert_bencher< - H: Estimator + hyperloglog_rs::prelude::Named + ExtendableApproximatedSet, ->( - b: &mut Criterion, -) { - b.bench_function(format!("Insert {}", H::default().name()).as_str(), |b| { - b.iter(|| { - let mut hll: H = Default::default(); - for i in iter_var_len_random_values(NUMBER_OF_ELEMENTS, None, RANDOM_STATE) { - hll.insert(black_box(&i)); - } - }) - }); -} - -macro_rules! bench_cardinality { - ($precision:ty, $bits:ty, $hasher:ty) => { - paste::item! { - fn [] (b: &mut Criterion) { - insert_bencher::>::ArrayRegister, $hasher>>(b); - insert_bencher::>::PackedRegister, $hasher>>(b); - insert_bencher::>::ArrayRegister, $hasher>>>(b); - insert_bencher::>::PackedRegister, $hasher>>>(b); - } - } - }; -} - -macro_rules! bench_cludflare_cardinality { - ($precision:ty, $bits:ty, $($hasher:ty),*) => { - $( - paste::item! { - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - } - )* - }; -} - -type XxHash64 = twox_hash::XxHash64; - -/// Macro to generate a criterion benchmark with the provided precision exponent and bits -macro_rules! bench_insert_bits { - ($precision:ty, $($bits:ty),*) => { - $( - bench_cardinality!($precision, $bits, WyHash); - bench_cardinality!($precision, $bits, XxHash64); - )* - }; -} - -/// Macro to generate a criterion benchmark with the provided precision exponents -macro_rules! bench_cardinalities { - ($(($precision:ty, $sample_size:expr)),*) => { - $( - bench_cludflare_cardinality!($precision, Bits6, WyHash, XxHash64); - bench_insert_bits!($precision, Bits6); - bench_insert_bits!($precision, Bits8); - - paste::item! { - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - insert_bencher::>(b); - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[] - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets=[], [], [], [], - } - } - )* - }; -} - -macro_rules! bench_hyper_two_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - insert_bencher::>(b); - } - } - )* - }; -} - -macro_rules! bench_hyper_three_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - insert_bencher::>(b); - } - } - )* - }; -} - -use hypertwobits::h2b::{ - M1024 as M1024H2B, M128 as M128H2B, M2048 as M2048H2B, M256 as M256H2B, M4096 as M4096H2B, - M512 as M512H2B, M64 as M64H2B, -}; -bench_hyper_two_bits!(M64H2B, M128H2B, M256H2B, M512H2B, M1024H2B, M2048H2B, M4096H2B); - -use hypertwobits::h3b::{ - M1024 as M1024H3B, M128 as M128H3B, M2048 as M2048H3B, M256 as M256H3B, M4096 as M4096H3B, - M512 as M512H3B, M64 as M64H3B, -}; -bench_hyper_three_bits!(M64H3B, M128H3B, M256H3B, M512H3B, M1024H3B, M2048H3B, M4096H3B); - -fn bench_hashset_insert(b: &mut Criterion) { - insert_bencher::>(b); -} - -criterion_group!( - name = insert_hyper_two_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hypertwobits_m64h2b_insert, bench_hypertwobits_m128h2b_insert, bench_hypertwobits_m256h2b_insert, bench_hypertwobits_m512h2b_insert, bench_hypertwobits_m1024h2b_insert, bench_hypertwobits_m2048h2b_insert, bench_hypertwobits_m4096h2b_insert -); - -criterion_group!( - name = insert_hyper_three_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hyperthreebits_m64h3b_insert, bench_hyperthreebits_m128h3b_insert, bench_hyperthreebits_m256h3b_insert, bench_hyperthreebits_m512h3b_insert, bench_hyperthreebits_m1024h3b_insert, bench_hyperthreebits_m2048h3b_insert, bench_hyperthreebits_m4096h3b_insert -); - -criterion_group!( - name = insert_hashset; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)).measurement_time(std::time::Duration::from_secs(3)); - targets = bench_hashset_insert -); - -#[cfg(feature = "low_precisions")] -bench_cardinalities!( - (Precision4, 100), - (Precision5, 100), - (Precision6, 100), - (Precision7, 100), - (Precision8, 100), - (Precision9, 100), - (Precision10, 100) -); - -#[cfg(feature = "medium_precisions")] -bench_cardinalities!( - (Precision11, 100), - (Precision12, 100), - (Precision13, 50), - (Precision14, 50), - (Precision15, 50), - (Precision16, 50) -); - -#[cfg(feature = "high_precisions")] -bench_cardinalities!((Precision17, 50), (Precision18, 50)); - -/// Macro to generate the criterion main for all precisions -macro_rules! bench_insert_main { - ($($precision:ty),*) => { - paste::paste!{ - criterion_main!( - $( - [], - [], - [], - [], - [], - [], - [], - [], - )* - insert_hyper_two_bits, - insert_hyper_three_bits, - insert_hashset - ); - } - }; -} - -bench_insert_main!( - Precision4, - Precision5, - Precision6, - Precision7, - Precision8, - Precision9, - Precision10, - Precision11, - Precision12, - Precision13, - Precision14, - Precision15, - Precision16, - Precision17, - Precision18 -); diff --git a/statistical_comparisons/benches/plot_benches.py b/statistical_comparisons/benches/plot_benches.py deleted file mode 100644 index 97bb31c..0000000 --- a/statistical_comparisons/benches/plot_benches.py +++ /dev/null @@ -1,352 +0,0 @@ -"""Python script to load and plot the benchmarks results.""" - -from typing import List, Dict -import os -from glob import glob -import pandas as pd -import matplotlib.pyplot as plt -from tqdm.auto import tqdm -from sanitize_ml_labels import sanitize_ml_labels - - -def unit_to_factor(unit: str) -> float: - """Converts a time unit to a factor.""" - if unit == "ns": - return 1e-9 - elif unit == "µs": - return 1e-6 - elif unit == "ms": - return 1e-3 - elif unit == "s": - return 1 - else: - raise ValueError(f"Unknown unit: {unit}") - - -def is_name_line(line: str) -> bool: - """Checks if a line is a name line.""" - return " " not in line and "precision" in line and "bits" in line - -def retrieve_feature( - approach_name: str, precision: int, bits: int, feature: str -) -> float: - """Returns the memory usage for a given approach and precision.""" - assert precision >= 4 - assert precision <= 18 - - if feature == "memory_usage": - column = "first_memsize" - elif feature == "mean_error": - column = "first_mean" - else: - raise ValueError(f"Unknown feature: {feature}") - - path1 = f"./statistical_comparisons/statistical_tests_reports/cardinality_{precision}.csv" - path2 = f"./statistical_comparisons/statistical_tests_reports/union_{precision}.csv" - df = pd.concat( - [ - pd.read_csv(path1), - pd.read_csv(path2), - ] - ) - # We find the first row that has as first_approach column the approach_name - # and return the first_memsize column value. - filtered = df[df["first_approach"] == approach_name] - if filtered.empty: - raise ValueError( - f"Could not find memory usage for {approach_name} and precision {precision}" - ) - return filtered[column].iloc[0] - - -def retrieve_memory_usage(approach_name: str, precision: int, bits: int) -> float: - """Returns the memory usage for a given approach and precision.""" - return retrieve_feature(approach_name, precision, bits, "memory_usage") - - -def retrieve_mean_error(approach_name: str, precision: int, bits: int) -> float: - """Returns the memory usage for a given approach and precision.""" - return retrieve_feature(approach_name, precision, bits, "mean_error") - - -def parse_name_line(line: str) -> Dict: - """Parses a name line.""" - # We expect the line to be in the format: - # hll_cardinality_precision_4_bits_5 - if line.count("_") == 7: - name, task, _precision, precision, _bits, bits, _hasher, hasher_type = ( - line.split("_") - ) - assert _precision == "precision" - assert _bits == "bits" - assert _hasher == "hasher" - name = f"{name}{bits}_{hasher_type}" - elif line.count("_") == 5: - name, task, _precision, precision, _bits, bits = line.split("_") - assert _precision == "precision" - assert _bits == "bits" - name = f"{name}{bits}" - else: - raise NotImplementedError(f"Line has an unexpected format: {line}") - precision = int(precision) - bits = int(bits) - - return { - "name": normalize_name(name), - "task": task, - "precision": precision, - "bits": bits, - "memory_usage": retrieve_memory_usage(normalize_name(name), precision, bits), - "mean_error": retrieve_mean_error(normalize_name(name), precision, bits), - } - - -def is_time_line(line: str) -> bool: - """Checks if a line is a time line.""" - return line.startswith("time:") - - -def is_change_line(line: str) -> bool: - """Checks if a line is a change line.""" - return line.startswith("change:") - - -def is_performance_comment_line(line: str) -> bool: - """Checks if a line is a performance comment line.""" - needles = [ - "Performance has improved", - "Performance has regressed", - "Change within noise threshold", - "No change in performance detected.", - ] - - return any(needle in line for needle in needles) - - -def is_outliers_line(line: str) -> bool: - """Checks if a line is an outliers line.""" - return "outliers among" in line - - -def is_outlier_count_line(line: str) -> bool: - """Checks if a line is an outlier count line.""" - needles = [ - "low severe", - "low mild", - "high mild", - "high severe", - ] - return any(needle in line for needle in needles) - - -def parse_time_line(line: str) -> Dict: - """Parses a time line.""" - # First we remove the prefix "time: " - line = line[5:] - - # Them we strip spaces - line = line.strip() - - # Next, we remove the brackets - line = line[1:-1] - - # Finally, we split the line - parts = line.split() - - # We expect 3 parts, composed by a series of tubles. - assert len(parts) == 6 - lower_bound = float(parts[0]) * unit_to_factor(parts[1]) - mean = float(parts[2]) * unit_to_factor(parts[3]) - upper_bound = float(parts[4]) * unit_to_factor(parts[5]) - - return { - "time_lower_bound": lower_bound, - "time_mean": mean, - "time_upper_bound": upper_bound, - } - - -def load_criterion_log(path: str) -> pd.DataFrame: - """Loads a criterion log file into a pandas DataFrame. - - Implementation details - ---------------------- - A criterion log looks like the following: - - ```plaintext - hll_cardinality_precision_4_bits_5 - time: [555.03 µs 555.48 µs 556.03 µs] - Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 6 (6.00%) high severe - - hll_cardinality_precision_4_bits_6 - time: [586.12 µs 588.63 µs 590.62 µs] - Found 11 outliers among 100 measurements (11.00%) - 7 (7.00%) low severe - 4 (4.00%) low mild - ``` - - """ - with open(path, "r", encoding="utf-8") as f: - lines = f.readlines() - - rows: List[Dict] = [] - current_line = None - - for line in lines: - line = line.strip() - # We skip empty lines - if ( - not line - or is_outliers_line(line) - or is_outlier_count_line(line) - or is_change_line(line) - or is_performance_comment_line(line) - ): - continue - - try: - if is_name_line(line): - if current_line is not None: - rows.append(current_line) - current_line = {} - current_line.update(parse_name_line(line)) - continue - - if is_time_line(line): - current_line.update(parse_time_line(line)) - continue - except ValueError as exception: - raise ValueError(f"Error while parsing line: {line}") from exception - - raise NotImplementedError(f"Unknown line: {line}") - - if current_line is not None and current_line: - rows.append(current_line) - - return pd.DataFrame(rows) - - -def get_approach_color(approach_name: str) -> str: - """Returns the color for a given normalized approach name.""" - colors = pd.read_csv("utilities/colors.csv", index_col="approach") - return colors.loc[approach_name, "color"] - - -def get_approach_linestyle(approach_name: str) -> str: - """Returns the linestyle for a given normalized approach name.""" - linestyles = pd.read_csv("utilities/linestyles.csv", index_col="approach") - return linestyles.loc[approach_name, "linestyle"] - - -def get_approach_marker(approach_name: str) -> str: - """Returns the marker for a given normalized approach name.""" - markers = pd.read_csv("utilities/markers.csv", index_col="approach") - return markers.loc[approach_name, "marker"] - - -def plot_benchmarks() -> None: - """Plots the benchmarks. - - We plot the memory usage on the abscissa and the time on the ordinate, - with the lower and upper bounds shown both as error bars and as a shaded - area. - """ - - paths = glob("benches/*.log") - - # We sort the path so that the most recent logs are on top of the list - # We extract the age of the file from the path, and we use it as a key - # for the sorting. - paths.sort(key=lambda path: -os.stat(path).st_mtime) - - cross_task_df = pd.concat([ - load_criterion_log(path) - for path in paths - ]) - - cross_task_df.to_csv("benches/benchmarks.csv", index=False) - - number_of_tasks = cross_task_df["task"].nunique() - print(f"Found {len(cross_task_df)} unique benchmarks across {number_of_tasks} tasks") - - cross_task_df["time_x_error"] = cross_task_df["time_mean"] * cross_task_df["mean_error"] - - for task, df in tqdm( - cross_task_df.groupby("task"), - total=number_of_tasks, - desc="Plotting benchmarks", - leave=False, - ): - for y_feature, x_feature in [("time_mean", "memory_usage"), ("time_x_error", "memory_usage")]: - fig, ax = plt.subplots( - ncols=2, # We plot both in linear and log scale, and we also - nrows=2, # show the same plots but without the slowest approaches - figsize=(14, 14), - dpi=300, - ) - - df = df.sort_values(by=[x_feature]) - - # We compute the median of the performance across all approaches - - mean = df[y_feature].mean() - - for name in df["name"].unique(): - for bits in df["bits"].unique(): - for j, threshold in enumerate([None, mean]): - mask = (df["name"] == name) & (df["bits"] == bits) - subdf = df[mask] - if threshold is not None: - if subdf[y_feature].mean() > threshold: - continue - - # If the mask is empty, we skip the plot - if subdf.empty: - continue - for scale, axes in zip(["linear", "log"], ax[j]): - axes.set_xscale("log") - axes.set_yscale(scale) - axes.set_xlabel(sanitize_ml_labels(x_feature)) - axes.set_ylabel(sanitize_ml_labels(y_feature)) - if threshold is None: - axes.set_title(f"{task} - {scale} scale") - else: - axes.set_title( - f"{task} - {scale} scale - threshold {threshold:.2e}" - ) - axes.grid(True, which="both", axis="both") - # axes.fill_between( - # subdf[x_feature], - # subdf["lower_bound"], - # subdf["upper_bound"], - # color=get_approach_color(name), - # alpha=0.5, - # ) - axes.plot( - subdf[x_feature], - subdf[y_feature], - marker=get_approach_marker(name), - markersize=10, - linestyle=get_approach_linestyle(name), - color=get_approach_color(name), - label=f"{name} - {bits} bits", - ) - - # We position the legend outside the plot, on the right - # of the second axes. In order to avoid duplicating the - # legend, we only show it on the second axes. - ax[0, 0].legend(loc="center left") - - fig.tight_layout() - - figure_path = f"benches/{task}.{y_feature}.{x_feature}.png" - - plt.savefig(figure_path) - plt.close() - - -if __name__ == "__main__": - plot_benchmarks() diff --git a/statistical_comparisons/benches/union.log b/statistical_comparisons/benches/union.log deleted file mode 100644 index eae9692..0000000 --- a/statistical_comparisons/benches/union.log +++ /dev/null @@ -1,8785 +0,0 @@ -Union LLB + XxHash64 - time: [1.1469 ms 1.1479 ms 1.1490 ms] - change: [-79.202% -79.182% -79.161%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [1.1702 ms 1.1710 ms 1.1716 ms] - change: [-78.948% -78.913% -78.873%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [1.2055 ms 1.2057 ms 1.2060 ms] - change: [-78.857% -78.852% -78.846%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 6 (6.00%) high mild - 5 (5.00%) high severe - -Union LLB + WyHash - time: [1.2064 ms 1.2065 ms 1.2068 ms] - change: [-78.843% -78.833% -78.824%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 4 (4.00%) high mild - 4 (4.00%) high severe - -Union LLB + XxHash64 - time: [1.1604 ms 1.1606 ms 1.1608 ms] - change: [-78.860% -78.855% -78.851%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union LLB + WyHash - time: [1.1741 ms 1.1754 ms 1.1768 ms] - change: [-78.637% -78.609% -78.584%] (p = 0.00 < 0.05) - Performance has improved. -Found 20 outliers among 100 measurements (20.00%) - 5 (5.00%) low mild - 3 (3.00%) high mild - 12 (12.00%) high severe - -Union LLB + XxHash64 - time: [1.2293 ms 1.2295 ms 1.2297 ms] - change: [-78.827% -78.820% -78.814%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 9 (9.00%) high mild - 3 (3.00%) high severe - -Union LLB + WyHash - time: [1.2297 ms 1.2301 ms 1.2306 ms] - change: [-78.833% -78.827% -78.821%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 7 (7.00%) high severe - -Union LLB + XxHash64 - time: [1.8511 ms 1.8515 ms 1.8520 ms] - change: [-78.799% -78.794% -78.789%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Union LLB + WyHash - time: [1.8515 ms 1.8520 ms 1.8525 ms] - change: [-78.792% -78.785% -78.779%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 8 (8.00%) high severe - -Union LLB + XxHash64 - time: [1.9383 ms 1.9386 ms 1.9390 ms] - change: [-78.837% -78.827% -78.815%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 7 (7.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [1.9375 ms 1.9377 ms 1.9379 ms] - change: [-78.850% -78.844% -78.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 5 (5.00%) high mild - 6 (6.00%) high severe - -Union PP + XxHash64 - time: [1.1783 ms 1.1800 ms 1.1818 ms] - change: [-78.782% -78.765% -78.745%] (p = 0.00 < 0.05) - Performance has improved. -Found 19 outliers among 100 measurements (19.00%) - 8 (8.00%) high mild - 11 (11.00%) high severe - -Union PP + WyHash - time: [1.1802 ms 1.1830 ms 1.1862 ms] - change: [-78.749% -78.724% -78.691%] (p = 0.00 < 0.05) - Performance has improved. -Found 20 outliers among 100 measurements (20.00%) - 5 (5.00%) high mild - 15 (15.00%) high severe - -Union PP + XxHash64 - time: [1.2177 ms 1.2202 ms 1.2228 ms] - change: [-78.782% -78.751% -78.719%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 8 (8.00%) high mild - 8 (8.00%) high severe - -Union PP + WyHash - time: [1.2189 ms 1.2204 ms 1.2222 ms] - change: [-78.758% -78.731% -78.707%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [1.1806 ms 1.1847 ms 1.1892 ms] - change: [-78.645% -78.589% -78.527%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 9 (9.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [1.1774 ms 1.1791 ms 1.1811 ms] - change: [-78.526% -78.460% -78.397%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union PP + XxHash64 - time: [1.2340 ms 1.2341 ms 1.2343 ms] - change: [-78.830% -78.822% -78.813%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) high mild - 9 (9.00%) high severe - -Union PP + WyHash - time: [1.2343 ms 1.2350 ms 1.2357 ms] - change: [-78.832% -78.825% -78.817%] (p = 0.00 < 0.05) - Performance has improved. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 11 (11.00%) high severe - -Union PP + XxHash64 - time: [1.8545 ms 1.8550 ms 1.8555 ms] - change: [-78.805% -78.798% -78.792%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 10 (10.00%) high severe - -Union PP + WyHash - time: [1.8557 ms 1.8564 ms 1.8571 ms] - change: [-78.807% -78.799% -78.792%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union PP + XxHash64 - time: [1.9442 ms 1.9445 ms 1.9448 ms] - change: [-78.831% -78.824% -78.817%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 3 (3.00%) high severe - -Union PP + WyHash - time: [1.9448 ms 1.9456 ms 1.9464 ms] - change: [-78.800% -78.790% -78.779%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridLLB + XxHash64 - time: [1.1753 ms 1.1760 ms 1.1770 ms] - change: [-78.783% -78.769% -78.755%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 7 (7.00%) high mild - 7 (7.00%) high severe - -Union HybridLLB + WyHash - time: [1.1762 ms 1.1778 ms 1.1795 ms] - change: [-78.819% -78.805% -78.789%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Union HybridLLB + XxHash64 - time: [1.2121 ms 1.2125 ms 1.2129 ms] - change: [-78.874% -78.863% -78.851%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 10 (10.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [1.2111 ms 1.2114 ms 1.2118 ms] - change: [-78.871% -78.862% -78.854%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [1.1792 ms 1.1795 ms 1.1799 ms] - change: [-78.654% -78.647% -78.640%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 8 (8.00%) high severe - -Union HybridLLB + WyHash - time: [1.1727 ms 1.1743 ms 1.1760 ms] - change: [-78.761% -78.739% -78.715%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Union HybridLLB + XxHash64 - time: [1.2360 ms 1.2362 ms 1.2364 ms] - change: [-78.836% -78.829% -78.822%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 7 (7.00%) high mild - 8 (8.00%) high severe - -Union HybridLLB + WyHash - time: [1.2367 ms 1.2374 ms 1.2380 ms] - change: [-78.847% -78.838% -78.830%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridLLB + XxHash64 - time: [2.0096 ms 2.0102 ms 2.0109 ms] - change: [-77.031% -77.024% -77.016%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 7 (7.00%) high mild - 8 (8.00%) high severe - -Union HybridLLB + WyHash - time: [2.0103 ms 2.0108 ms 2.0114 ms] - change: [-77.025% -77.018% -77.009%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + XxHash64 - time: [1.9397 ms 1.9402 ms 1.9408 ms] - change: [-78.825% -78.813% -78.800%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union HybridLLB + WyHash - time: [1.9396 ms 1.9400 ms 1.9404 ms] - change: [-78.879% -78.873% -78.867%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 11 (11.00%) high mild - -Union HybridPP + XxHash64 - time: [1.1789 ms 1.1797 ms 1.1806 ms] - change: [-78.836% -78.828% -78.819%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) high mild - 11 (11.00%) high severe - -Union HybridPP + WyHash - time: [1.1785 ms 1.1792 ms 1.1800 ms] - change: [-78.841% -78.834% -78.827%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 9 (9.00%) high severe - -Union HybridPP + XxHash64 - time: [1.2157 ms 1.2160 ms 1.2162 ms] - change: [-78.829% -78.823% -78.818%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [1.2167 ms 1.2169 ms 1.2172 ms] - change: [-78.889% -78.882% -78.875%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [1.1771 ms 1.1781 ms 1.1793 ms] - change: [-78.795% -78.776% -78.760%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 8 (8.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + WyHash - time: [1.1761 ms 1.1765 ms 1.1769 ms] - change: [-78.785% -78.778% -78.770%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridPP + XxHash64 - time: [1.2407 ms 1.2412 ms 1.2417 ms] - change: [-78.854% -78.846% -78.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [1.2404 ms 1.2407 ms 1.2410 ms] - change: [-78.853% -78.847% -78.841%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high mild - -Union HybridPP + XxHash64 - time: [2.0135 ms 2.0139 ms 2.0144 ms] - change: [-77.032% -77.026% -77.019%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 5 (5.00%) high mild - 7 (7.00%) high severe - -Union HybridPP + WyHash - time: [2.0118 ms 2.0120 ms 2.0123 ms] - change: [-77.050% -77.044% -77.040%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 8 (8.00%) high mild - 7 (7.00%) high severe - -Union HybridPP + XxHash64 - time: [1.9426 ms 1.9427 ms 1.9429 ms] - change: [-78.856% -78.850% -78.845%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [1.9442 ms 1.9445 ms 1.9447 ms] - change: [-78.845% -78.838% -78.832%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 9 (9.00%) high mild - 1 (1.00%) high severe - -Union MLE2LLB + XxHash64 - time: [111.46 ms 111.48 ms 111.50 ms] - change: [-83.896% -83.891% -83.886%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [183.44 ms 183.49 ms 183.53 ms] - change: [-74.431% -74.424% -74.416%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [110.45 ms 110.48 ms 110.50 ms] - change: [-84.000% -83.995% -83.989%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [182.51 ms 182.65 ms 182.83 ms] - change: [-74.495% -74.477% -74.451%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [111.20 ms 111.23 ms 111.29 ms] - change: [-83.951% -83.914% -83.860%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [183.24 ms 183.66 ms 184.19 ms] - change: [-74.508% -74.452% -74.377%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [110.73 ms 110.82 ms 110.95 ms] - change: [-83.971% -83.957% -83.943%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [182.57 ms 182.62 ms 182.65 ms] - change: [-74.522% -74.516% -74.511%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + XxHash64 - time: [110.64 ms 110.66 ms 110.67 ms] - change: [-83.976% -83.972% -83.969%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [182.76 ms 183.11 ms 183.56 ms] - change: [-74.479% -74.427% -74.363%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [110.27 ms 110.29 ms 110.31 ms] - change: [-84.005% -84.000% -83.995%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [182.22 ms 182.26 ms 182.29 ms] - change: [-74.509% -74.503% -74.498%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + XxHash64 - time: [112.13 ms 112.16 ms 112.17 ms] - change: [-83.843% -83.838% -83.833%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [184.01 ms 184.05 ms 184.07 ms] - change: [-74.397% -74.392% -74.386%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + XxHash64 - time: [110.70 ms 110.74 ms 110.77 ms] - change: [-83.972% -83.968% -83.964%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [182.61 ms 182.62 ms 182.64 ms] - change: [-74.504% -74.498% -74.494%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [111.43 ms 111.44 ms 111.45 ms] - change: [-83.937% -83.933% -83.929%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [183.32 ms 183.33 ms 183.35 ms] - change: [-74.492% -74.489% -74.485%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [111.13 ms 111.14 ms 111.14 ms] - change: [-83.901% -83.896% -83.893%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [183.05 ms 183.07 ms 183.09 ms] - change: [-74.414% -74.409% -74.404%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [110.76 ms 110.79 ms 110.82 ms] - change: [-83.966% -83.963% -83.961%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 2 (20.00%) high mild - -Union MLE2PP + WyHash - time: [182.66 ms 182.67 ms 182.68 ms] - change: [-74.485% -74.483% -74.480%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [110.51 ms 110.52 ms 110.53 ms] - change: [-83.967% -83.964% -83.961%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [182.38 ms 182.40 ms 182.42 ms] - change: [-74.458% -74.453% -74.448%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [111.43 ms 111.44 ms 111.45 ms] - change: [-83.904% -83.901% -83.898%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [183.47 ms 183.48 ms 183.49 ms] - change: [-74.424% -74.420% -74.416%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [110.37 ms 110.39 ms 110.40 ms] - change: [-83.996% -83.993% -83.990%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [182.30 ms 182.33 ms 182.35 ms] - change: [-74.508% -74.503% -74.498%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low severe - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [111.12 ms 111.13 ms 111.14 ms] - change: [-83.953% -83.950% -83.947%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [183.09 ms 183.11 ms 183.13 ms] - change: [-74.511% -74.507% -74.503%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [110.53 ms 110.55 ms 110.57 ms] - change: [-83.990% -83.986% -83.982%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [182.57 ms 182.59 ms 182.62 ms] - change: [-74.499% -74.494% -74.488%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [110.62 ms 110.62 ms 110.63 ms] - change: [-83.959% -83.956% -83.953%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [182.58 ms 182.59 ms 182.61 ms] - change: [-74.488% -74.482% -74.477%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [110.12 ms 110.16 ms 110.18 ms] - change: [-84.001% -83.996% -83.992%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [182.14 ms 182.17 ms 182.20 ms] - change: [-74.484% -74.479% -74.475%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [112.02 ms 112.05 ms 112.08 ms] - change: [-83.846% -83.842% -83.839%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [183.95 ms 183.98 ms 184.00 ms] - change: [-74.400% -74.393% -74.387%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [110.54 ms 110.57 ms 110.61 ms] - change: [-83.984% -83.979% -83.974%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [182.47 ms 182.50 ms 182.52 ms] - change: [-74.505% -74.499% -74.494%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [111.30 ms 111.33 ms 111.36 ms] - change: [-83.944% -83.940% -83.936%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + WyHash - time: [183.24 ms 183.26 ms 183.29 ms] - change: [-74.492% -74.484% -74.478%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [111.03 ms 111.03 ms 111.04 ms] - change: [-83.910% -83.906% -83.903%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [182.89 ms 182.92 ms 182.96 ms] - change: [-74.425% -74.419% -74.413%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [110.72 ms 110.72 ms 110.73 ms] - change: [-83.965% -83.963% -83.962%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [182.61 ms 182.64 ms 182.68 ms] - change: [-74.489% -74.483% -74.477%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 10 measurements (40.00%) - 2 (20.00%) low severe - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [110.37 ms 110.41 ms 110.43 ms] - change: [-83.988% -83.981% -83.974%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [182.26 ms 182.27 ms 182.29 ms] - change: [-74.470% -74.465% -74.461%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [4.8065 ms 4.8071 ms 4.8076 ms] - change: [-79.419% -79.415% -79.411%] (p = 0.00 < 0.05) - Performance has improved. - -Union TabacPP + XxHash64 - time: [11.686 ms 11.688 ms 11.690 ms] - change: [-79.293% -79.273% -79.258%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Union SA + XxHash64 - time: [1.6542 ms 1.6543 ms 1.6544 ms] - change: [-80.053% -80.049% -80.045%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union CF + WyHash - time: [9.9498 ms 9.9527 ms 9.9557 ms] - change: [-78.887% -78.878% -78.868%] (p = 0.00 < 0.05) - Performance has improved. - -Union CF + XxHash64 - time: [9.9482 ms 9.9516 ms 9.9548 ms] - change: [-78.889% -78.879% -78.870%] (p = 0.00 < 0.05) - Performance has improved. - -Union FrankPP + SipHasher13 - time: [24.883 ms 24.892 ms 24.901 ms] - change: [-78.643% -78.628% -78.616%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Union SM time: [3.7706 ms 3.7740 ms 3.7772 ms] - change: [-79.439% -79.357% -79.307%] (p = 0.00 < 0.05) - Performance has improved. - -Union SHLL - time: [1.2784 ms 1.2792 ms 1.2801 ms] - change: [-79.863% -79.820% -79.766%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Union LLB + XxHash64 - time: [2.3200 ms 2.3202 ms 2.3203 ms] - change: [-79.078% -79.071% -79.065%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union LLB + WyHash - time: [2.3206 ms 2.3210 ms 2.3215 ms] - change: [-79.101% -79.093% -79.084%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [2.3816 ms 2.3865 ms 2.3955 ms] - change: [-79.959% -79.912% -79.830%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Union LLB + WyHash - time: [2.3820 ms 2.3827 ms 2.3835 ms] - change: [-80.110% -80.096% -80.082%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [2.2932 ms 2.2939 ms 2.2947 ms] - change: [-79.169% -79.154% -79.139%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + WyHash - time: [2.2911 ms 2.2914 ms 2.2918 ms] - change: [-79.218% -79.204% -79.191%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union LLB + XxHash64 - time: [2.4487 ms 2.4489 ms 2.4493 ms] - change: [-80.057% -80.040% -80.024%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 5 (5.00%) high mild - 6 (6.00%) high severe - -Union LLB + WyHash - time: [2.4499 ms 2.4504 ms 2.4510 ms] - change: [-80.036% -80.016% -79.998%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union LLB + XxHash64 - time: [3.7183 ms 3.7195 ms 3.7207 ms] - change: [-78.789% -78.777% -78.765%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [3.7132 ms 3.7143 ms 3.7154 ms] - change: [-78.831% -78.820% -78.808%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union LLB + XxHash64 - time: [3.8621 ms 3.8644 ms 3.8668 ms] - change: [-79.244% -79.226% -79.208%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 13 (13.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [3.8552 ms 3.8558 ms 3.8564 ms] - change: [-79.285% -79.275% -79.266%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [2.3324 ms 2.3327 ms 2.3330 ms] - change: [-79.091% -79.077% -79.065%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [2.3338 ms 2.3343 ms 2.3349 ms] - change: [-79.139% -79.089% -79.054%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union PP + XxHash64 - time: [2.3972 ms 2.3984 ms 2.3997 ms] - change: [-79.906% -79.889% -79.872%] (p = 0.00 < 0.05) - Performance has improved. - -Union PP + WyHash - time: [2.3876 ms 2.3885 ms 2.3894 ms] - change: [-80.056% -80.039% -80.022%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [2.3045 ms 2.3053 ms 2.3062 ms] - change: [-78.982% -78.972% -78.962%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union PP + WyHash - time: [2.3042 ms 2.3048 ms 2.3055 ms] - change: [-79.006% -78.998% -78.990%] (p = 0.00 < 0.05) - Performance has improved. - -Union PP + XxHash64 - time: [2.4709 ms 2.4720 ms 2.4731 ms] - change: [-79.778% -79.727% -79.685%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union PP + WyHash - time: [2.4598 ms 2.4607 ms 2.4615 ms] - change: [-80.004% -79.987% -79.971%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union PP + XxHash64 - time: [3.7262 ms 3.7382 ms 3.7600 ms] - change: [-78.781% -78.711% -78.555%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high severe - -Union PP + WyHash - time: [3.7258 ms 3.7271 ms 3.7284 ms] - change: [-78.781% -78.771% -78.761%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union PP + XxHash64 - time: [3.8635 ms 3.8640 ms 3.8645 ms] - change: [-79.410% -79.399% -79.390%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 7 (7.00%) high severe - -Union PP + WyHash - time: [3.8652 ms 3.8658 ms 3.8665 ms] - change: [-79.384% -79.376% -79.368%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 7 (7.00%) high mild - 7 (7.00%) high severe - -Union HybridLLB + XxHash64 - time: [2.3233 ms 2.3237 ms 2.3241 ms] - change: [-79.032% -79.025% -79.019%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union HybridLLB + WyHash - time: [2.3234 ms 2.3238 ms 2.3243 ms] - change: [-79.089% -79.077% -79.068%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union HybridLLB + XxHash64 - time: [2.3927 ms 2.3945 ms 2.3964 ms] - change: [-79.856% -79.839% -79.820%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + WyHash - time: [2.3889 ms 2.3898 ms 2.3907 ms] - change: [-79.973% -79.947% -79.924%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [2.3031 ms 2.3045 ms 2.3058 ms] - change: [-79.049% -79.033% -79.017%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridLLB + WyHash - time: [2.2978 ms 2.2987 ms 2.2995 ms] - change: [-79.077% -79.061% -79.046%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + XxHash64 - time: [2.4511 ms 2.4515 ms 2.4518 ms] - change: [-79.669% -79.648% -79.633%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) low mild - 1 (1.00%) high mild - -Union HybridLLB + WyHash - time: [2.4510 ms 2.4516 ms 2.4524 ms] - change: [-79.679% -79.661% -79.646%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 2 (2.00%) low severe - 5 (5.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + XxHash64 - time: [4.0001 ms 4.0006 ms 4.0011 ms] - change: [-77.071% -77.065% -77.060%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [3.9994 ms 4.0469 ms 4.1153 ms] - change: [-77.069% -76.798% -76.429%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Union HybridLLB + XxHash64 - time: [3.8607 ms 3.8611 ms 3.8616 ms] - change: [-79.357% -79.336% -79.319%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [3.8576 ms 3.8579 ms 3.8583 ms] - change: [-79.320% -79.307% -79.296%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [2.3332 ms 2.3334 ms 2.3337 ms] - change: [-79.107% -79.095% -79.086%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union HybridPP + WyHash - time: [2.3399 ms 2.3404 ms 2.3409 ms] - change: [-79.037% -79.025% -79.014%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [2.4123 ms 2.4141 ms 2.4159 ms] - change: [-79.719% -79.696% -79.674%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union HybridPP + WyHash - time: [2.4160 ms 2.4187 ms 2.4214 ms] - change: [-79.737% -79.713% -79.691%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridPP + XxHash64 - time: [2.3080 ms 2.3084 ms 2.3089 ms] - change: [-79.064% -79.057% -79.051%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridPP + WyHash - time: [2.3065 ms 2.3066 ms 2.3069 ms] - change: [-79.098% -79.087% -79.077%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [2.4603 ms 2.4609 ms 2.4614 ms] - change: [-79.557% -79.550% -79.543%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 4 (4.00%) low mild - 7 (7.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [2.4610 ms 2.4615 ms 2.4621 ms] - change: [-79.592% -79.579% -79.569%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) low severe - 2 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [3.7546 ms 3.7561 ms 3.7576 ms] - change: [-78.553% -78.542% -78.532%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridPP + WyHash - time: [3.7561 ms 3.7575 ms 3.7589 ms] - change: [-78.634% -78.618% -78.604%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridPP + XxHash64 - time: [3.6001 ms 3.6009 ms 3.6018 ms] - change: [-80.697% -80.689% -80.682%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridPP + WyHash - time: [3.5977 ms 3.5983 ms 3.5989 ms] - change: [-80.796% -80.790% -80.785%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [816.10 ms 816.23 ms 816.36 ms] - change: [-77.646% -77.641% -77.638%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [742.33 ms 742.40 ms 742.48 ms] - change: [-79.995% -79.993% -79.991%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [813.89 ms 814.11 ms 814.28 ms] - change: [-77.673% -77.668% -77.663%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [740.06 ms 740.32 ms 740.57 ms] - change: [-80.038% -80.031% -80.025%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [815.21 ms 815.32 ms 815.43 ms] - change: [-77.673% -77.669% -77.666%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [741.41 ms 741.50 ms 741.59 ms] - change: [-80.034% -80.031% -80.028%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [813.64 ms 813.90 ms 814.14 ms] - change: [-77.702% -77.695% -77.688%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [740.62 ms 740.72 ms 740.83 ms] - change: [-80.038% -80.035% -80.031%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [814.00 ms 814.26 ms 814.49 ms] - change: [-77.672% -77.664% -77.658%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [740.00 ms 740.23 ms 740.45 ms] - change: [-80.041% -80.034% -80.028%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [813.37 ms 813.59 ms 813.81 ms] - change: [-77.674% -77.668% -77.662%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [739.20 ms 739.49 ms 739.78 ms] - change: [-80.047% -80.038% -80.031%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [817.33 ms 817.40 ms 817.46 ms] - change: [-77.645% -77.643% -77.640%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [743.55 ms 744.02 ms 744.58 ms] - change: [-79.982% -79.970% -79.955%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [814.31 ms 814.56 ms 814.79 ms] - change: [-77.673% -77.666% -77.660%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [740.87 ms 741.02 ms 741.13 ms] - change: [-80.017% -80.013% -80.009%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + XxHash64 - time: [815.66 ms 815.78 ms 815.90 ms] - change: [-77.673% -77.670% -77.667%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [741.83 ms 742.03 ms 742.18 ms] - change: [-80.026% -80.020% -80.016%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2PP + XxHash64 - time: [814.28 ms 814.58 ms 814.85 ms] - change: [-77.698% -77.689% -77.681%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [740.85 ms 741.13 ms 741.34 ms] - change: [-80.041% -80.034% -80.028%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2PP + XxHash64 - time: [814.53 ms 814.70 ms 814.85 ms] - change: [-77.662% -77.657% -77.653%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low severe - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [740.78 ms 740.92 ms 741.04 ms] - change: [-80.020% -80.016% -80.013%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [813.37 ms 813.51 ms 813.65 ms] - change: [-77.692% -77.688% -77.683%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [739.79 ms 739.96 ms 740.10 ms] - change: [-80.034% -80.030% -80.026%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [815.84 ms 815.97 ms 816.09 ms] - change: [-77.566% -77.559% -77.554%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [741.82 ms 742.07 ms 742.32 ms] - change: [-79.860% -79.853% -79.846%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [814.21 ms 814.27 ms 814.33 ms] - change: [-77.588% -77.585% -77.583%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [740.07 ms 740.26 ms 740.42 ms] - change: [-79.821% -79.816% -79.811%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [814.87 ms 815.03 ms 815.16 ms] - change: [-77.607% -77.603% -77.599%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [741.24 ms 741.40 ms 741.55 ms] - change: [-79.889% -79.884% -79.879%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [814.08 ms 814.15 ms 814.20 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [740.61 ms 740.67 ms 740.72 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + XxHash64 - time: [813.66 ms 813.93 ms 814.14 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [740.36 ms 740.45 ms 740.53 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + XxHash64 - time: [813.25 ms 813.34 ms 813.44 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [739.70 ms 739.83 ms 739.93 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union HybridMLE2PP + XxHash64 - time: [817.26 ms 817.38 ms 817.49 ms] - -Union HybridMLE2PP + WyHash - time: [743.11 ms 743.32 ms 743.48 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [814.24 ms 814.48 ms 814.70 ms] - -Union HybridMLE2PP + WyHash - time: [740.51 ms 740.58 ms 740.68 ms] - -Union HybridMLE2PP + XxHash64 - time: [815.52 ms 815.70 ms 815.89 ms] - -Union HybridMLE2PP + WyHash - time: [741.36 ms 741.61 ms 741.83 ms] - -Union HybridMLE2PP + XxHash64 - time: [814.60 ms 814.74 ms 814.84 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union HybridMLE2PP + WyHash - time: [740.75 ms 740.84 ms 740.92 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [814.05 ms 814.24 ms 814.41 ms] - -Union HybridMLE2PP + WyHash - time: [740.45 ms 740.63 ms 740.79 ms] - -Union HybridMLE2PP + XxHash64 - time: [812.63 ms 812.94 ms 813.26 ms] - -Union HybridMLE2PP + WyHash - time: [739.62 ms 739.74 ms 739.85 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union Tabac + XxHash64 - time: [9.5996 ms 9.6005 ms 9.6018 ms] -Found 4 outliers among 20 measurements (20.00%) - 4 (20.00%) high mild - -Union TabacPP + XxHash64 - time: [23.741 ms 23.755 ms 23.776 ms] -Found 5 outliers among 20 measurements (25.00%) - 1 (5.00%) low mild - 1 (5.00%) high mild - 3 (15.00%) high severe - -Union SA + XxHash64 - time: [3.3136 ms 3.3139 ms 3.3143 ms] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union CF + WyHash - time: [19.315 ms 19.321 ms 19.328 ms] -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) high mild - 6 (6.00%) high severe - -Union CF + XxHash64 - time: [19.296 ms 19.301 ms 19.306 ms] -Found 13 outliers among 100 measurements (13.00%) - 8 (8.00%) high mild - 5 (5.00%) high severe - -Union FrankPP + SipHasher13 - time: [48.734 ms 48.739 ms 48.743 ms] - -Union SM time: [7.1031 ms 7.1154 ms 7.1251 ms] - -Union SHLL - time: [2.5463 ms 2.5487 ms 2.5515 ms] -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) low mild - 1 (5.00%) high mild - -Union LLB + XxHash64 - time: [4.6322 ms 4.6356 ms 4.6394 ms] -Found 12 outliers among 100 measurements (12.00%) - 7 (7.00%) high mild - 5 (5.00%) high severe - -Union LLB + WyHash - time: [4.6332 ms 4.6371 ms 4.6416 ms] -Found 14 outliers among 100 measurements (14.00%) - 7 (7.00%) high mild - 7 (7.00%) high severe - -Union LLB + XxHash64 - time: [4.8157 ms 4.8232 ms 4.8312 ms] -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [4.8306 ms 4.8403 ms 4.8502 ms] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + XxHash64 - time: [4.5767 ms 4.5816 ms 4.5871 ms] -Found 10 outliers among 100 measurements (10.00%) - 7 (7.00%) high mild - 3 (3.00%) high severe - -Union LLB + WyHash - time: [4.5580 ms 4.5592 ms 4.5607 ms] -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) high mild - 4 (4.00%) high severe - -Union LLB + XxHash64 - time: [4.8801 ms 4.8828 ms 4.8857 ms] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union LLB + WyHash - time: [4.8857 ms 4.8881 ms 4.8905 ms] -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union LLB + XxHash64 - time: [7.3803 ms 7.3855 ms 7.3912 ms] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [7.3573 ms 7.3607 ms 7.3643 ms] -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [7.7573 ms 7.7627 ms 7.7685 ms] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [7.7203 ms 7.7254 ms 7.7309 ms] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [4.6491 ms 4.6519 ms 4.6551 ms] -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Union PP + WyHash - time: [4.6462 ms 4.6481 ms 4.6502 ms] -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [4.8208 ms 4.8250 ms 4.8293 ms] - -Union PP + WyHash - time: [4.8354 ms 4.8422 ms 4.8493 ms] - -Union PP + XxHash64 - time: [4.5876 ms 4.5888 ms 4.5903 ms] -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) high mild - 5 (5.00%) high severe - -Union PP + WyHash - time: [4.5892 ms 4.5910 ms 4.5930 ms] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Union PP + XxHash64 - time: [4.9398 ms 4.9479 ms 4.9565 ms] -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high mild - -Union PP + WyHash - time: [4.9396 ms 4.9467 ms 4.9539 ms] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union PP + XxHash64 - time: [7.4330 ms 7.4426 ms 7.4524 ms] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union PP + WyHash - time: [7.3820 ms 7.3871 ms 7.3923 ms] - -Union PP + XxHash64 - time: [7.8095 ms 7.8204 ms 7.8316 ms] - -Union PP + WyHash - time: [7.8243 ms 7.8389 ms 7.8539 ms] - -Union HybridLLB + XxHash64 - time: [4.6600 ms 4.6627 ms 4.6657 ms] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [4.6258 ms 4.6277 ms 4.6299 ms] -Found 11 outliers among 100 measurements (11.00%) - 6 (6.00%) high mild - 5 (5.00%) high severe - -Union HybridLLB + XxHash64 - time: [4.8298 ms 4.8344 ms 4.8388 ms] -Found 17 outliers among 100 measurements (17.00%) - 15 (15.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [4.8632 ms 4.8690 ms 4.8751 ms] -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [4.5755 ms 4.5780 ms 4.5810 ms] -Found 11 outliers among 100 measurements (11.00%) - 4 (4.00%) high mild - 7 (7.00%) high severe - -Union HybridLLB + WyHash - time: [4.5738 ms 4.5753 ms 4.5769 ms] -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [4.9233 ms 4.9295 ms 4.9359 ms] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + WyHash - time: [4.9192 ms 4.9249 ms 4.9305 ms] - -Union HybridLLB + XxHash64 - time: [8.0699 ms 8.0746 ms 8.0797 ms] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + WyHash - time: [8.0117 ms 8.0152 ms 8.0190 ms] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [7.7196 ms 7.7236 ms 7.7279 ms] -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [7.7660 ms 7.7767 ms 7.7880 ms] - -Union HybridPP + XxHash64 - time: [4.6754 ms 4.6803 ms 4.6856 ms] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union HybridPP + WyHash - time: [4.6705 ms 4.6741 ms 4.6777 ms] -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union HybridPP + XxHash64 - time: [4.8232 ms 4.8275 ms 4.8321 ms] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [4.8460 ms 4.8520 ms 4.8579 ms] - -Union HybridPP + XxHash64 - time: [4.5876 ms 4.5886 ms 4.5898 ms] -Found 8 outliers among 100 measurements (8.00%) - 6 (6.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [4.5913 ms 4.5924 ms 4.5936 ms] -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [4.9557 ms 4.9593 ms 4.9629 ms] -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - -Union HybridPP + WyHash - time: [4.9680 ms 4.9743 ms 4.9806 ms] -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) low mild - 3 (3.00%) high mild - -Union HybridPP + XxHash64 - time: [7.6160 ms 7.6246 ms 7.6332 ms] -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union HybridPP + WyHash - time: [7.5027 ms 7.5106 ms 7.5188 ms] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridPP + XxHash64 - time: [7.2093 ms 7.2176 ms 7.2258 ms] - -Union HybridPP + WyHash - time: [7.2311 ms 7.2434 ms 7.2566 ms] -Found 19 outliers among 100 measurements (19.00%) - 6 (6.00%) high mild - 13 (13.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.3530 s 3.3536 s 3.3544 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [3.0036 s 3.0041 s 3.0045 s] - -Union MLE2LLB + XxHash64 - time: [3.3507 s 3.3534 s 3.3568 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union MLE2LLB + WyHash - time: [3.0012 s 3.0017 s 3.0021 s] - -Union MLE2LLB + XxHash64 - time: [3.3489 s 3.3493 s 3.3498 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [2.9986 s 2.9994 s 3.0005 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.3583 s 3.3923 s 3.4495 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [2.9993 s 3.0406 s 3.1103 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.3459 s 3.3484 s 3.3513 s] - -Union MLE2LLB + WyHash - time: [3.0049 s 3.0053 s 3.0057 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [3.3449 s 3.3462 s 3.3483 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [3.0001 s 3.0029 s 3.0050 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2PP + XxHash64 - time: [3.3760 s 3.3768 s 3.3775 s] - -Union MLE2PP + WyHash - time: [3.0068 s 3.0100 s 3.0126 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union MLE2PP + XxHash64 - time: [3.3690 s 3.3721 s 3.3749 s] - -Union MLE2PP + WyHash - time: [3.0012 s 3.0032 s 3.0058 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union MLE2PP + XxHash64 - time: [3.3673 s 3.3707 s 3.3738 s] - -Union MLE2PP + WyHash - time: [3.0012 s 3.0044 s 3.0074 s] - -Union MLE2PP + XxHash64 - time: [3.3649 s 3.3682 s 3.3710 s] - -Union MLE2PP + WyHash - time: [2.9973 s 3.0005 s 3.0038 s] - -Union MLE2PP + XxHash64 - time: [3.3705 s 3.3708 s 3.3711 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [2.9999 s 3.0029 s 3.0057 s] - -Union MLE2PP + XxHash64 - time: [3.3688 s 3.3693 s 3.3699 s] - -Union MLE2PP + WyHash - time: [2.9964 s 2.9993 s 3.0023 s] - -Union HybridMLE2LLB + XxHash64 - time: [3.2450 s 3.2732 s 3.2982 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [2.7405 s 2.7447 s 2.7496 s] - -Union HybridMLE2LLB + XxHash64 - time: [3.1360 s 3.1378 s 3.1400 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [2.7298 s 2.7318 s 2.7345 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [3.1467 s 3.1482 s 3.1498 s] - -Union HybridMLE2LLB + WyHash - time: [2.7367 s 2.7376 s 2.7387 s] - -Union HybridMLE2LLB + XxHash64 - time: [3.1296 s 3.1312 s 3.1330 s] - -Union HybridMLE2LLB + WyHash - time: [2.7208 s 2.7227 s 2.7254 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.1404 s 3.1411 s 3.1418 s] - -Union HybridMLE2LLB + WyHash - time: [2.7486 s 2.7503 s 2.7524 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [3.1255 s 3.1281 s 3.1314 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [2.7175 s 2.7188 s 2.7206 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [3.1677 s 3.1684 s 3.1693 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [2.7350 s 2.7355 s 2.7360 s] - -Union HybridMLE2PP + XxHash64 - time: [3.1443 s 3.1453 s 3.1468 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [2.7231 s 2.7236 s 2.7242 s] - -Union HybridMLE2PP + XxHash64 - time: [3.1545 s 3.1553 s 3.1562 s] - -Union HybridMLE2PP + WyHash - time: [2.7331 s 2.7336 s 2.7341 s] - -Union HybridMLE2PP + XxHash64 - time: [3.1394 s 3.1405 s 3.1422 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [2.7181 s 2.7191 s 2.7210 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [3.1514 s 3.1520 s 3.1526 s] - -Union HybridMLE2PP + WyHash - time: [2.7448 s 2.7463 s 2.7482 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [3.1369 s 3.1387 s 3.1408 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [2.7243 s 2.7257 s 2.7275 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union Tabac + XxHash64 - time: [18.440 ms 18.534 ms 18.693 ms] -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Union TabacPP + XxHash64 - time: [47.219 ms 47.231 ms 47.245 ms] - -Union SA + XxHash64 - time: [6.2376 ms 6.2407 ms 6.2445 ms] -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Union CF + WyHash - time: [35.488 ms 35.504 ms 35.527 ms] -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 12 (12.00%) high severe - -Union CF + XxHash64 - time: [35.470 ms 35.479 ms 35.488 ms] -Found 16 outliers among 100 measurements (16.00%) - 10 (10.00%) high mild - 6 (6.00%) high severe - -Union FrankPP + SipHasher13 - time: [89.410 ms 89.454 ms 89.498 ms] - -Union SM time: [12.768 ms 12.772 ms 12.777 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union SHLL - time: [4.5143 ms 4.5166 ms 4.5200 ms] -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Union LLB + XxHash64 - time: [9.3728 ms 9.3937 ms 9.4155 ms] - -Union LLB + WyHash - time: [9.3806 ms 9.4025 ms 9.4255 ms] - -Union LLB + XxHash64 - time: [9.7346 ms 9.7486 ms 9.7629 ms] - -Union LLB + WyHash - time: [9.7092 ms 9.7248 ms 9.7410 ms] - -Union LLB + XxHash64 - time: [9.2032 ms 9.2181 ms 9.2332 ms] - -Union LLB + WyHash - time: [9.2303 ms 9.2486 ms 9.2677 ms] - -Union LLB + XxHash64 - time: [9.8600 ms 9.8716 ms 9.8841 ms] - -Union LLB + WyHash - time: [9.8856 ms 9.8958 ms 9.9060 ms] - -Union LLB + XxHash64 - time: [16.080 ms 16.094 ms 16.109 ms] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [16.106 ms 16.120 ms 16.135 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + XxHash64 - time: [14.225 ms 14.246 ms 14.266 ms] - -Union LLB + WyHash - time: [14.524 ms 14.533 ms 14.543 ms] - -Union PP + XxHash64 - time: [9.3461 ms 9.3547 ms 9.3639 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [9.3740 ms 9.3882 ms 9.4033 ms] - -Union PP + XxHash64 - time: [9.7008 ms 9.7185 ms 9.7376 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [9.7152 ms 9.7277 ms 9.7405 ms] - -Union PP + XxHash64 - time: [9.2099 ms 9.2201 ms 9.2314 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Union PP + WyHash - time: [9.2304 ms 9.2462 ms 9.2625 ms] - -Union PP + XxHash64 - time: [9.8957 ms 9.9059 ms 9.9167 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union PP + WyHash - time: [9.8784 ms 9.8907 ms 9.9033 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union PP + XxHash64 - time: [16.078 ms 16.091 ms 16.106 ms] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) high mild - 3 (6.00%) high severe - -Union PP + WyHash - time: [16.159 ms 16.182 ms 16.205 ms] - -Union PP + XxHash64 - time: [14.681 ms 14.700 ms 14.719 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union PP + WyHash - time: [14.276 ms 14.286 ms 14.298 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [9.3603 ms 9.3765 ms 9.3916 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) low mild - -Union HybridLLB + WyHash - time: [9.3927 ms 9.4062 ms 9.4187 ms] -Found 13 outliers among 50 measurements (26.00%) - 5 (10.00%) low severe - 1 (2.00%) low mild - 7 (14.00%) high mild - -Union HybridLLB + XxHash64 - time: [9.7977 ms 9.8097 ms 9.8222 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [9.7879 ms 9.7992 ms 9.8109 ms] - -Union HybridLLB + XxHash64 - time: [9.2360 ms 9.2486 ms 9.2605 ms] -Found 8 outliers among 50 measurements (16.00%) - 7 (14.00%) low mild - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [9.2855 ms 9.3030 ms 9.3203 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [9.9257 ms 9.9397 ms 9.9531 ms] - -Union HybridLLB + WyHash - time: [9.8938 ms 9.9054 ms 9.9173 ms] - -Union HybridLLB + XxHash64 - time: [16.025 ms 16.035 ms 16.044 ms] - -Union HybridLLB + WyHash - time: [16.035 ms 16.043 ms 16.051 ms] - -Union HybridLLB + XxHash64 - time: [15.474 ms 15.493 ms 15.514 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [15.436 ms 15.447 ms 15.459 ms] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - -Union HybridPP + XxHash64 - time: [9.5391 ms 9.5463 ms 9.5532 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) low mild - -Union HybridPP + WyHash - time: [9.4283 ms 9.4463 ms 9.4632 ms] -Found 12 outliers among 50 measurements (24.00%) - 5 (10.00%) low severe - 4 (8.00%) low mild - 1 (2.00%) high mild - 2 (4.00%) high severe - -Union HybridPP + XxHash64 - time: [9.7505 ms 9.7675 ms 9.7847 ms] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) low mild - 2 (4.00%) high mild - -Union HybridPP + WyHash - time: [9.7074 ms 9.7243 ms 9.7399 ms] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) low severe - 7 (14.00%) low mild - -Union HybridPP + XxHash64 - time: [9.2538 ms 9.2837 ms 9.3129 ms] - -Union HybridPP + WyHash - time: [9.2944 ms 9.3112 ms 9.3259 ms] -Found 8 outliers among 50 measurements (16.00%) - 8 (16.00%) low severe - -Union HybridPP + XxHash64 - time: [9.9952 ms 10.006 ms 10.016 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) low mild - -Union HybridPP + WyHash - time: [10.036 ms 10.067 ms 10.098 ms] - -Union HybridPP + XxHash64 - time: [15.000 ms 15.019 ms 15.039 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Union HybridPP + WyHash - time: [15.011 ms 15.024 ms 15.037 ms] - -Union HybridPP + XxHash64 - time: [14.442 ms 14.472 ms 14.505 ms] -Found 9 outliers among 50 measurements (18.00%) - 9 (18.00%) high severe - -Union HybridPP + WyHash - time: [14.378 ms 14.394 ms 14.410 ms] - -Union MLE2LLB + XxHash64 - time: [2.9719 s 2.9723 s 2.9726 s] - -Union MLE2LLB + WyHash - time: [2.6823 s 2.6826 s 2.6828 s] - -Union MLE2LLB + XxHash64 - time: [2.9646 s 2.9650 s 2.9653 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [2.6797 s 2.6817 s 2.6834 s] - -Union MLE2LLB + XxHash64 - time: [2.9684 s 2.9688 s 2.9693 s] - -Union MLE2LLB + WyHash - time: [2.6797 s 2.6873 s 2.7006 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [2.9840 s 3.0367 s 3.0980 s] - -Union MLE2LLB + WyHash - time: [2.6738 s 2.6740 s 2.6742 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [2.9627 s 2.9692 s 2.9780 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2LLB + WyHash - time: [2.6723 s 2.6727 s 2.6730 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + XxHash64 - time: [2.9592 s 2.9595 s 2.9597 s] - -Union MLE2LLB + WyHash - time: [2.6747 s 2.6770 s 2.6786 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2PP + XxHash64 - time: [2.9907 s 2.9927 s 2.9941 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + WyHash - time: [2.6968 s 2.6994 s 2.7019 s] - -Union MLE2PP + XxHash64 - time: [2.9835 s 2.9866 s 2.9894 s] - -Union MLE2PP + WyHash - time: [2.6922 s 2.6945 s 2.6969 s] - -Union MLE2PP + XxHash64 - time: [2.9811 s 2.9831 s 2.9854 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [2.6951 s 2.6979 s 2.7004 s] - -Union MLE2PP + XxHash64 - time: [2.9841 s 2.9868 s 2.9889 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2PP + WyHash - time: [2.6900 s 2.6904 s 2.6908 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [2.9826 s 2.9831 s 2.9837 s] - -Union MLE2PP + WyHash - time: [2.6872 s 2.6899 s 2.6926 s] - -Union MLE2PP + XxHash64 - time: [2.9720 s 2.9739 s 2.9765 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + WyHash - time: [2.6825 s 2.6830 s 2.6834 s] - -Union HybridMLE2LLB + XxHash64 - time: [2.7984 s 2.7987 s 2.7991 s] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 2 (20.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [2.5353 s 2.5376 s 2.5401 s] - -Union HybridMLE2LLB + XxHash64 - time: [2.6622 s 2.6752 s 2.6877 s] - -Union HybridMLE2LLB + WyHash - time: [2.3876 s 2.3961 s 2.4084 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [2.6473 s 2.6484 s 2.6497 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [2.4079 s 2.4092 s 2.4107 s] - -Union HybridMLE2LLB + XxHash64 - time: [2.5505 s 2.5528 s 2.5554 s] - -Union HybridMLE2LLB + WyHash - time: [2.3687 s 2.3702 s 2.3716 s] - -Union HybridMLE2LLB + XxHash64 - time: [2.6424 s 2.6434 s 2.6444 s] - -Union HybridMLE2LLB + WyHash - time: [2.3919 s 2.3938 s 2.3956 s] - -Union HybridMLE2LLB + XxHash64 - time: [2.5385 s 2.5400 s 2.5427 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [2.3642 s 2.3651 s 2.3662 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [2.6605 s 2.6615 s 2.6627 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [2.4107 s 2.4117 s 2.4133 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [2.5579 s 2.5604 s 2.5632 s] - -Union HybridMLE2PP + WyHash - time: [2.3837 s 2.3864 s 2.3891 s] - -Union HybridMLE2PP + XxHash64 - time: [2.6570 s 2.6579 s 2.6588 s] - -Union HybridMLE2PP + WyHash - time: [2.4075 s 2.4082 s 2.4090 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [2.5610 s 2.5630 s 2.5648 s] -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low severe - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [2.3819 s 2.3824 s 2.3829 s] - -Union HybridMLE2PP + XxHash64 - time: [2.6514 s 2.6517 s 2.6521 s] - -Union HybridMLE2PP + WyHash - time: [2.4026 s 2.4030 s 2.4034 s] - -Union HybridMLE2PP + XxHash64 - time: [2.5510 s 2.5534 s 2.5559 s] - -Union HybridMLE2PP + WyHash - time: [2.3745 s 2.3758 s 2.3773 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union Tabac + XxHash64 - time: [36.097 ms 36.110 ms 36.121 ms] - -Union TabacPP + XxHash64 - time: [105.78 ms 106.00 ms 106.27 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SA + XxHash64 - time: [12.495 ms 12.510 ms 12.526 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union CF + WyHash - time: [67.272 ms 67.298 ms 67.326 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union CF + XxHash64 - time: [67.209 ms 67.231 ms 67.258 ms] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Union FrankPP + SipHasher13 - time: [158.26 ms 158.27 ms 158.30 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SM time: [25.057 ms 25.090 ms 25.163 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union SHLL - time: [9.6823 ms 9.6916 ms 9.7010 ms] - -Union LLB + XxHash64 - time: [18.720 ms 18.732 ms 18.743 ms] - -Union LLB + WyHash - time: [18.743 ms 18.763 ms 18.793 ms] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Union LLB + XxHash64 - time: [19.347 ms 19.364 ms 19.388 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [19.404 ms 19.418 ms 19.433 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + XxHash64 - time: [18.458 ms 18.475 ms 18.493 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + WyHash - time: [18.538 ms 18.558 ms 18.579 ms] - -Union LLB + XxHash64 - time: [19.667 ms 19.698 ms 19.734 ms] -Found 6 outliers among 50 measurements (12.00%) - 5 (10.00%) high mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [19.785 ms 19.804 ms 19.824 ms] - -Union LLB + XxHash64 - time: [32.140 ms 32.154 ms 32.169 ms] - -Union LLB + WyHash - time: [32.112 ms 32.125 ms 32.140 ms] -Found 6 outliers among 50 measurements (12.00%) - 3 (6.00%) low mild - 3 (6.00%) high severe - -Union LLB + XxHash64 - time: [28.624 ms 28.633 ms 28.642 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + WyHash - time: [28.628 ms 28.638 ms 28.648 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [18.770 ms 18.782 ms 18.793 ms] -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) low mild - -Union PP + WyHash - time: [18.712 ms 18.727 ms 18.742 ms] - -Union PP + XxHash64 - time: [19.381 ms 19.396 ms 19.413 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union PP + WyHash - time: [19.352 ms 19.372 ms 19.394 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 5 (10.00%) high mild - -Union PP + XxHash64 - time: [18.486 ms 18.514 ms 18.544 ms] - -Union PP + WyHash - time: [18.516 ms 18.542 ms 18.568 ms] - -Union PP + XxHash64 - time: [19.696 ms 19.726 ms 19.757 ms] - -Union PP + WyHash - time: [19.668 ms 19.691 ms 19.715 ms] - -Union PP + XxHash64 - time: [32.109 ms 32.132 ms 32.156 ms] - -Union PP + WyHash - time: [32.114 ms 32.132 ms 32.150 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [28.668 ms 28.676 ms 28.684 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union PP + WyHash - time: [28.680 ms 28.694 ms 28.708 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridLLB + XxHash64 - time: [18.643 ms 18.655 ms 18.668 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [18.567 ms 18.582 ms 18.596 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union HybridLLB + XxHash64 - time: [19.193 ms 19.212 ms 19.231 ms] - -Union HybridLLB + WyHash - time: [19.204 ms 19.226 ms 19.247 ms] - -Union HybridLLB + XxHash64 - time: [18.279 ms 18.302 ms 18.325 ms] - -Union HybridLLB + WyHash - time: [18.259 ms 18.272 ms 18.285 ms] - -Union HybridLLB + XxHash64 - time: [19.376 ms 19.387 ms 19.398 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [19.441 ms 19.467 ms 19.496 ms] - -Union HybridLLB + XxHash64 - time: [31.504 ms 31.525 ms 31.547 ms] -Found 6 outliers among 50 measurements (12.00%) - 5 (10.00%) high mild - 1 (2.00%) high severe - -Union HybridLLB + WyHash - time: [31.476 ms 31.494 ms 31.512 ms] - -Union HybridLLB + XxHash64 - time: [28.191 ms 28.205 ms 28.219 ms] - -Union HybridLLB + WyHash - time: [28.219 ms 28.239 ms 28.262 ms] -Found 7 outliers among 50 measurements (14.00%) - 1 (2.00%) low mild - 4 (8.00%) high mild - 2 (4.00%) high severe - -Union HybridPP + XxHash64 - time: [18.650 ms 18.667 ms 18.682 ms] - -Union HybridPP + WyHash - time: [18.683 ms 18.690 ms 18.697 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low severe - 1 (2.00%) low mild - -Union HybridPP + XxHash64 - time: [19.279 ms 19.291 ms 19.303 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) low mild - 5 (10.00%) high mild - -Union HybridPP + WyHash - time: [19.528 ms 19.563 ms 19.599 ms] - -Union HybridPP + XxHash64 - time: [18.336 ms 18.353 ms 18.371 ms] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high mild - -Union HybridPP + WyHash - time: [18.355 ms 18.365 ms 18.374 ms] - -Union HybridPP + XxHash64 - time: [19.659 ms 19.696 ms 19.737 ms] -Found 8 outliers among 50 measurements (16.00%) - 8 (16.00%) high severe - -Union HybridPP + WyHash - time: [19.497 ms 19.514 ms 19.532 ms] - -Union HybridPP + XxHash64 - time: [28.829 ms 28.841 ms 28.854 ms] - -Union HybridPP + WyHash - time: [28.808 ms 28.818 ms 28.829 ms] - -Union HybridPP + XxHash64 - time: [28.191 ms 28.201 ms 28.212 ms] - -Union HybridPP + WyHash - time: [28.184 ms 28.192 ms 28.201 ms] - -Union MLE2LLB + XxHash64 - time: [1.0476 s 1.0478 s 1.0480 s] - -Union MLE2LLB + WyHash - time: [948.53 ms 948.65 ms 948.76 ms] - -Union MLE2LLB + XxHash64 - time: [1.0386 s 1.0387 s 1.0388 s] - -Union MLE2LLB + WyHash - time: [936.44 ms 936.72 ms 937.14 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [1.0586 s 1.0599 s 1.0610 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2LLB + WyHash - time: [951.97 ms 952.08 ms 952.18 ms] - -Union MLE2LLB + XxHash64 - time: [1.0548 s 1.0564 s 1.0580 s] - -Union MLE2LLB + WyHash - time: [950.46 ms 950.56 ms 950.66 ms] - -Union MLE2LLB + XxHash64 - time: [1.0483 s 1.0484 s 1.0485 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [946.16 ms 947.34 ms 948.59 ms] - -Union MLE2LLB + XxHash64 - time: [1.0400 s 1.0404 s 1.0409 s] - -Union MLE2LLB + WyHash - time: [936.54 ms 936.93 ms 937.44 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [1.0499 s 1.0500 s 1.0502 s] - -Union MLE2PP + WyHash - time: [948.10 ms 948.20 ms 948.31 ms] - -Union MLE2PP + XxHash64 - time: [1.0411 s 1.0418 s 1.0427 s] - -Union MLE2PP + WyHash - time: [938.21 ms 938.31 ms 938.40 ms] - -Union MLE2PP + XxHash64 - time: [1.0548 s 1.0549 s 1.0551 s] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2PP + WyHash - time: [951.65 ms 951.87 ms 952.09 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [1.0488 s 1.0489 s 1.0491 s] - -Union MLE2PP + WyHash - time: [945.72 ms 945.81 ms 945.91 ms] - -Union MLE2PP + XxHash64 - time: [1.0478 s 1.0479 s 1.0480 s] - -Union MLE2PP + WyHash - time: [944.52 ms 944.61 ms 944.70 ms] - -Union MLE2PP + XxHash64 - time: [1.0436 s 1.0450 s 1.0460 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2PP + WyHash - time: [937.09 ms 937.21 ms 937.34 ms] - -Union HybridMLE2LLB + XxHash64 - time: [762.49 ms 762.73 ms 763.17 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [749.14 ms 749.20 ms 749.26 ms] - -Union HybridMLE2LLB + XxHash64 - time: [677.62 ms 677.82 ms 677.96 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union HybridMLE2LLB + WyHash - time: [662.83 ms 662.89 ms 662.96 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [768.24 ms 769.24 ms 770.23 ms] - -Union HybridMLE2LLB + WyHash - time: [754.05 ms 754.15 ms 754.25 ms] - -Union HybridMLE2LLB + XxHash64 - time: [687.22 ms 687.37 ms 687.52 ms] - -Union HybridMLE2LLB + WyHash - time: [673.62 ms 673.73 ms 673.85 ms] - -Union HybridMLE2LLB + XxHash64 - time: [786.42 ms 786.53 ms 786.66 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [747.41 ms 747.46 ms 747.51 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + XxHash64 - time: [673.12 ms 673.26 ms 673.41 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [660.01 ms 660.15 ms 660.29 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [764.65 ms 764.74 ms 764.82 ms] - -Union HybridMLE2PP + WyHash - time: [751.47 ms 751.54 ms 751.61 ms] - -Union HybridMLE2PP + XxHash64 - time: [677.99 ms 678.04 ms 678.09 ms] - -Union HybridMLE2PP + WyHash - time: [665.73 ms 666.34 ms 666.90 ms] - -Union HybridMLE2PP + XxHash64 - time: [768.12 ms 769.33 ms 770.38 ms] - -Union HybridMLE2PP + WyHash - time: [753.58 ms 754.49 ms 755.56 ms] - -Union HybridMLE2PP + XxHash64 - time: [682.45 ms 682.61 ms 682.79 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [669.42 ms 670.23 ms 671.12 ms] - -Union HybridMLE2PP + XxHash64 - time: [786.36 ms 787.28 ms 788.31 ms] - -Union HybridMLE2PP + WyHash - time: [746.95 ms 747.09 ms 747.27 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [674.67 ms 675.55 ms 676.43 ms] - -Union HybridMLE2PP + WyHash - time: [661.44 ms 662.25 ms 663.10 ms] - -Union Tabac + XxHash64 - time: [85.660 ms 85.684 ms 85.708 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union TabacPP + XxHash64 - time: [252.45 ms 252.51 ms 252.58 ms] - -Union SA + XxHash64 - time: [26.857 ms 26.894 ms 26.929 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union CF + WyHash - time: [127.76 ms 127.78 ms 127.80 ms] - -Union CF + XxHash64 - time: [127.23 ms 127.25 ms 127.26 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union FrankPP + SipHasher13 - time: [290.64 ms 290.74 ms 290.85 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union SM time: [52.513 ms 52.521 ms 52.527 ms] - -Union SHLL - time: [24.270 ms 24.308 ms 24.342 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union LLB + XxHash64 - time: [37.129 ms 37.140 ms 37.152 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + WyHash - time: [37.136 ms 37.145 ms 37.155 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + XxHash64 - time: [38.331 ms 38.343 ms 38.356 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + WyHash - time: [38.430 ms 38.468 ms 38.510 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + XxHash64 - time: [36.766 ms 36.791 ms 36.816 ms] - -Union LLB + WyHash - time: [36.774 ms 36.796 ms 36.817 ms] - -Union LLB + XxHash64 - time: [39.172 ms 39.183 ms 39.195 ms] - -Union LLB + WyHash - time: [39.195 ms 39.217 ms 39.239 ms] - -Union LLB + XxHash64 - time: [64.069 ms 64.082 ms 64.094 ms] - -Union LLB + WyHash - time: [64.107 ms 64.121 ms 64.136 ms] - -Union LLB + XxHash64 - time: [56.085 ms 56.105 ms 56.127 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + WyHash - time: [56.092 ms 56.105 ms 56.120 ms] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - -Union PP + XxHash64 - time: [37.162 ms 37.171 ms 37.181 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union PP + WyHash - time: [37.171 ms 37.184 ms 37.198 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union PP + XxHash64 - time: [38.386 ms 38.397 ms 38.409 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union PP + WyHash - time: [38.411 ms 38.425 ms 38.440 ms] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high mild - -Union PP + XxHash64 - time: [36.784 ms 36.796 ms 36.808 ms] - -Union PP + WyHash - time: [36.840 ms 36.859 ms 36.879 ms] - -Union PP + XxHash64 - time: [39.270 ms 39.289 ms 39.307 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high mild - -Union PP + WyHash - time: [39.225 ms 39.233 ms 39.241 ms] - -Union PP + XxHash64 - time: [64.053 ms 64.068 ms 64.084 ms] - -Union PP + WyHash - time: [64.062 ms 64.079 ms 64.097 ms] - -Union PP + XxHash64 - time: [57.838 ms 57.855 ms 57.873 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [56.029 ms 56.041 ms 56.057 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [36.313 ms 36.332 ms 36.352 ms] - -Union HybridLLB + WyHash - time: [36.287 ms 36.317 ms 36.348 ms] - -Union HybridLLB + XxHash64 - time: [37.690 ms 37.733 ms 37.778 ms] - -Union HybridLLB + WyHash - time: [37.738 ms 37.756 ms 37.773 ms] - -Union HybridLLB + XxHash64 - time: [36.084 ms 36.106 ms 36.143 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union HybridLLB + WyHash - time: [36.228 ms 36.262 ms 36.299 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridLLB + XxHash64 - time: [38.300 ms 38.325 ms 38.352 ms] - -Union HybridLLB + WyHash - time: [38.355 ms 38.366 ms 38.377 ms] - -Union HybridLLB + XxHash64 - time: [61.833 ms 61.850 ms 61.867 ms] - -Union HybridLLB + WyHash - time: [61.873 ms 61.899 ms 61.930 ms] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [59.824 ms 59.856 ms 59.887 ms] - -Union HybridLLB + WyHash - time: [59.892 ms 59.908 ms 59.924 ms] - -Union HybridPP + XxHash64 - time: [36.339 ms 36.363 ms 36.385 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) low mild - -Union HybridPP + WyHash - time: [36.690 ms 36.754 ms 36.816 ms] - -Union HybridPP + XxHash64 - time: [37.825 ms 37.860 ms 37.899 ms] -Found 8 outliers among 50 measurements (16.00%) - 8 (16.00%) high mild - -Union HybridPP + WyHash - time: [37.699 ms 37.725 ms 37.750 ms] - -Union HybridPP + XxHash64 - time: [35.993 ms 36.036 ms 36.084 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union HybridPP + WyHash - time: [36.024 ms 36.064 ms 36.104 ms] - -Union HybridPP + XxHash64 - time: [38.127 ms 38.147 ms 38.167 ms] - -Union HybridPP + WyHash - time: [38.090 ms 38.099 ms 38.108 ms] - -Union HybridPP + XxHash64 - time: [57.653 ms 57.673 ms 57.693 ms] - -Union HybridPP + WyHash - time: [57.617 ms 57.630 ms 57.644 ms] - -Union HybridPP + XxHash64 - time: [59.637 ms 59.652 ms 59.668 ms] - -Union HybridPP + WyHash - time: [59.545 ms 59.555 ms 59.566 ms] - -Union MLE2LLB + XxHash64 - time: [309.62 ms 309.67 ms 309.72 ms] - -Union MLE2LLB + WyHash - time: [272.26 ms 272.30 ms 272.33 ms] - -Union MLE2LLB + XxHash64 - time: [292.95 ms 293.03 ms 293.11 ms] - -Union MLE2LLB + WyHash - time: [254.92 ms 254.97 ms 255.01 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + XxHash64 - time: [306.02 ms 306.07 ms 306.11 ms] - -Union MLE2LLB + WyHash - time: [268.61 ms 268.63 ms 268.64 ms] - -Union MLE2LLB + XxHash64 - time: [291.74 ms 291.81 ms 291.89 ms] - -Union MLE2LLB + WyHash - time: [253.84 ms 253.94 ms 254.04 ms] - -Union MLE2LLB + XxHash64 - time: [293.29 ms 293.32 ms 293.35 ms] - -Union MLE2LLB + WyHash - time: [255.73 ms 255.94 ms 256.17 ms] - -Union MLE2LLB + XxHash64 - time: [282.33 ms 282.75 ms 283.23 ms] -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [244.37 ms 244.58 ms 244.81 ms] - -Union MLE2PP + XxHash64 - time: [319.65 ms 319.99 ms 320.37 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [281.42 ms 281.69 ms 282.03 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [292.65 ms 293.08 ms 293.58 ms] - -Union MLE2PP + WyHash - time: [254.28 ms 254.41 ms 254.55 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [306.18 ms 306.45 ms 306.70 ms] - -Union MLE2PP + WyHash - time: [268.31 ms 268.51 ms 268.72 ms] - -Union MLE2PP + XxHash64 - time: [309.17 ms 309.79 ms 310.55 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [270.63 ms 270.91 ms 271.20 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [291.33 ms 291.57 ms 291.81 ms] - -Union MLE2PP + WyHash - time: [253.40 ms 253.59 ms 253.80 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [279.41 ms 279.59 ms 279.79 ms] - -Union MLE2PP + WyHash - time: [241.73 ms 241.92 ms 242.12 ms] - -Union HybridMLE2LLB + XxHash64 - time: [246.01 ms 246.24 ms 246.48 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [245.86 ms 246.14 ms 246.42 ms] - -Union HybridMLE2LLB + XxHash64 - time: [214.02 ms 214.19 ms 214.38 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [226.67 ms 226.92 ms 227.16 ms] - -Union HybridMLE2LLB + XxHash64 - time: [242.71 ms 242.97 ms 243.21 ms] - -Union HybridMLE2LLB + WyHash - time: [242.58 ms 242.93 ms 243.28 ms] - -Union HybridMLE2LLB + XxHash64 - time: [213.64 ms 213.82 ms 214.03 ms] - -Union HybridMLE2LLB + WyHash - time: [225.63 ms 225.70 ms 225.77 ms] - -Union HybridMLE2LLB + XxHash64 - time: [229.63 ms 229.65 ms 229.68 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [230.25 ms 230.28 ms 230.32 ms] - -Union HybridMLE2LLB + XxHash64 - time: [203.60 ms 203.78 ms 203.92 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union HybridMLE2LLB + WyHash - time: [215.75 ms 215.86 ms 215.97 ms] - -Union HybridMLE2PP + XxHash64 - time: [254.11 ms 254.19 ms 254.25 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + WyHash - time: [254.42 ms 254.44 ms 254.46 ms] - -Union HybridMLE2PP + XxHash64 - time: [212.34 ms 212.44 ms 212.52 ms] - -Union HybridMLE2PP + WyHash - time: [225.25 ms 225.35 ms 225.46 ms] - -Union HybridMLE2PP + XxHash64 - time: [240.67 ms 240.76 ms 240.84 ms] - -Union HybridMLE2PP + WyHash - time: [240.66 ms 240.67 ms 240.69 ms] - -Union HybridMLE2PP + XxHash64 - time: [228.48 ms 228.64 ms 228.81 ms] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [241.44 ms 241.78 ms 242.15 ms] - -Union HybridMLE2PP + XxHash64 - time: [228.56 ms 228.68 ms 228.82 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [228.42 ms 228.66 ms 228.95 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [200.30 ms 200.34 ms 200.39 ms] - -Union HybridMLE2PP + WyHash - time: [212.97 ms 213.04 ms 213.13 ms] - -Union Tabac + XxHash64 - time: [153.53 ms 153.61 ms 153.70 ms] - -Union TabacPP + XxHash64 - time: [569.00 ms 569.33 ms 569.68 ms] - -Union SA + XxHash64 - time: [53.651 ms 53.712 ms 53.777 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union CF + WyHash - time: [207.32 ms 207.44 ms 207.58 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union CF + XxHash64 - time: [207.36 ms 207.48 ms 207.60 ms] - -Union FrankPP + SipHasher13 - time: [426.72 ms 426.83 ms 426.94 ms] - -Union SM time: [104.36 ms 104.39 ms 104.44 ms] - -Union SHLL - time: [61.209 ms 61.258 ms 61.315 ms] - -Union LLB + XxHash64 - time: [73.733 ms 73.748 ms 73.763 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + WyHash - time: [73.810 ms 73.863 ms 73.924 ms] -Found 8 outliers among 50 measurements (16.00%) - 1 (2.00%) high mild - 7 (14.00%) high severe - -Union LLB + XxHash64 - time: [76.409 ms 76.434 ms 76.459 ms] - -Union LLB + WyHash - time: [76.442 ms 76.464 ms 76.486 ms] - -Union LLB + XxHash64 - time: [72.882 ms 72.893 ms 72.905 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + WyHash - time: [72.883 ms 72.891 ms 72.898 ms] - -Union LLB + XxHash64 - time: [77.878 ms 77.900 ms 77.922 ms] - -Union LLB + WyHash - time: [77.940 ms 77.949 ms 77.958 ms] - -Union LLB + XxHash64 - time: [117.34 ms 117.36 ms 117.39 ms] - -Union LLB + WyHash - time: [117.22 ms 117.24 ms 117.27 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union LLB + XxHash64 - time: [113.78 ms 113.81 ms 113.84 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [113.74 ms 113.77 ms 113.80 ms] - -Union PP + XxHash64 - time: [73.874 ms 73.906 ms 73.938 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union PP + WyHash - time: [73.876 ms 73.896 ms 73.917 ms] - -Union PP + XxHash64 - time: [76.541 ms 76.578 ms 76.617 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [76.535 ms 76.563 ms 76.591 ms] - -Union PP + XxHash64 - time: [72.918 ms 72.927 ms 72.937 ms] - -Union PP + WyHash - time: [72.931 ms 72.941 ms 72.951 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [77.915 ms 77.935 ms 77.956 ms] - -Union PP + WyHash - time: [77.901 ms 77.921 ms 77.942 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union PP + XxHash64 - time: [117.27 ms 117.30 ms 117.32 ms] - -Union PP + WyHash - time: [117.39 ms 117.42 ms 117.45 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union PP + XxHash64 - time: [113.89 ms 113.92 ms 113.94 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [113.91 ms 113.93 ms 113.95 ms] - -Union HybridLLB + XxHash64 - time: [71.668 ms 71.701 ms 71.735 ms] - -Union HybridLLB + WyHash - time: [72.113 ms 72.229 ms 72.357 ms] -Found 8 outliers among 50 measurements (16.00%) - 6 (12.00%) high mild - 2 (4.00%) high severe - -Union HybridLLB + XxHash64 - time: [75.906 ms 76.006 ms 76.120 ms] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Union HybridLLB + WyHash - time: [75.619 ms 75.709 ms 75.794 ms] - -Union HybridLLB + XxHash64 - time: [70.726 ms 70.768 ms 70.811 ms] - -Union HybridLLB + WyHash - time: [70.849 ms 70.896 ms 70.944 ms] - -Union HybridLLB + XxHash64 - time: [76.122 ms 76.202 ms 76.293 ms] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Union HybridLLB + WyHash - time: [77.380 ms 77.599 ms 77.817 ms] - -Union HybridLLB + XxHash64 - time: [111.03 ms 111.08 ms 111.15 ms] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Union HybridLLB + WyHash - time: [111.03 ms 111.06 ms 111.10 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [109.84 ms 110.11 ms 110.38 ms] - -Union HybridLLB + WyHash - time: [108.03 ms 108.06 ms 108.10 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridPP + XxHash64 - time: [71.493 ms 71.530 ms 71.569 ms] - -Union HybridPP + WyHash - time: [71.454 ms 71.478 ms 71.503 ms] - -Union HybridPP + XxHash64 - time: [75.385 ms 75.472 ms 75.557 ms] - -Union HybridPP + WyHash - time: [75.693 ms 75.722 ms 75.752 ms] - -Union HybridPP + XxHash64 - time: [70.386 ms 70.410 ms 70.435 ms] - -Union HybridPP + WyHash - time: [70.210 ms 70.234 ms 70.257 ms] - -Union HybridPP + XxHash64 - time: [76.109 ms 76.123 ms 76.138 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridPP + WyHash - time: [75.895 ms 75.928 ms 75.962 ms] - -Union HybridPP + XxHash64 - time: [112.06 ms 112.09 ms 112.11 ms] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Union HybridPP + WyHash - time: [112.27 ms 112.28 ms 112.30 ms] - -Union HybridPP + XxHash64 - time: [110.29 ms 110.36 ms 110.42 ms] - -Union HybridPP + WyHash - time: [109.62 ms 109.65 ms 109.68 ms] - -Union MLE2LLB + XxHash64 - time: [447.67 ms 448.16 ms 448.89 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [447.46 ms 447.53 ms 447.61 ms] - -Union MLE2LLB + XxHash64 - time: [425.71 ms 425.83 ms 425.94 ms] - -Union MLE2LLB + WyHash - time: [425.52 ms 425.91 ms 426.21 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2LLB + XxHash64 - time: [457.61 ms 458.32 ms 459.17 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [458.31 ms 458.57 ms 459.01 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [424.25 ms 424.33 ms 424.40 ms] - -Union MLE2LLB + WyHash - time: [424.46 ms 424.56 ms 424.66 ms] - -Union MLE2LLB + XxHash64 - time: [420.70 ms 420.99 ms 421.25 ms] - -Union MLE2LLB + WyHash - time: [418.95 ms 419.14 ms 419.35 ms] - -Union MLE2LLB + XxHash64 - time: [402.81 ms 402.89 ms 403.00 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [403.39 ms 403.43 ms 403.47 ms] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [462.64 ms 462.68 ms 462.71 ms] - -Union MLE2PP + WyHash - time: [464.06 ms 464.12 ms 464.17 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + XxHash64 - time: [422.15 ms 422.49 ms 422.86 ms] - -Union MLE2PP + WyHash - time: [423.07 ms 423.46 ms 423.85 ms] - -Union MLE2PP + XxHash64 - time: [444.82 ms 444.90 ms 444.97 ms] - -Union MLE2PP + WyHash - time: [445.47 ms 445.54 ms 445.60 ms] - -Union MLE2PP + XxHash64 - time: [439.95 ms 440.01 ms 440.07 ms] - -Union MLE2PP + WyHash - time: [438.72 ms 438.81 ms 438.90 ms] - -Union MLE2PP + XxHash64 - time: [414.40 ms 415.53 ms 416.67 ms] - -Union MLE2PP + WyHash - time: [418.32 ms 418.38 ms 418.44 ms] - -Union MLE2PP + XxHash64 - time: [402.58 ms 402.63 ms 402.69 ms] - -Union MLE2PP + WyHash - time: [403.13 ms 403.18 ms 403.22 ms] - -Union HybridMLE2LLB + XxHash64 - time: [400.58 ms 400.69 ms 400.79 ms] - -Union HybridMLE2LLB + WyHash - time: [400.69 ms 400.76 ms 400.82 ms] - -Union HybridMLE2LLB + XxHash64 - time: [371.13 ms 371.66 ms 372.17 ms] - -Union HybridMLE2LLB + WyHash - time: [372.10 ms 372.25 ms 372.41 ms] - -Union HybridMLE2LLB + XxHash64 - time: [410.48 ms 410.58 ms 410.71 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [410.51 ms 410.65 ms 410.78 ms] - -Union HybridMLE2LLB + XxHash64 - time: [370.36 ms 370.48 ms 370.62 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [369.88 ms 370.03 ms 370.17 ms] - -Union HybridMLE2LLB + XxHash64 - time: [378.79 ms 378.85 ms 378.92 ms] - -Union HybridMLE2LLB + WyHash - time: [378.10 ms 378.13 ms 378.16 ms] - -Union HybridMLE2LLB + XxHash64 - time: [352.46 ms 352.53 ms 352.59 ms] - -Union HybridMLE2LLB + WyHash - time: [352.21 ms 352.37 ms 352.55 ms] - -Union HybridMLE2PP + XxHash64 - time: [416.36 ms 416.52 ms 416.71 ms] - -Union HybridMLE2PP + WyHash - time: [416.54 ms 416.93 ms 417.32 ms] - -Union HybridMLE2PP + XxHash64 - time: [370.17 ms 370.28 ms 370.38 ms] - -Union HybridMLE2PP + WyHash - time: [369.96 ms 370.06 ms 370.16 ms] - -Union HybridMLE2PP + XxHash64 - time: [397.67 ms 397.75 ms 397.84 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [398.18 ms 398.26 ms 398.36 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [385.78 ms 385.82 ms 385.86 ms] - -Union HybridMLE2PP + WyHash - time: [383.87 ms 383.90 ms 383.93 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [368.84 ms 370.32 ms 371.99 ms] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union HybridMLE2PP + WyHash - time: [357.85 ms 361.11 ms 364.67 ms] - -Union HybridMLE2PP + XxHash64 - time: [336.85 ms 337.73 ms 338.52 ms] - -Union HybridMLE2PP + WyHash - time: [333.26 ms 333.41 ms 333.58 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union Tabac + XxHash64 - time: [324.91 ms 325.22 ms 325.53 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union TabacPP + XxHash64 - time: [1.3259 s 1.3267 s 1.3276 s] - -Union SA + XxHash64 - time: [101.55 ms 101.77 ms 102.06 ms] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) high mild - 2 (4.00%) high severe - -Union CF + WyHash - time: [304.93 ms 305.47 ms 306.16 ms] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Union CF + XxHash64 - time: [309.32 ms 309.46 ms 309.60 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union FrankPP + SipHasher13 - time: [216.31 ms 216.39 ms 216.48 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SM time: [146.69 ms 146.72 ms 146.78 ms] - -Union SHLL - time: [152.70 ms 152.92 ms 153.39 ms] - -Union LLB + XxHash64 - time: [147.43 ms 147.49 ms 147.55 ms] -Found 4 outliers among 50 measurements (8.00%) - 3 (6.00%) high mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [147.42 ms 147.45 ms 147.49 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Union LLB + XxHash64 - time: [149.74 ms 149.77 ms 149.81 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union LLB + WyHash - time: [149.66 ms 149.69 ms 149.73 ms] - -Union LLB + XxHash64 - time: [146.35 ms 146.36 ms 146.37 ms] -Found 3 outliers among 50 measurements (6.00%) - 1 (2.00%) low mild - 2 (4.00%) high mild - -Union LLB + WyHash - time: [146.37 ms 146.38 ms 146.39 ms] - -Union LLB + XxHash64 - time: [155.33 ms 155.35 ms 155.37 ms] - -Union LLB + WyHash - time: [155.37 ms 155.39 ms 155.41 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + XxHash64 - time: [234.41 ms 234.43 ms 234.46 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union LLB + WyHash - time: [234.39 ms 234.42 ms 234.44 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + XxHash64 - time: [222.90 ms 222.93 ms 222.96 ms] - -Union LLB + WyHash - time: [222.96 ms 223.00 ms 223.05 ms] - -Union PP + XxHash64 - time: [147.50 ms 147.54 ms 147.58 ms] - -Union PP + WyHash - time: [147.36 ms 147.37 ms 147.39 ms] - -Union PP + XxHash64 - time: [149.58 ms 149.59 ms 149.61 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + WyHash - time: [149.59 ms 149.61 ms 149.64 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union PP + XxHash64 - time: [146.10 ms 146.12 ms 146.13 ms] - -Union PP + WyHash - time: [146.03 ms 146.05 ms 146.06 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union PP + XxHash64 - time: [155.42 ms 155.44 ms 155.47 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union PP + WyHash - time: [155.29 ms 155.33 ms 155.36 ms] - -Union PP + XxHash64 - time: [234.34 ms 234.37 ms 234.40 ms] - -Union PP + WyHash - time: [234.32 ms 234.35 ms 234.38 ms] - -Union PP + XxHash64 - time: [222.85 ms 222.87 ms 222.90 ms] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) low mild - 3 (6.00%) high mild - 1 (2.00%) high severe - -Union PP + WyHash - time: [222.88 ms 222.90 ms 222.93 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [140.79 ms 140.97 ms 141.16 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Union HybridLLB + WyHash - time: [141.55 ms 141.83 ms 142.10 ms] - -Union HybridLLB + XxHash64 - time: [146.94 ms 147.92 ms 148.92 ms] - -Union HybridLLB + WyHash - time: [145.69 ms 146.05 ms 146.48 ms] -Found 6 outliers among 50 measurements (12.00%) - 1 (2.00%) high mild - 5 (10.00%) high severe - -Union HybridLLB + XxHash64 - time: [141.42 ms 141.56 ms 141.69 ms] - -Union HybridLLB + WyHash - time: [140.89 ms 140.99 ms 141.09 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high mild - -Union HybridLLB + XxHash64 - time: [145.93 ms 146.03 ms 146.14 ms] -Found 7 outliers among 50 measurements (14.00%) - 4 (8.00%) high mild - 3 (6.00%) high severe - -Union HybridLLB + WyHash - time: [146.10 ms 146.20 ms 146.31 ms] - -Union HybridLLB + XxHash64 - time: [213.89 ms 213.95 ms 214.01 ms] -Found 8 outliers among 50 measurements (16.00%) - 7 (14.00%) low mild - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [213.91 ms 213.98 ms 214.05 ms] - -Union HybridLLB + XxHash64 - time: [208.59 ms 212.44 ms 217.47 ms] -Found 5 outliers among 50 measurements (10.00%) - 5 (10.00%) high severe - -Union HybridLLB + WyHash - time: [209.68 ms 215.55 ms 222.92 ms] -Found 6 outliers among 50 measurements (12.00%) - 6 (12.00%) high severe - -Union HybridPP + XxHash64 - time: [140.66 ms 140.71 ms 140.75 ms] - -Union HybridPP + WyHash - time: [140.04 ms 140.85 ms 142.20 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [144.75 ms 144.80 ms 144.85 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + WyHash - time: [145.65 ms 145.69 ms 145.74 ms] - -Union HybridPP + XxHash64 - time: [139.90 ms 139.96 ms 140.01 ms] - -Union HybridPP + WyHash - time: [140.41 ms 140.44 ms 140.47 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [146.00 ms 146.07 ms 146.14 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union HybridPP + WyHash - time: [145.62 ms 145.66 ms 145.70 ms] - -Union HybridPP + XxHash64 - time: [213.61 ms 213.64 ms 213.68 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + WyHash - time: [212.52 ms 212.56 ms 212.60 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridPP + XxHash64 - time: [207.27 ms 207.32 ms 207.36 ms] - -Union HybridPP + WyHash - time: [207.05 ms 207.08 ms 207.10 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union MLE2LLB + XxHash64 - time: [767.70 ms 767.74 ms 767.77 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [766.58 ms 766.64 ms 766.71 ms] - -Union MLE2LLB + XxHash64 - time: [747.30 ms 747.39 ms 747.46 ms] - -Union MLE2LLB + WyHash - time: [744.91 ms 744.95 ms 744.99 ms] - -Union MLE2LLB + XxHash64 - time: [759.69 ms 759.82 ms 759.98 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [758.32 ms 758.37 ms 758.42 ms] - -Union MLE2LLB + XxHash64 - time: [786.10 ms 786.16 ms 786.22 ms] - -Union MLE2LLB + WyHash - time: [784.81 ms 784.93 ms 785.05 ms] - -Union MLE2LLB + XxHash64 - time: [736.49 ms 736.59 ms 736.69 ms] - -Union MLE2LLB + WyHash - time: [735.28 ms 735.32 ms 735.36 ms] - -Union MLE2LLB + XxHash64 - time: [722.43 ms 722.49 ms 722.56 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [721.45 ms 721.51 ms 721.57 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + XxHash64 - time: [772.55 ms 772.63 ms 772.71 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [771.53 ms 771.60 ms 771.67 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2PP + XxHash64 - time: [745.10 ms 745.17 ms 745.23 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [742.31 ms 742.39 ms 742.48 ms] - -Union MLE2PP + XxHash64 - time: [770.04 ms 770.08 ms 770.13 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [767.99 ms 768.02 ms 768.06 ms] - -Union MLE2PP + XxHash64 - time: [766.37 ms 766.43 ms 766.48 ms] - -Union MLE2PP + WyHash - time: [764.92 ms 765.11 ms 765.32 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [735.96 ms 735.99 ms 736.03 ms] - -Union MLE2PP + WyHash - time: [734.78 ms 734.83 ms 734.89 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [709.42 ms 709.82 ms 710.25 ms] - -Union MLE2PP + WyHash - time: [690.26 ms 692.45 ms 694.94 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [564.82 ms 565.06 ms 565.30 ms] - -Union HybridMLE2LLB + WyHash - time: [563.51 ms 563.88 ms 564.30 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [511.43 ms 511.72 ms 512.01 ms] - -Union HybridMLE2LLB + WyHash - time: [508.96 ms 509.26 ms 509.57 ms] - -Union HybridMLE2LLB + XxHash64 - time: [558.42 ms 559.12 ms 560.13 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [557.57 ms 558.02 ms 558.60 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [544.68 ms 545.17 ms 545.66 ms] - -Union HybridMLE2LLB + WyHash - time: [540.83 ms 540.98 ms 541.14 ms] - -Union HybridMLE2LLB + XxHash64 - time: [549.39 ms 550.70 ms 552.99 ms] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [548.86 ms 549.34 ms 549.85 ms] - -Union HybridMLE2LLB + XxHash64 - time: [497.40 ms 497.61 ms 497.86 ms] - -Union HybridMLE2LLB + WyHash - time: [495.99 ms 496.13 ms 496.31 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [567.62 ms 567.83 ms 568.11 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [567.90 ms 568.14 ms 568.39 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [507.94 ms 508.10 ms 508.27 ms] - -Union HybridMLE2PP + WyHash - time: [506.95 ms 507.13 ms 507.34 ms] - -Union HybridMLE2PP + XxHash64 - time: [568.08 ms 568.23 ms 568.39 ms] - -Union HybridMLE2PP + WyHash - time: [566.19 ms 566.81 ms 567.70 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [524.62 ms 524.84 ms 525.10 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [522.63 ms 522.82 ms 523.00 ms] - -Union HybridMLE2PP + XxHash64 - time: [548.44 ms 548.67 ms 548.92 ms] - -Union HybridMLE2PP + WyHash - time: [547.02 ms 547.19 ms 547.36 ms] - -Union HybridMLE2PP + XxHash64 - time: [496.57 ms 496.68 ms 496.79 ms] - -Union HybridMLE2PP + WyHash - time: [494.82 ms 495.09 ms 495.47 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union Tabac + XxHash64 - time: [580.75 ms 581.68 ms 583.28 ms] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union TabacPP + XxHash64 - time: [2.9448 s 2.9454 s 2.9461 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SA + XxHash64 - time: [214.70 ms 214.97 ms 215.30 ms] -Found 7 outliers among 50 measurements (14.00%) - 7 (14.00%) high severe - -Union CF + WyHash - time: [497.41 ms 497.71 ms 498.08 ms] -Found 5 outliers among 50 measurements (10.00%) - 1 (2.00%) high mild - 4 (8.00%) high severe - -Union CF + XxHash64 - time: [482.59 ms 482.95 ms 483.37 ms] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Union FrankPP + SipHasher13 - time: [304.86 ms 305.29 ms 305.93 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union SM time: [301.22 ms 304.92 ms 307.97 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union SHLL - time: [360.86 ms 367.75 ms 375.44 ms] - -Union LLB + XxHash64 - time: [294.71 ms 294.75 ms 294.79 ms] - -Union LLB + WyHash - time: [294.71 ms 294.87 ms 295.17 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union LLB + XxHash64 - time: [298.71 ms 298.74 ms 298.76 ms] - -Union LLB + WyHash - time: [298.65 ms 298.68 ms 298.71 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union LLB + XxHash64 - time: [291.49 ms 291.53 ms 291.56 ms] - -Union LLB + WyHash - time: [291.52 ms 291.55 ms 291.59 ms] -Found 3 outliers among 50 measurements (6.00%) - 3 (6.00%) high mild - -Union LLB + XxHash64 - time: [310.15 ms 310.21 ms 310.28 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [310.15 ms 310.20 ms 310.24 ms] - -Union LLB + XxHash64 - time: [468.23 ms 468.28 ms 468.33 ms] - -Union LLB + WyHash - time: [468.18 ms 468.23 ms 468.28 ms] - -Union LLB + XxHash64 - time: [445.23 ms 445.48 ms 445.92 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) low mild - 1 (2.00%) high severe - -Union LLB + WyHash - time: [445.11 ms 445.14 ms 445.16 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) low mild - -Union PP + XxHash64 - time: [294.68 ms 294.75 ms 294.82 ms] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Union PP + WyHash - time: [294.67 ms 294.71 ms 294.74 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union PP + XxHash64 - time: [298.49 ms 298.54 ms 298.60 ms] - -Union PP + WyHash - time: [298.52 ms 298.56 ms 298.60 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [291.42 ms 291.45 ms 291.49 ms] - -Union PP + WyHash - time: [291.61 ms 291.75 ms 291.89 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [310.00 ms 310.02 ms 310.04 ms] -Found 5 outliers among 50 measurements (10.00%) - 3 (6.00%) low mild - 2 (4.00%) high mild - -Union PP + WyHash - time: [310.01 ms 310.04 ms 310.07 ms] - -Union PP + XxHash64 - time: [468.04 ms 468.11 ms 468.18 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union PP + WyHash - time: [467.92 ms 467.96 ms 468.00 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union PP + XxHash64 - time: [444.94 ms 445.09 ms 445.36 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union PP + WyHash - time: [444.96 ms 444.99 ms 445.02 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [252.46 ms 252.68 ms 252.89 ms] - -Union HybridLLB + WyHash - time: [255.42 ms 256.58 ms 258.18 ms] -Found 5 outliers among 50 measurements (10.00%) - 4 (8.00%) high mild - 1 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [237.22 ms 237.37 ms 237.53 ms] - -Union HybridLLB + WyHash - time: [230.04 ms 230.27 ms 230.49 ms] - -Union HybridLLB + XxHash64 - time: [261.02 ms 261.15 ms 261.29 ms] -Found 2 outliers among 50 measurements (4.00%) - 2 (4.00%) high mild - -Union HybridLLB + WyHash - time: [261.45 ms 261.79 ms 262.14 ms] - -Union HybridLLB + XxHash64 - time: [229.33 ms 229.43 ms 229.55 ms] -Found 3 outliers among 50 measurements (6.00%) - 2 (4.00%) high mild - 1 (2.00%) high severe - -Union HybridLLB + WyHash - time: [231.96 ms 232.07 ms 232.17 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) low mild - -Union HybridLLB + XxHash64 - time: [372.05 ms 372.25 ms 372.47 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridLLB + WyHash - time: [368.51 ms 368.63 ms 368.79 ms] -Found 4 outliers among 50 measurements (8.00%) - 1 (2.00%) high mild - 3 (6.00%) high severe - -Union HybridLLB + XxHash64 - time: [301.60 ms 301.73 ms 301.86 ms] - -Union HybridLLB + WyHash - time: [302.37 ms 302.83 ms 303.32 ms] - -Union HybridPP + XxHash64 - time: [250.74 ms 250.86 ms 250.99 ms] -Found 4 outliers among 50 measurements (8.00%) - 2 (4.00%) high mild - 2 (4.00%) high severe - -Union HybridPP + WyHash - time: [239.18 ms 239.39 ms 239.61 ms] - -Union HybridPP + XxHash64 - time: [217.72 ms 217.81 ms 217.91 ms] - -Union HybridPP + WyHash - time: [219.80 ms 219.96 ms 220.16 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [247.44 ms 247.68 ms 247.93 ms] - -Union HybridPP + WyHash - time: [246.54 ms 246.97 ms 247.71 ms] -Found 2 outliers among 50 measurements (4.00%) - 1 (2.00%) high mild - 1 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [219.79 ms 219.96 ms 220.17 ms] -Found 4 outliers among 50 measurements (8.00%) - 4 (8.00%) high severe - -Union HybridPP + WyHash - time: [218.94 ms 219.01 ms 219.09 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [352.88 ms 352.99 ms 353.10 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + WyHash - time: [348.62 ms 348.71 ms 348.80 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [287.40 ms 287.52 ms 287.63 ms] - -Union HybridPP + WyHash - time: [287.36 ms 287.47 ms 287.58 ms] - -Union MLE2LLB + XxHash64 - time: [1.3815 s 1.3820 s 1.3827 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [1.3803 s 1.3821 s 1.3854 s] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [1.3722 s 1.3725 s 1.3728 s] - -Union MLE2LLB + WyHash - time: [1.3701 s 1.3704 s 1.3707 s] - -Union MLE2LLB + XxHash64 - time: [1.3906 s 1.3907 s 1.3909 s] - -Union MLE2LLB + WyHash - time: [1.3902 s 1.3910 s 1.3923 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [1.3692 s 1.3697 s 1.3702 s] - -Union MLE2LLB + WyHash - time: [1.3680 s 1.3684 s 1.3691 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [1.3626 s 1.3631 s 1.3636 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [1.3615 s 1.3753 s 1.3946 s] -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2LLB + XxHash64 - time: [1.3891 s 1.3974 s 1.4066 s] - -Union MLE2LLB + WyHash - time: [1.3598 s 1.3601 s 1.3605 s] -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [1.4258 s 1.4263 s 1.4268 s] - -Union MLE2PP + WyHash - time: [1.4246 s 1.4248 s 1.4249 s] - -Union MLE2PP + XxHash64 - time: [1.3739 s 1.3741 s 1.3742 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [1.3691 s 1.3692 s 1.3693 s] - -Union MLE2PP + XxHash64 - time: [1.3775 s 1.3782 s 1.3793 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + WyHash - time: [1.3768 s 1.3771 s 1.3775 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [1.3945 s 1.3946 s 1.3947 s] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [1.3931 s 1.3933 s 1.3934 s] -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union MLE2PP + XxHash64 - time: [1.3616 s 1.3617 s 1.3617 s] - -Union MLE2PP + WyHash - time: [1.3607 s 1.3609 s 1.3610 s] - -Union MLE2PP + XxHash64 - time: [1.3569 s 1.3570 s 1.3571 s] - -Union MLE2PP + WyHash - time: [1.3561 s 1.3563 s 1.3564 s] - -Union HybridMLE2LLB + XxHash64 - time: [747.28 ms 747.40 ms 747.53 ms] - -Union HybridMLE2LLB + WyHash - time: [742.14 ms 742.50 ms 743.11 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [587.61 ms 587.76 ms 587.89 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [589.27 ms 590.28 ms 592.23 ms] -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [762.23 ms 762.38 ms 762.52 ms] - -Union HybridMLE2LLB + WyHash - time: [761.16 ms 761.24 ms 761.33 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [575.36 ms 575.44 ms 575.52 ms] - -Union HybridMLE2LLB + WyHash - time: [578.70 ms 578.80 ms 578.90 ms] - -Union HybridMLE2LLB + XxHash64 - time: [788.30 ms 788.38 ms 788.46 ms] - -Union HybridMLE2LLB + WyHash - time: [788.99 ms 789.24 ms 789.49 ms] - -Union HybridMLE2LLB + XxHash64 - time: [593.56 ms 593.64 ms 593.73 ms] - -Union HybridMLE2LLB + WyHash - time: [588.67 ms 588.78 ms 588.88 ms] - -Union HybridMLE2PP + XxHash64 - time: [779.42 ms 779.53 ms 779.64 ms] - -Union HybridMLE2PP + WyHash - time: [776.88 ms 776.98 ms 777.09 ms] - -Union HybridMLE2PP + XxHash64 - time: [588.30 ms 588.38 ms 588.46 ms] - -Union HybridMLE2PP + WyHash - time: [581.27 ms 581.36 ms 581.47 ms] - -Union HybridMLE2PP + XxHash64 - time: [750.97 ms 751.62 ms 752.74 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [749.98 ms 750.13 ms 750.30 ms] - -Union HybridMLE2PP + XxHash64 - time: [597.93 ms 598.08 ms 598.25 ms] -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [597.94 ms 598.40 ms 599.07 ms] -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 2 (20.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [789.54 ms 789.81 ms 790.08 ms] - -Union HybridMLE2PP + WyHash - time: [789.52 ms 789.67 ms 789.83 ms] - -Union HybridMLE2PP + XxHash64 - time: [592.59 ms 592.68 ms 592.80 ms] - -Union HybridMLE2PP + WyHash - time: [590.33 ms 590.43 ms 590.54 ms] - -Union Tabac + XxHash64 - time: [1.1621 s 1.1622 s 1.1623 s] - -Union TabacPP + XxHash64 - time: [2.9117 s 2.9119 s 2.9122 s] - -Union SA + XxHash64 - time: [408.11 ms 408.15 ms 408.19 ms] - -Union CF + WyHash - time: [835.80 ms 835.85 ms 835.89 ms] -Found 1 outliers among 50 measurements (2.00%) - 1 (2.00%) high mild - -Union CF + XxHash64 - time: [797.97 ms 798.01 ms 798.06 ms] - -Union FrankPP + SipHasher13 - time: [442.00 ms 442.04 ms 442.08 ms] - -Union SM time: [596.03 ms 596.13 ms 596.22 ms] - -Union SHLL - time: [741.88 ms 741.98 ms 742.08 ms] - -Union LLB + XxHash64 - time: [33.336 µs 33.370 µs 33.419 µs] - change: [-0.2709% -0.2021% -0.1214%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 15 outliers among 100 measurements (15.00%) - 7 (7.00%) high mild - 8 (8.00%) high severe - -Union LLB + WyHash - time: [33.450 µs 33.502 µs 33.566 µs] - change: [+0.1706% +0.3721% +0.5917%] (p = 0.00 < 0.05) - Change within noise threshold. -Found 12 outliers among 100 measurements (12.00%) - 12 (12.00%) high mild - -Union LLB + XxHash64 - time: [27.089 µs 27.136 µs 27.187 µs] - change: [-80.606% -80.217% -79.906%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 4 (4.00%) high mild - 8 (8.00%) high severe - -Union LLB + WyHash - time: [27.058 µs 27.092 µs 27.132 µs] - change: [-80.739% -80.338% -80.011%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [26.044 µs 26.077 µs 26.114 µs] - change: [-80.367% -80.118% -79.941%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 6 (6.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [26.230 µs 26.286 µs 26.347 µs] - change: [-80.198% -79.920% -79.739%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union LLB + XxHash64 - time: [20.735 µs 20.796 µs 20.863 µs] - change: [-79.740% -79.532% -79.383%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union LLB + WyHash - time: [20.862 µs 20.940 µs 21.015 µs] - change: [-79.455% -79.397% -79.339%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [30.720 µs 30.748 µs 30.779 µs] - change: [-78.294% -78.270% -78.244%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [31.362 µs 31.365 µs 31.368 µs] - change: [-77.885% -77.859% -77.837%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - -Union LLB + XxHash64 - time: [29.491 µs 29.493 µs 29.496 µs] - change: [-78.135% -78.111% -78.092%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [29.495 µs 29.498 µs 29.501 µs] - change: [-78.393% -78.305% -78.224%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union PP + XxHash64 - time: [34.532 µs 34.535 µs 34.539 µs] - change: [-79.250% -79.242% -79.236%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [34.656 µs 34.660 µs 34.663 µs] - change: [-79.227% -79.199% -79.180%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [27.949 µs 27.953 µs 27.957 µs] - change: [-79.721% -79.440% -79.234%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) low mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [28.148 µs 28.154 µs 28.160 µs] - change: [-79.298% -79.082% -78.942%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [26.037 µs 26.041 µs 26.045 µs] - change: [-79.228% -79.043% -78.919%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [26.040 µs 26.042 µs 26.044 µs] - change: [-79.424% -79.148% -78.968%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [20.303 µs 20.305 µs 20.308 µs] - change: [-79.507% -79.289% -79.147%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 3 (3.00%) high mild - -Union PP + WyHash - time: [20.302 µs 20.304 µs 20.306 µs] - change: [-79.524% -79.436% -79.355%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [35.440 µs 35.447 µs 35.454 µs] - change: [-74.471% -74.181% -73.996%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union PP + WyHash - time: [35.152 µs 35.158 µs 35.165 µs] - change: [-74.964% -74.564% -74.263%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union PP + XxHash64 - time: [33.686 µs 33.691 µs 33.697 µs] - change: [-74.857% -74.847% -74.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - -Union PP + WyHash - time: [33.363 µs 33.367 µs 33.371 µs] - change: [-75.098% -75.091% -75.085%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - -Union HybridLLB + XxHash64 - time: [40.264 µs 40.267 µs 40.271 µs] - change: [-78.843% -78.836% -78.831%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [40.762 µs 40.766 µs 40.770 µs] - change: [-79.043% -78.840% -78.722%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [33.949 µs 33.952 µs 33.955 µs] - change: [-78.918% -78.897% -78.882%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [33.894 µs 33.897 µs 33.901 µs] - change: [-78.930% -78.925% -78.919%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 5 (5.00%) low mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [31.877 µs 31.880 µs 31.884 µs] - change: [-78.893% -78.887% -78.882%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [31.799 µs 31.802 µs 31.805 µs] - change: [-78.942% -78.932% -78.924%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 3 (3.00%) low mild - 5 (5.00%) high mild - -Union HybridLLB + XxHash64 - time: [24.281 µs 24.283 µs 24.285 µs] - change: [-79.051% -79.019% -78.995%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) low mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [24.479 µs 24.480 µs 24.482 µs] - change: [-78.641% -78.625% -78.610%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 3 (3.00%) high mild - -Union HybridLLB + XxHash64 - time: [39.337 µs 39.343 µs 39.349 µs] - change: [-78.820% -78.812% -78.805%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [39.321 µs 39.329 µs 39.336 µs] - change: [-78.866% -78.842% -78.826%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [36.172 µs 36.181 µs 36.190 µs] - change: [-78.831% -78.819% -78.808%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [36.192 µs 36.199 µs 36.205 µs] - change: [-78.797% -78.790% -78.782%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [39.634 µs 39.638 µs 39.642 µs] - change: [-78.805% -78.800% -78.795%] (p = 0.00 < 0.05) - Performance has improved. -Found 14 outliers among 100 measurements (14.00%) - 1 (1.00%) low severe - 7 (7.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [39.623 µs 39.627 µs 39.631 µs] - change: [-78.774% -78.754% -78.737%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [33.010 µs 33.013 µs 33.016 µs] - change: [-78.729% -78.719% -78.710%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [33.499 µs 33.505 µs 33.511 µs] - change: [-78.443% -78.417% -78.396%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - -Union HybridPP + XxHash64 - time: [30.558 µs 30.560 µs 30.563 µs] - change: [-78.718% -78.634% -78.563%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [30.519 µs 30.521 µs 30.524 µs] - change: [-78.440% -78.428% -78.417%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [23.694 µs 23.696 µs 23.698 µs] - change: [-77.931% -77.916% -77.900%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low severe - 2 (2.00%) low mild - 4 (4.00%) high mild - -Union HybridPP + WyHash - time: [23.568 µs 23.570 µs 23.572 µs] - change: [-78.137% -78.132% -78.127%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [38.561 µs 38.567 µs 38.572 µs] - change: [-78.837% -78.783% -78.752%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [38.582 µs 38.591 µs 38.600 µs] - change: [-78.766% -78.755% -78.743%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [36.206 µs 36.208 µs 36.210 µs] - change: [-78.657% -78.633% -78.618%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 3 (3.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [36.215 µs 36.218 µs 36.221 µs] - change: [-78.563% -78.554% -78.546%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.3009 ms 3.3015 ms 3.3019 ms] - change: [-78.678% -78.658% -78.642%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2LLB + WyHash - time: [3.2638 ms 3.2648 ms 3.2656 ms] - change: [-78.715% -78.708% -78.700%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.2452 ms 3.2454 ms 3.2455 ms] - change: [-78.755% -78.750% -78.745%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2LLB + WyHash - time: [3.2525 ms 3.2652 ms 3.2707 ms] - change: [-78.703% -78.671% -78.635%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.2761 ms 3.2768 ms 3.2772 ms] - change: [-78.957% -78.945% -78.934%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [3.2574 ms 3.2581 ms 3.2585 ms] - change: [-79.066% -79.059% -79.053%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.2685 ms 3.2704 ms 3.2711 ms] - change: [-79.010% -78.975% -78.941%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.2657 ms 3.2684 ms 3.2694 ms] - change: [-79.069% -79.027% -78.987%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.2456 ms 3.2460 ms 3.2464 ms] - change: [-79.022% -79.015% -79.008%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.2608 ms 3.2614 ms 3.2618 ms] - change: [-78.991% -78.963% -78.941%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union MLE2LLB + XxHash64 - time: [3.2547 ms 3.2550 ms 3.2553 ms] - change: [-78.953% -78.948% -78.942%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.2380 ms 3.2386 ms 3.2393 ms] - change: [-79.073% -79.065% -79.058%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [3.3001 ms 3.3034 ms 3.3047 ms] - change: [-78.577% -78.541% -78.503%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.2827 ms 3.2831 ms 3.2833 ms] - change: [-78.617% -78.612% -78.607%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.2853 ms 3.2860 ms 3.2865 ms] - change: [-78.489% -78.484% -78.479%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.2597 ms 3.2629 ms 3.2641 ms] - change: [-78.744% -78.705% -78.670%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.2542 ms 3.2631 ms 3.2685 ms] - change: [-78.946% -78.920% -78.883%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + WyHash - time: [3.2682 ms 3.2694 ms 3.2702 ms] - change: [-78.830% -78.821% -78.812%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.2454 ms 3.2456 ms 3.2457 ms] - change: [-78.958% -78.946% -78.936%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high severe - -Union MLE2PP + WyHash - time: [3.2499 ms 3.2671 ms 3.2869 ms] - change: [-78.917% -78.866% -78.798%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + XxHash64 - time: [3.2242 ms 3.2353 ms 3.2399 ms] - change: [-79.241% -79.214% -79.178%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.2396 ms 3.2503 ms 3.2552 ms] - change: [-79.140% -79.111% -79.078%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.2484 ms 3.2494 ms 3.2499 ms] - change: [-79.085% -79.079% -79.073%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.2295 ms 3.2384 ms 3.2436 ms] - change: [-79.214% -79.189% -79.156%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.2519 ms 3.2592 ms 3.2648 ms] - change: [-78.830% -78.807% -78.780%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.2461 ms 3.2580 ms 3.2639 ms] - change: [-78.899% -78.861% -78.817%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.2791 ms 3.2880 ms 3.2941 ms] - change: [-79.067% -78.769% -78.565%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [3.2652 ms 3.2655 ms 3.2658 ms] - change: [-78.654% -78.644% -78.635%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.2525 ms 3.2528 ms 3.2530 ms] - change: [-78.990% -78.980% -78.972%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low severe - -Union HybridMLE2LLB + WyHash - time: [3.2636 ms 3.2639 ms 3.2642 ms] - change: [-78.851% -78.844% -78.837%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.2572 ms 3.2575 ms 3.2579 ms] - change: [-78.924% -78.919% -78.914%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.2549 ms 3.2553 ms 3.2558 ms] - change: [-78.906% -78.900% -78.894%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.2647 ms 3.2652 ms 3.2659 ms] - change: [-78.951% -78.939% -78.929%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.2514 ms 3.2518 ms 3.2522 ms] - change: [-78.979% -78.973% -78.967%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.2531 ms 3.2535 ms 3.2538 ms] - change: [-79.444% -79.153% -78.969%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [3.2487 ms 3.2495 ms 3.2505 ms] - change: [-78.955% -78.946% -78.938%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.2779 ms 3.2784 ms 3.2794 ms] - change: [-78.699% -78.689% -78.679%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [3.2889 ms 3.2896 ms 3.2899 ms] - change: [-78.613% -78.605% -78.597%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.2589 ms 3.2661 ms 3.2694 ms] - change: [-78.732% -78.699% -78.661%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.2663 ms 3.2682 ms 3.2691 ms] - change: [-78.814% -78.777% -78.744%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.2579 ms 3.2583 ms 3.2586 ms] - change: [-78.963% -78.955% -78.947%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.2828 ms 3.2831 ms 3.2834 ms] - change: [-78.771% -78.764% -78.757%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [3.2608 ms 3.2611 ms 3.2615 ms] - change: [-78.884% -78.879% -78.874%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2PP + WyHash - time: [3.2766 ms 3.2769 ms 3.2772 ms] - change: [-78.889% -78.883% -78.877%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [3.2435 ms 3.2512 ms 3.2544 ms] - change: [-79.067% -79.031% -78.993%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.2574 ms 3.2617 ms 3.2634 ms] - change: [-78.996% -78.952% -78.921%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.2582 ms 3.2586 ms 3.2588 ms] - change: [-78.891% -78.877% -78.867%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union HybridMLE2PP + WyHash - time: [3.2407 ms 3.2409 ms 3.2411 ms] - change: [-79.027% -79.022% -79.017%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union Tabac + XxHash64 - time: [95.579 µs 95.595 µs 95.609 µs] - change: [-82.106% -82.090% -82.076%] (p = 0.00 < 0.05) - Performance has improved. - -Union TabacPP + XxHash64 - time: [228.74 µs 228.79 µs 228.84 µs] - change: [-80.323% -80.314% -80.307%] (p = 0.00 < 0.05) - Performance has improved. - -Union SA + XxHash64 - time: [63.533 µs 63.542 µs 63.551 µs] - change: [-79.103% -79.094% -79.086%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union CF + WyHash - time: [208.64 µs 208.75 µs 208.88 µs] - change: [-80.734% -80.724% -80.714%] (p = 0.00 < 0.05) - Performance has improved. -Found 19 outliers among 100 measurements (19.00%) - 17 (17.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union CF + XxHash64 - time: [211.14 µs 211.18 µs 211.23 µs] - change: [-80.438% -80.425% -80.415%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - -Union FrankPP + SipHasher13 - time: [478.72 µs 478.78 µs 478.85 µs] - change: [-78.795% -78.783% -78.773%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 2 (10.00%) high mild - -Union SM time: [719.26 µs 719.48 µs 719.61 µs] - change: [-78.605% -78.576% -78.551%] (p = 0.00 < 0.05) - Performance has improved. - -Union SHLL time: [247.69 µs 247.70 µs 247.73 µs] - change: [-78.265% -78.254% -78.247%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [60.363 µs 60.400 µs 60.448 µs] - change: [-80.038% -80.026% -80.015%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 6 (6.00%) high mild - 7 (7.00%) high severe - -Union LLB + WyHash - time: [60.527 µs 60.574 µs 60.631 µs] - change: [-79.906% -79.871% -79.833%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 5 (5.00%) high mild - 10 (10.00%) high severe - -Union LLB + XxHash64 - time: [46.752 µs 46.873 µs 47.005 µs] - change: [-80.305% -80.274% -80.235%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union LLB + WyHash - time: [46.717 µs 46.781 µs 46.855 µs] - change: [-80.322% -80.294% -80.265%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) high mild - 4 (4.00%) high severe - -Union LLB + XxHash64 - time: [59.618 µs 59.737 µs 59.855 µs] - change: [-80.031% -79.990% -79.939%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [60.184 µs 60.278 µs 60.380 µs] - change: [-79.803% -79.753% -79.705%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union LLB + XxHash64 - time: [46.942 µs 46.992 µs 47.047 µs] - change: [-79.059% -79.026% -78.987%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union LLB + WyHash - time: [47.526 µs 47.623 µs 47.697 µs] - change: [-78.959% -78.919% -78.872%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [62.647 µs 62.649 µs 62.652 µs] - change: [-78.896% -78.889% -78.881%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 2 (2.00%) high severe - -Union LLB + WyHash - time: [62.658 µs 62.660 µs 62.662 µs] - change: [-79.572% -79.242% -78.988%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - -Union LLB + XxHash64 - time: [60.311 µs 60.314 µs 60.319 µs] - change: [-78.460% -78.441% -78.424%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union LLB + WyHash - time: [60.310 µs 60.312 µs 60.314 µs] - change: [-78.381% -78.377% -78.374%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [62.801 µs 62.806 µs 62.812 µs] - change: [-78.979% -78.961% -78.948%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [62.832 µs 62.836 µs 62.839 µs] - change: [-78.975% -78.962% -78.954%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 6 (6.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [49.069 µs 49.080 µs 49.090 µs] - change: [-79.321% -79.315% -79.309%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) low mild - -Union PP + WyHash - time: [49.204 µs 49.216 µs 49.227 µs] - change: [-79.284% -79.278% -79.271%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) low mild - -Union PP + XxHash64 - time: [61.607 µs 61.617 µs 61.627 µs] - change: [-78.896% -78.875% -78.858%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Union PP + WyHash - time: [61.664 µs 61.671 µs 61.678 µs] - change: [-78.854% -78.846% -78.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [46.504 µs 46.506 µs 46.507 µs] - change: [-79.285% -79.278% -79.272%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 5 (5.00%) high severe - -Union PP + WyHash - time: [46.531 µs 46.533 µs 46.535 µs] - change: [-79.307% -79.301% -79.295%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [60.964 µs 60.966 µs 60.969 µs] - change: [-78.962% -78.940% -78.923%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [60.979 µs 60.982 µs 60.985 µs] - change: [-78.917% -78.912% -78.907%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union PP + XxHash64 - time: [59.632 µs 59.635 µs 59.639 µs] - change: [-78.672% -78.667% -78.663%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [59.665 µs 59.675 µs 59.691 µs] - change: [-78.667% -78.661% -78.655%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [69.096 µs 69.102 µs 69.108 µs] - change: [-78.970% -78.964% -78.958%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [69.135 µs 69.139 µs 69.142 µs] - change: [-78.943% -78.933% -78.926%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [55.441 µs 55.447 µs 55.453 µs] - change: [-78.902% -78.897% -78.892%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union HybridLLB + WyHash - time: [55.553 µs 55.561 µs 55.569 µs] - change: [-78.892% -78.885% -78.878%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [68.512 µs 68.516 µs 68.519 µs] - change: [-78.939% -78.930% -78.923%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 4 (4.00%) high mild - -Union HybridLLB + WyHash - time: [68.597 µs 68.601 µs 68.606 µs] - change: [-78.872% -78.867% -78.862%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [52.980 µs 52.990 µs 53.000 µs] - change: [-78.985% -78.978% -78.971%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [52.269 µs 52.280 µs 52.290 µs] - change: [-79.335% -79.323% -79.314%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [70.552 µs 70.557 µs 70.562 µs] - change: [-77.958% -77.949% -77.942%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) low mild - -Union HybridLLB + WyHash - time: [70.893 µs 70.921 µs 70.945 µs] - change: [-77.925% -77.901% -77.879%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low severe - 3 (3.00%) low mild - -Union HybridLLB + XxHash64 - time: [65.517 µs 65.520 µs 65.523 µs] - change: [-78.882% -78.874% -78.868%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [65.518 µs 65.522 µs 65.526 µs] - change: [-78.942% -78.865% -78.823%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [67.455 µs 67.458 µs 67.461 µs] - change: [-79.112% -79.099% -79.089%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + WyHash - time: [67.351 µs 67.356 µs 67.361 µs] - change: [-79.145% -79.141% -79.137%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [53.735 µs 53.742 µs 53.749 µs] - change: [-79.251% -79.233% -79.220%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridPP + WyHash - time: [53.719 µs 53.724 µs 53.730 µs] - change: [-79.217% -79.183% -79.158%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [65.962 µs 65.965 µs 65.968 µs] - change: [-79.069% -79.051% -79.037%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [66.720 µs 66.727 µs 66.737 µs] - change: [-78.900% -78.895% -78.891%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [51.289 µs 51.291 µs 51.293 µs] - change: [-78.994% -78.986% -78.979%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [50.555 µs 50.558 µs 50.561 µs] - change: [-79.258% -79.253% -79.248%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [65.572 µs 65.578 µs 65.583 µs] - change: [-78.915% -78.908% -78.903%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [65.634 µs 65.637 µs 65.639 µs] - change: [-78.937% -78.909% -78.893%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [62.847 µs 62.850 µs 62.852 µs] - change: [-80.710% -80.705% -80.701%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [62.838 µs 62.841 µs 62.843 µs] - change: [-80.718% -80.715% -80.712%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.3728 ms 3.3764 ms 3.3790 ms] - change: [-78.987% -78.968% -78.951%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.3803 ms 3.3839 ms 3.3887 ms] - change: [-78.847% -78.829% -78.813%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.3544 ms 3.3565 ms 3.3591 ms] - change: [-79.370% -79.099% -78.911%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [3.3532 ms 3.3582 ms 3.3623 ms] - change: [-78.910% -78.890% -78.864%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.4019 ms 3.4044 ms 3.4082 ms] - change: [-78.760% -78.744% -78.727%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.4028 ms 3.4062 ms 3.4079 ms] - change: [-78.774% -78.752% -78.732%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.3840 ms 3.3869 ms 3.3895 ms] - change: [-78.810% -78.791% -78.771%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.3805 ms 3.3870 ms 3.3900 ms] - change: [-78.820% -78.797% -78.773%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.4257 ms 3.4308 ms 3.4347 ms] - change: [-78.441% -78.419% -78.396%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.4308 ms 3.4340 ms 3.4390 ms] - change: [-78.379% -78.359% -78.341%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.4298 ms 3.4323 ms 3.4348 ms] - change: [-78.370% -78.351% -78.332%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.4263 ms 3.4282 ms 3.4309 ms] - change: [-78.401% -78.386% -78.369%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [3.3941 ms 3.3973 ms 3.4006 ms] - change: [-78.975% -78.956% -78.941%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union MLE2PP + WyHash - time: [3.3873 ms 3.3919 ms 3.3957 ms] - change: [-79.298% -79.024% -78.845%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.3913 ms 3.3952 ms 3.3992 ms] - change: [-78.663% -78.647% -78.631%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [3.3466 ms 3.4087 ms 3.5284 ms] - change: [-78.917% -78.679% -78.228%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [3.4630 ms 3.4668 ms 3.4713 ms] - change: [-78.396% -78.378% -78.363%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [3.4715 ms 3.5120 ms 3.5690 ms] - change: [-78.321% -78.144% -77.901%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + XxHash64 - time: [3.4653 ms 3.4700 ms 3.4734 ms] - change: [-78.361% -78.336% -78.310%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.4500 ms 3.4542 ms 3.4582 ms] - change: [-78.365% -78.343% -78.321%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.4306 ms 3.4352 ms 3.4379 ms] - change: [-78.458% -78.435% -78.410%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.4377 ms 3.4414 ms 3.4438 ms] - change: [-78.346% -78.327% -78.309%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.4497 ms 3.4529 ms 3.4561 ms] - change: [-78.218% -78.196% -78.173%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.4342 ms 3.4359 ms 3.4368 ms] - change: [-79.026% -78.744% -78.561%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.3951 ms 3.3966 ms 3.3982 ms] - change: [-78.767% -78.753% -78.739%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [3.3799 ms 3.3811 ms 3.3830 ms] - change: [-78.902% -78.894% -78.885%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.3592 ms 3.3597 ms 3.3602 ms] - change: [-78.842% -78.834% -78.825%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [3.3941 ms 3.3953 ms 3.3965 ms] - change: [-78.710% -78.700% -78.691%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.4800 ms 3.4811 ms 3.4817 ms] - change: [-78.373% -78.361% -78.350%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [3.4827 ms 3.4838 ms 3.4846 ms] - change: [-78.369% -78.360% -78.351%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.4599 ms 3.4612 ms 3.4627 ms] - change: [-78.397% -78.387% -78.378%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.4579 ms 3.4587 ms 3.4595 ms] - change: [-78.469% -78.449% -78.433%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.4540 ms 3.4552 ms 3.4565 ms] - change: [-78.281% -78.271% -78.260%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.4508 ms 3.4523 ms 3.4537 ms] - change: [-78.280% -78.269% -78.258%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.4418 ms 3.4440 ms 3.4473 ms] - change: [-78.297% -78.280% -78.264%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.4467 ms 3.4479 ms 3.4496 ms] - change: [-78.320% -78.306% -78.294%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.4085 ms 3.4096 ms 3.4104 ms] - change: [-78.749% -78.739% -78.729%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.4295 ms 3.4317 ms 3.4334 ms] - change: [-78.623% -78.611% -78.599%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.3625 ms 3.3638 ms 3.3651 ms] - change: [-78.901% -78.889% -78.877%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [3.3592 ms 3.3604 ms 3.3615 ms] - change: [-78.910% -78.884% -78.863%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.4758 ms 3.4768 ms 3.4781 ms] - change: [-78.199% -78.190% -78.180%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.4784 ms 3.4795 ms 3.4806 ms] - change: [-78.020% -78.009% -77.998%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.4718 ms 3.4727 ms 3.4740 ms] - change: [-77.992% -77.978% -77.966%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + WyHash - time: [3.4561 ms 3.4570 ms 3.4577 ms] - change: [-78.038% -78.032% -78.026%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.4520 ms 3.4529 ms 3.4540 ms] - change: [-78.262% -78.252% -78.242%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.4402 ms 3.4412 ms 3.4418 ms] - change: [-78.273% -78.262% -78.252%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.4493 ms 3.4500 ms 3.4507 ms] - change: [-78.487% -78.456% -78.434%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [3.4384 ms 3.4403 ms 3.4416 ms] - change: [-78.487% -78.474% -78.462%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [165.47 µs 165.51 µs 165.55 µs] - change: [-80.962% -80.950% -80.938%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) low mild - 1 (5.00%) high mild - -Union TabacPP + XxHash64 - time: [407.40 µs 407.49 µs 407.55 µs] - change: [-79.861% -79.822% -79.798%] (p = 0.00 < 0.05) - Performance has improved. - -Union SA + XxHash64 - time: [88.174 µs 88.194 µs 88.215 µs] - change: [-79.669% -79.658% -79.650%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high mild - -Union CF + WyHash - time: [382.80 µs 382.91 µs 383.03 µs] - change: [-79.336% -79.320% -79.303%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union CF + XxHash64 - time: [388.18 µs 388.41 µs 388.60 µs] - change: [-78.663% -78.646% -78.631%] (p = 0.00 < 0.05) - Performance has improved. - -Union FrankPP + SipHasher13 - time: [865.04 µs 865.28 µs 865.53 µs] - change: [-78.998% -78.988% -78.979%] (p = 0.00 < 0.05) - Performance has improved. - -Union SM time: [743.50 µs 744.37 µs 746.07 µs] - change: [-79.833% -79.384% -79.112%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union SHLL time: [284.95 µs 285.01 µs 285.09 µs] - change: [-79.618% -79.384% -79.250%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) low mild - -Union LLB + XxHash64 - time: [96.663 µs 96.759 µs 96.865 µs] - change: [-80.157% -80.089% -80.028%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Union LLB + WyHash - time: [97.013 µs 97.158 µs 97.327 µs] - change: [-79.907% -79.870% -79.832%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Union LLB + XxHash64 - time: [81.608 µs 81.896 µs 82.210 µs] - change: [-80.072% -80.028% -79.982%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [81.763 µs 81.933 µs 82.113 µs] - change: [-80.198% -80.028% -79.921%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [97.170 µs 97.403 µs 97.641 µs] - change: [-79.587% -79.542% -79.493%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union LLB + WyHash - time: [98.433 µs 98.509 µs 98.589 µs] - change: [-79.578% -79.379% -79.262%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [84.168 µs 84.179 µs 84.190 µs] - change: [-79.164% -78.968% -78.841%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union LLB + WyHash - time: [84.212 µs 84.233 µs 84.254 µs] - change: [-79.501% -79.190% -78.954%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union LLB + XxHash64 - time: [119.75 µs 119.76 µs 119.77 µs] - change: [-79.183% -78.945% -78.793%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [119.74 µs 119.75 µs 119.77 µs] - change: [-79.110% -78.923% -78.813%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union LLB + XxHash64 - time: [115.52 µs 115.53 µs 115.55 µs] - change: [-78.567% -78.542% -78.521%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Union LLB + WyHash - time: [115.52 µs 115.54 µs 115.55 µs] - change: [-78.890% -78.700% -78.561%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [101.21 µs 101.22 µs 101.23 µs] - change: [-79.450% -79.182% -78.992%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [101.26 µs 101.27 µs 101.28 µs] - change: [-79.286% -79.081% -78.958%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [85.845 µs 85.861 µs 85.879 µs] - change: [-79.024% -79.011% -79.000%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 4 (4.00%) high severe - -Union PP + WyHash - time: [86.065 µs 86.093 µs 86.123 µs] - change: [-78.964% -78.954% -78.943%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 2 (2.00%) low mild - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [99.589 µs 99.608 µs 99.627 µs] - change: [-78.943% -78.928% -78.917%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union PP + WyHash - time: [99.608 µs 99.622 µs 99.637 µs] - change: [-78.915% -78.907% -78.900%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [83.702 µs 83.715 µs 83.728 µs] - change: [-79.258% -79.252% -79.246%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [83.746 µs 83.761 µs 83.776 µs] - change: [-79.363% -79.324% -79.299%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) low mild - 2 (2.00%) high mild - -Union PP + XxHash64 - time: [119.61 µs 119.62 µs 119.64 µs] - change: [-78.541% -78.537% -78.533%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union PP + WyHash - time: [119.65 µs 119.67 µs 119.68 µs] - change: [-78.550% -78.535% -78.524%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union PP + XxHash64 - time: [115.05 µs 115.07 µs 115.09 µs] - change: [-78.605% -78.595% -78.586%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [115.08 µs 115.10 µs 115.12 µs] - change: [-78.578% -78.573% -78.568%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [107.46 µs 107.47 µs 107.48 µs] - change: [-78.955% -78.934% -78.918%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [107.55 µs 107.57 µs 107.58 µs] - change: [-78.915% -78.909% -78.904%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [91.610 µs 91.623 µs 91.636 µs] - change: [-78.848% -78.838% -78.830%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [91.437 µs 91.450 µs 91.462 µs] - change: [-78.861% -78.850% -78.842%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union HybridLLB + XxHash64 - time: [106.26 µs 106.27 µs 106.28 µs] - change: [-78.944% -78.928% -78.918%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [106.37 µs 106.38 µs 106.39 µs] - change: [-78.875% -78.867% -78.859%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [88.620 µs 88.646 µs 88.672 µs] - change: [-79.197% -79.186% -79.176%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) low mild - -Union HybridLLB + WyHash - time: [89.014 µs 89.027 µs 89.042 µs] - change: [-79.199% -79.194% -79.189%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [126.78 µs 126.82 µs 126.88 µs] - change: [-78.806% -78.794% -78.782%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 10 (10.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [126.70 µs 126.72 µs 126.73 µs] - change: [-78.804% -78.799% -78.793%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [121.65 µs 121.66 µs 121.68 µs] - change: [-78.534% -78.526% -78.519%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [121.65 µs 121.66 µs 121.68 µs] - change: [-78.541% -78.536% -78.532%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [105.46 µs 105.47 µs 105.48 µs] - change: [-78.985% -78.974% -78.965%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [105.59 µs 105.60 µs 105.61 µs] - change: [-78.947% -78.940% -78.934%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 6 (6.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + XxHash64 - time: [89.363 µs 89.680 µs 90.411 µs] - change: [-78.920% -78.816% -78.616%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [89.467 µs 89.480 µs 89.494 µs] - change: [-78.879% -78.874% -78.870%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union HybridPP + XxHash64 - time: [104.16 µs 104.17 µs 104.19 µs] - change: [-78.865% -78.854% -78.842%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [104.02 µs 104.03 µs 104.04 µs] - change: [-78.938% -78.933% -78.929%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [87.039 µs 87.050 µs 87.061 µs] - change: [-78.984% -78.978% -78.972%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 5 (5.00%) high severe - -Union HybridPP + WyHash - time: [87.634 µs 87.646 µs 87.658 µs] - change: [-78.879% -78.853% -78.834%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [122.94 µs 122.95 µs 122.97 µs] - change: [-78.858% -78.853% -78.848%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union HybridPP + WyHash - time: [122.95 µs 122.96 µs 122.98 µs] - change: [-78.908% -78.902% -78.896%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low mild - 8 (8.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [119.29 µs 119.31 µs 119.32 µs] - change: [-78.705% -78.698% -78.692%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [119.35 µs 119.37 µs 119.39 µs] - change: [-78.695% -78.687% -78.679%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.6208 ms 3.6225 ms 3.6236 ms] - change: [-79.080% -79.070% -79.061%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.6260 ms 3.6280 ms 3.6299 ms] - change: [-78.881% -78.857% -78.839%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.6067 ms 3.6080 ms 3.6106 ms] - change: [-79.006% -78.961% -78.926%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.5723 ms 3.5740 ms 3.5759 ms] - change: [-78.978% -78.964% -78.953%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.6878 ms 3.6893 ms 3.6907 ms] - change: [-78.608% -78.590% -78.572%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.6766 ms 3.6776 ms 3.6788 ms] - change: [-78.692% -78.681% -78.668%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.6600 ms 3.6617 ms 3.6636 ms] - change: [-78.659% -78.645% -78.630%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.6568 ms 3.6582 ms 3.6598 ms] - change: [-78.751% -78.700% -78.667%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [3.6396 ms 3.6405 ms 3.6409 ms] - change: [-78.630% -78.620% -78.610%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.6274 ms 3.6282 ms 3.6293 ms] - change: [-78.739% -78.728% -78.714%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [3.6121 ms 3.6136 ms 3.6150 ms] - change: [-78.770% -78.759% -78.748%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [3.5928 ms 3.5939 ms 3.5950 ms] - change: [-79.036% -79.027% -79.016%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.6508 ms 3.6516 ms 3.6526 ms] - change: [-79.025% -79.013% -79.001%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.6441 ms 3.6454 ms 3.6471 ms] - change: [-78.905% -78.895% -78.885%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.6393 ms 3.6404 ms 3.6416 ms] - change: [-78.829% -78.814% -78.800%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [3.6148 ms 3.6167 ms 3.6184 ms] - change: [-78.683% -78.661% -78.640%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.6856 ms 3.6868 ms 3.6888 ms] - change: [-78.679% -78.639% -78.593%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + WyHash - time: [3.6816 ms 3.6833 ms 3.6845 ms] - change: [-78.646% -78.631% -78.615%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [3.6466 ms 3.6479 ms 3.6495 ms] - change: [-78.721% -78.710% -78.700%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.6494 ms 3.6507 ms 3.6523 ms] - change: [-78.714% -78.697% -78.682%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [3.6690 ms 3.6699 ms 3.6710 ms] - change: [-78.502% -78.490% -78.478%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [3.6819 ms 3.6831 ms 3.6841 ms] - change: [-78.386% -78.376% -78.366%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [3.6553 ms 3.6562 ms 3.6572 ms] - change: [-78.548% -78.526% -78.507%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low severe - 1 (10.00%) high mild - -Union MLE2PP + WyHash - time: [3.6608 ms 3.6624 ms 3.6637 ms] - change: [-78.489% -78.475% -78.462%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.6314 ms 3.6322 ms 3.6332 ms] - change: [-79.037% -79.027% -79.016%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [3.6352 ms 3.6362 ms 3.6371 ms] - change: [-78.886% -78.876% -78.862%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [3.6254 ms 3.6263 ms 3.6271 ms] - change: [-78.848% -78.837% -78.825%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [3.5766 ms 3.5775 ms 3.5786 ms] - change: [-79.000% -78.990% -78.980%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.6559 ms 3.6567 ms 3.6576 ms] - change: [-78.855% -78.846% -78.834%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + WyHash - time: [3.6893 ms 3.6901 ms 3.6911 ms] - change: [-78.645% -78.634% -78.622%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [3.6662 ms 3.6682 ms 3.6698 ms] - change: [-78.619% -78.606% -78.592%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.6581 ms 3.6597 ms 3.6612 ms] - change: [-78.705% -78.695% -78.685%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [3.6549 ms 3.6563 ms 3.6576 ms] - change: [-78.535% -78.525% -78.515%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.6555 ms 3.6561 ms 3.6572 ms] - change: [-78.579% -78.568% -78.558%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 1 (10.00%) low mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [3.6249 ms 3.6264 ms 3.6280 ms] - change: [-78.621% -78.599% -78.581%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [3.6182 ms 3.6200 ms 3.6225 ms] - change: [-78.669% -78.653% -78.631%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.6552 ms 3.6562 ms 3.6572 ms] - change: [-79.052% -79.042% -79.031%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.6458 ms 3.6475 ms 3.6491 ms] - change: [-78.928% -78.916% -78.904%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.6424 ms 3.6443 ms 3.6460 ms] - change: [-78.829% -78.816% -78.805%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.6170 ms 3.6184 ms 3.6198 ms] - change: [-78.772% -78.761% -78.751%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.6550 ms 3.6564 ms 3.6580 ms] - change: [-78.971% -78.956% -78.942%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.6520 ms 3.6537 ms 3.6551 ms] - change: [-78.993% -78.957% -78.929%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [3.6169 ms 3.6190 ms 3.6206 ms] - change: [-79.047% -79.032% -79.017%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.6090 ms 3.6100 ms 3.6119 ms] - change: [-79.059% -79.044% -79.027%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [3.6107 ms 3.6120 ms 3.6132 ms] - change: [-78.879% -78.868% -78.858%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.5819 ms 3.5830 ms 3.5840 ms] - change: [-79.049% -79.039% -79.028%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [3.5646 ms 3.5658 ms 3.5668 ms] - change: [-79.145% -79.129% -79.111%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [3.5570 ms 3.5598 ms 3.5613 ms] - change: [-79.108% -79.090% -79.073%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [323.24 µs 323.27 µs 323.31 µs] - change: [-80.020% -80.015% -80.011%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Union TabacPP + XxHash64 - time: [762.66 µs 762.73 µs 762.78 µs] - change: [-79.572% -79.568% -79.564%] (p = 0.00 < 0.05) - Performance has improved. - -Union SA + XxHash64 - time: [138.35 µs 138.37 µs 138.40 µs] - change: [-79.370% -79.363% -79.357%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union CF + WyHash - time: [705.01 µs 705.23 µs 705.47 µs] - change: [-78.909% -78.895% -78.880%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 4 (4.00%) low mild - 4 (4.00%) high mild - -Union CF + XxHash64 - time: [675.12 µs 675.16 µs 675.20 µs] - change: [-79.187% -79.181% -79.177%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union FrankPP + SipHasher13 - time: [1.7150 ms 1.7156 ms 1.7162 ms] - change: [-78.693% -78.681% -78.669%] (p = 0.00 < 0.05) - Performance has improved. - -Union SM time: [840.04 µs 841.14 µs 842.54 µs] - change: [-79.059% -79.017% -78.976%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SHLL time: [341.21 µs 342.42 µs 343.52 µs] - change: [-78.768% -78.737% -78.692%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 20 measurements (15.00%) - 1 (5.00%) high mild - 2 (10.00%) high severe - -Union LLB + XxHash64 - time: [169.70 µs 169.90 µs 170.11 µs] - change: [-79.918% -79.896% -79.873%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [171.13 µs 171.52 µs 171.99 µs] - change: [-79.738% -79.681% -79.626%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union LLB + XxHash64 - time: [152.41 µs 152.96 µs 153.52 µs] - change: [-79.810% -79.760% -79.707%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + WyHash - time: [154.11 µs 154.51 µs 154.95 µs] - change: [-79.643% -79.598% -79.547%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union LLB + XxHash64 - time: [171.78 µs 171.93 µs 172.09 µs] - change: [-79.293% -79.270% -79.246%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 6 (6.00%) high severe - -Union LLB + WyHash - time: [175.22 µs 175.23 µs 175.24 µs] - change: [-78.926% -78.906% -78.892%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union LLB + XxHash64 - time: [159.37 µs 159.39 µs 159.41 µs] - change: [-78.755% -78.749% -78.745%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 7 (7.00%) low mild - 4 (4.00%) high mild - -Union LLB + WyHash - time: [159.38 µs 159.41 µs 159.43 µs] - change: [-78.756% -78.748% -78.741%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [240.18 µs 240.27 µs 240.36 µs] - change: [-79.090% -79.074% -79.059%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union LLB + WyHash - time: [240.26 µs 240.39 µs 240.54 µs] - change: [-79.090% -79.078% -79.065%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 7 (7.00%) high mild - 1 (1.00%) high severe - -Union LLB + XxHash64 - time: [237.24 µs 237.28 µs 237.32 µs] - change: [-78.719% -78.666% -78.616%] (p = 0.00 < 0.05) - Performance has improved. -Found 20 outliers among 100 measurements (20.00%) - 19 (19.00%) low severe - 1 (1.00%) high severe - -Union LLB + WyHash - time: [237.34 µs 238.11 µs 239.51 µs] - change: [-78.194% -78.050% -77.783%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [178.71 µs 178.74 µs 178.77 µs] - change: [-78.832% -78.826% -78.820%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 3 (3.00%) high mild - 4 (4.00%) high severe - -Union PP + WyHash - time: [178.89 µs 178.92 µs 178.94 µs] - change: [-78.813% -78.804% -78.797%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 5 (5.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [159.82 µs 159.85 µs 159.90 µs] - change: [-78.852% -78.835% -78.809%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union PP + WyHash - time: [159.83 µs 159.85 µs 159.87 µs] - change: [-78.870% -78.864% -78.859%] (p = 0.00 < 0.05) - Performance has improved. - -Union PP + XxHash64 - time: [175.64 µs 175.77 µs 176.02 µs] - change: [-78.850% -78.840% -78.823%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [175.64 µs 175.65 µs 175.67 µs] - change: [-78.841% -78.836% -78.831%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [160.48 µs 160.49 µs 160.51 µs] - change: [-78.755% -78.748% -78.742%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [160.51 µs 160.52 µs 160.53 µs] - change: [-78.731% -78.727% -78.723%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [241.74 µs 241.82 µs 241.92 µs] - change: [-78.830% -78.821% -78.812%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 10 (10.00%) high mild - 1 (1.00%) high severe - -Union PP + WyHash - time: [241.84 µs 241.90 µs 241.97 µs] - change: [-78.855% -78.833% -78.816%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 10 (10.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [238.14 µs 238.15 µs 238.17 µs] - change: [-78.642% -78.636% -78.630%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 5 (5.00%) high severe - -Union PP + WyHash - time: [237.39 µs 237.67 µs 237.88 µs] - change: [-78.584% -78.527% -78.466%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridLLB + XxHash64 - time: [184.11 µs 184.13 µs 184.15 µs] - change: [-78.859% -78.854% -78.850%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + WyHash - time: [184.17 µs 184.18 µs 184.19 µs] - change: [-78.855% -78.845% -78.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low mild - 6 (6.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [164.44 µs 164.45 µs 164.46 µs] - change: [-78.908% -78.902% -78.896%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 5 (5.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [164.90 µs 164.91 µs 164.93 µs] - change: [-78.810% -78.804% -78.798%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union HybridLLB + XxHash64 - time: [181.63 µs 181.64 µs 181.66 µs] - change: [-78.878% -78.875% -78.871%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [181.49 µs 181.51 µs 181.52 µs] - change: [-78.942% -78.913% -78.894%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [165.73 µs 165.82 µs 165.99 µs] - change: [-78.685% -78.677% -78.667%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) high mild - 5 (5.00%) high severe - -Union HybridLLB + WyHash - time: [164.51 µs 164.53 µs 164.55 µs] - change: [-78.919% -78.913% -78.907%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [267.15 µs 267.20 µs 267.26 µs] - change: [-77.195% -77.166% -77.137%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [267.23 µs 267.30 µs 267.39 µs] - change: [-77.310% -77.252% -77.206%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridLLB + XxHash64 - time: [257.44 µs 257.46 µs 257.48 µs] - change: [-76.951% -76.946% -76.942%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [257.52 µs 257.54 µs 257.56 µs] - change: [-77.035% -77.003% -76.974%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [183.06 µs 183.09 µs 183.12 µs] - change: [-78.849% -78.844% -78.839%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [183.42 µs 183.43 µs 183.45 µs] - change: [-78.800% -78.795% -78.791%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [163.79 µs 163.81 µs 163.82 µs] - change: [-78.796% -78.779% -78.764%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union HybridPP + WyHash - time: [164.06 µs 164.07 µs 164.08 µs] - change: [-78.755% -78.745% -78.738%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 4 (4.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [180.17 µs 180.18 µs 180.20 µs] - change: [-78.861% -78.858% -78.855%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 4 (4.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [180.26 µs 180.28 µs 180.29 µs] - change: [-78.854% -78.849% -78.844%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [163.32 µs 163.34 µs 163.36 µs] - change: [-78.802% -78.797% -78.791%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 4 (4.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + WyHash - time: [163.51 µs 163.52 µs 163.53 µs] - change: [-78.742% -78.738% -78.733%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [267.13 µs 267.18 µs 267.27 µs] - change: [-77.128% -77.071% -77.038%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) high mild - 6 (6.00%) high severe - -Union HybridPP + WyHash - time: [267.12 µs 267.13 µs 267.14 µs] - change: [-77.064% -77.056% -77.050%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [257.86 µs 257.88 µs 257.91 µs] - change: [-76.825% -76.817% -76.811%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 5 (5.00%) high mild - 5 (5.00%) high severe - -Union HybridPP + WyHash - time: [257.65 µs 257.67 µs 257.70 µs] - change: [-76.912% -76.893% -76.881%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union MLE2LLB + XxHash64 - time: [70.161 ms 70.170 ms 70.177 ms] - change: [-79.118% -79.114% -79.111%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 10 measurements (40.00%) - 2 (20.00%) low mild - 2 (20.00%) high mild - -Union MLE2LLB + WyHash - time: [69.655 ms 69.668 ms 69.675 ms] - change: [-78.905% -78.897% -78.892%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [70.088 ms 70.098 ms 70.110 ms] - change: [-79.150% -79.144% -79.137%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union MLE2LLB + WyHash - time: [69.573 ms 69.576 ms 69.583 ms] - change: [-78.930% -78.923% -78.917%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [70.095 ms 70.115 ms 70.134 ms] - change: [-79.193% -79.158% -79.131%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2LLB + WyHash - time: [69.625 ms 69.629 ms 69.633 ms] - change: [-78.916% -78.909% -78.903%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [70.046 ms 70.057 ms 70.079 ms] - change: [-79.139% -79.134% -79.129%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [69.492 ms 69.517 ms 69.544 ms] - change: [-78.964% -78.957% -78.950%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [70.032 ms 70.038 ms 70.046 ms] - change: [-79.116% -79.108% -79.102%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union MLE2LLB + WyHash - time: [69.546 ms 69.556 ms 69.568 ms] - change: [-78.902% -78.895% -78.890%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [70.029 ms 70.061 ms 70.094 ms] - change: [-79.123% -79.115% -79.107%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [69.508 ms 69.522 ms 69.533 ms] - change: [-78.939% -78.932% -78.927%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + XxHash64 - time: [70.292 ms 70.533 ms 70.915 ms] - change: [-79.029% -78.965% -78.917%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [69.657 ms 69.718 ms 69.893 ms] - change: [-78.945% -78.877% -78.766%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [70.061 ms 70.082 ms 70.115 ms] - change: [-79.120% -79.097% -79.064%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2PP + WyHash - time: [69.661 ms 69.836 ms 70.044 ms] - change: [-78.886% -78.843% -78.796%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [70.153 ms 70.162 ms 70.170 ms] - change: [-79.153% -79.144% -79.137%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [69.640 ms 69.659 ms 69.679 ms] - change: [-78.923% -78.915% -78.907%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [70.072 ms 70.091 ms 70.103 ms] - change: [-79.139% -79.131% -79.122%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [69.615 ms 69.622 ms 69.629 ms] - change: [-78.910% -78.903% -78.895%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2PP + XxHash64 - time: [70.027 ms 70.037 ms 70.053 ms] - change: [-79.152% -79.146% -79.140%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [69.547 ms 69.558 ms 69.569 ms] - change: [-78.896% -78.894% -78.891%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [70.018 ms 70.030 ms 70.043 ms] - change: [-79.115% -79.108% -79.103%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [69.544 ms 69.564 ms 69.582 ms] - change: [-78.930% -78.921% -78.913%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + XxHash64 - time: [70.127 ms 70.141 ms 70.156 ms] - change: [-79.128% -79.123% -79.118%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.608 ms 69.615 ms 69.625 ms] - change: [-78.913% -78.907% -78.902%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [70.034 ms 70.048 ms 70.062 ms] - change: [-79.155% -79.151% -79.147%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.503 ms 69.512 ms 69.521 ms] - change: [-78.967% -78.960% -78.954%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [70.136 ms 70.149 ms 70.160 ms] - change: [-79.125% -79.120% -79.115%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.615 ms 69.625 ms 69.634 ms] - change: [-78.922% -78.917% -78.911%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [70.093 ms 70.116 ms 70.126 ms] - change: [-79.132% -79.124% -79.116%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.574 ms 69.592 ms 69.607 ms] - change: [-78.912% -78.902% -78.895%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union HybridMLE2LLB + XxHash64 - time: [70.014 ms 70.029 ms 70.046 ms] - change: [-79.145% -79.136% -79.128%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.558 ms 69.568 ms 69.582 ms] - change: [-78.925% -78.919% -78.913%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [69.939 ms 69.967 ms 69.998 ms] - change: [-79.163% -79.155% -79.145%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [69.503 ms 69.530 ms 69.552 ms] - change: [-78.937% -78.931% -78.924%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [70.030 ms 70.058 ms 70.091 ms] - change: [-79.196% -79.187% -79.177%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [69.588 ms 69.605 ms 69.626 ms] - change: [-78.968% -78.958% -78.950%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [69.955 ms 69.977 ms 70.001 ms] - change: [-79.178% -79.170% -79.163%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [69.453 ms 69.476 ms 69.499 ms] - change: [-78.954% -78.946% -78.937%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [70.058 ms 70.078 ms 70.099 ms] - change: [-79.171% -79.162% -79.154%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2PP + WyHash - time: [69.606 ms 69.625 ms 69.642 ms] - change: [-78.959% -78.949% -78.941%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [69.983 ms 70.008 ms 70.032 ms] - change: [-79.190% -79.183% -79.176%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [69.528 ms 69.551 ms 69.567 ms] - change: [-78.956% -78.950% -78.942%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [69.932 ms 69.966 ms 70.001 ms] - change: [-79.151% -79.139% -79.127%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [69.503 ms 69.522 ms 69.534 ms] - change: [-78.918% -78.910% -78.902%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low severe - 2 (20.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [69.951 ms 69.986 ms 70.020 ms] - change: [-79.156% -79.146% -79.135%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [69.460 ms 69.490 ms 69.523 ms] - change: [-78.937% -78.929% -78.920%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [628.23 µs 628.27 µs 628.31 µs] - change: [-79.573% -79.564% -79.557%] (p = 0.00 < 0.05) - Performance has improved. - -Union TabacPP + XxHash64 - time: [1.4708 ms 1.4710 ms 1.4712 ms] - change: [-79.511% -79.503% -79.496%] (p = 0.00 < 0.05) - Performance has improved. - -Union SA + XxHash64 - time: [248.41 µs 248.46 µs 248.51 µs] - change: [-78.842% -78.833% -78.825%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union CF + WyHash - time: [1.2834 ms 1.2834 ms 1.2835 ms] - change: [-79.565% -79.557% -79.550%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union CF + XxHash64 - time: [1.2856 ms 1.2856 ms 1.2857 ms] - change: [-79.416% -79.408% -79.401%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union FrankPP + SipHasher13 - time: [3.3962 ms 3.4006 ms 3.4055 ms] - change: [-78.480% -78.466% -78.451%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Union SM time: [1.0187 ms 1.0191 ms 1.0196 ms] - change: [-79.203% -79.189% -79.174%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union SHLL time: [467.25 µs 467.30 µs 467.34 µs] - change: [-79.815% -79.810% -79.807%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [288.80 µs 289.41 µs 290.07 µs] - change: [-79.790% -79.751% -79.713%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) high mild - -Union LLB + WyHash - time: [292.44 µs 293.33 µs 294.30 µs] - change: [-79.578% -79.515% -79.450%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + XxHash64 - time: [300.24 µs 301.25 µs 302.19 µs] - change: [-79.345% -79.283% -79.222%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + WyHash - time: [300.50 µs 300.77 µs 301.03 µs] - change: [-79.271% -79.247% -79.223%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high mild - -Union LLB + XxHash64 - time: [300.18 µs 300.20 µs 300.22 µs] - change: [-78.642% -78.632% -78.625%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union LLB + WyHash - time: [300.18 µs 300.20 µs 300.21 µs] - change: [-78.703% -78.679% -78.659%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [312.18 µs 312.19 µs 312.21 µs] - change: [-78.917% -78.903% -78.891%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low severe - 2 (2.00%) low mild - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union LLB + WyHash - time: [311.88 µs 311.90 µs 311.91 µs] - change: [-78.894% -78.889% -78.885%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union LLB + XxHash64 - time: [472.35 µs 472.37 µs 472.39 µs] - change: [-78.855% -78.851% -78.847%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union LLB + WyHash - time: [472.39 µs 472.42 µs 472.44 µs] - change: [-78.951% -78.940% -78.931%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union LLB + XxHash64 - time: [491.97 µs 492.01 µs 492.06 µs] - change: [-78.841% -78.831% -78.822%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low severe - 5 (5.00%) high mild - 5 (5.00%) high severe - -Union LLB + WyHash - time: [492.25 µs 492.28 µs 492.30 µs] - change: [-78.825% -78.818% -78.813%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [302.66 µs 302.69 µs 302.73 µs] - change: [-78.855% -78.850% -78.846%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [302.80 µs 302.82 µs 302.84 µs] - change: [-78.894% -78.863% -78.841%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union PP + XxHash64 - time: [308.35 µs 308.38 µs 308.40 µs] - change: [-78.834% -78.826% -78.820%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union PP + WyHash - time: [308.36 µs 308.38 µs 308.40 µs] - change: [-78.869% -78.866% -78.862%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [300.73 µs 300.76 µs 300.79 µs] - change: [-78.666% -78.661% -78.657%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union PP + WyHash - time: [300.64 µs 300.66 µs 300.70 µs] - change: [-78.709% -78.686% -78.671%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low mild - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [313.40 µs 313.42 µs 313.45 µs] - change: [-78.833% -78.828% -78.824%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union PP + WyHash - time: [313.27 µs 313.29 µs 313.31 µs] - change: [-78.867% -78.846% -78.833%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [473.94 µs 473.97 µs 474.00 µs] - change: [-78.803% -78.799% -78.795%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 7 (7.00%) high severe - -Union PP + WyHash - time: [473.93 µs 473.95 µs 473.99 µs] - change: [-78.803% -78.799% -78.795%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [494.12 µs 494.15 µs 494.18 µs] - change: [-78.806% -78.799% -78.795%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low severe - 1 (1.00%) high severe - -Union PP + WyHash - time: [494.25 µs 494.28 µs 494.31 µs] - change: [-78.801% -78.794% -78.789%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [308.42 µs 308.44 µs 308.46 µs] - change: [-78.868% -78.863% -78.859%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [308.83 µs 308.86 µs 308.90 µs] - change: [-78.820% -78.811% -78.804%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [313.60 µs 313.65 µs 313.69 µs] - change: [-78.842% -78.834% -78.828%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [313.64 µs 313.69 µs 313.73 µs] - change: [-78.858% -78.851% -78.845%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union HybridLLB + XxHash64 - time: [306.84 µs 306.86 µs 306.88 µs] - change: [-78.631% -78.625% -78.620%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 3 (3.00%) low mild - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + WyHash - time: [306.86 µs 306.88 µs 306.91 µs] - change: [-78.631% -78.622% -78.615%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + XxHash64 - time: [318.16 µs 318.18 µs 318.20 µs] - change: [-78.852% -78.848% -78.844%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - -Union HybridLLB + WyHash - time: [318.55 µs 318.58 µs 318.60 µs] - change: [-78.854% -78.841% -78.831%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union HybridLLB + XxHash64 - time: [526.22 µs 526.27 µs 526.32 µs] - change: [-76.730% -76.723% -76.717%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) low mild - 4 (4.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [514.07 µs 514.10 µs 514.13 µs] - change: [-77.249% -77.243% -77.237%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [496.19 µs 496.22 µs 496.26 µs] - change: [-78.860% -78.850% -78.842%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [495.97 µs 496.01 µs 496.05 µs] - change: [-78.891% -78.887% -78.883%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [308.28 µs 308.30 µs 308.33 µs] - change: [-78.831% -78.827% -78.824%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - -Union HybridPP + WyHash - time: [307.97 µs 307.99 µs 308.02 µs] - change: [-78.842% -78.838% -78.833%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - -Union HybridPP + XxHash64 - time: [313.88 µs 313.91 µs 313.93 µs] - change: [-78.823% -78.818% -78.814%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [313.56 µs 313.58 µs 313.60 µs] - change: [-78.874% -78.862% -78.854%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [306.05 µs 306.06 µs 306.08 µs] - change: [-78.672% -78.663% -78.656%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 1 (1.00%) low severe - 3 (3.00%) low mild - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + WyHash - time: [305.96 µs 305.97 µs 305.99 µs] - change: [-78.687% -78.679% -78.671%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 6 (6.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [317.84 µs 317.85 µs 317.86 µs] - change: [-78.820% -78.809% -78.801%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 4 (4.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + WyHash - time: [317.48 µs 317.50 µs 317.52 µs] - change: [-78.847% -78.835% -78.826%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 6 (6.00%) high mild - 5 (5.00%) high severe - -Union HybridPP + XxHash64 - time: [515.24 µs 515.26 µs 515.29 µs] - change: [-77.248% -77.239% -77.230%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 1 (1.00%) low severe - 4 (4.00%) low mild - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [515.31 µs 515.33 µs 515.36 µs] - change: [-77.230% -77.224% -77.220%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - -Union HybridPP + XxHash64 - time: [496.90 µs 496.94 µs 496.98 µs] - change: [-78.885% -78.876% -78.868%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 4 (4.00%) high mild - -Union HybridPP + WyHash - time: [496.79 µs 496.82 µs 496.85 µs] - change: [-78.878% -78.871% -78.866%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 2 (2.00%) low severe - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union MLE2LLB + XxHash64 - time: [101.92 ms 102.05 ms 102.15 ms] - change: [-78.978% -78.961% -78.943%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [99.098 ms 99.181 ms 99.257 ms] - change: [-79.291% -79.278% -79.264%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [101.51 ms 101.55 ms 101.59 ms] - change: [-78.969% -78.956% -78.945%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [98.677 ms 98.727 ms 98.775 ms] - change: [-79.325% -79.314% -79.302%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [101.60 ms 101.62 ms 101.64 ms] - change: [-78.986% -78.978% -78.970%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [98.839 ms 99.067 ms 99.390 ms] - change: [-79.285% -79.261% -79.225%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [101.50 ms 101.64 ms 101.82 ms] - change: [-79.039% -79.023% -79.001%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + WyHash - time: [98.756 ms 98.774 ms 98.794 ms] - change: [-79.255% -79.245% -79.237%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [101.51 ms 101.93 ms 102.24 ms] - change: [-79.005% -78.965% -78.909%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union MLE2LLB + WyHash - time: [98.789 ms 98.852 ms 99.022 ms] - change: [-79.293% -79.262% -79.211%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union MLE2LLB + XxHash64 - time: [101.51 ms 101.78 ms 101.96 ms] - change: [-78.991% -78.961% -78.933%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high mild - -Union MLE2LLB + WyHash - time: [98.800 ms 98.848 ms 98.893 ms] - change: [-79.294% -79.287% -79.279%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [102.16 ms 102.28 ms 102.35 ms] - change: [-78.956% -78.934% -78.915%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [99.202 ms 99.304 ms 99.362 ms] - change: [-79.209% -79.193% -79.177%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [101.59 ms 101.63 ms 101.68 ms] - change: [-79.041% -79.028% -79.015%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [98.752 ms 98.770 ms 98.790 ms] - change: [-79.307% -79.282% -79.246%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union MLE2PP + XxHash64 - time: [101.63 ms 102.06 ms 102.28 ms] - change: [-79.051% -79.014% -78.971%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [98.828 ms 98.852 ms 98.875 ms] - change: [-79.332% -79.326% -79.321%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [101.58 ms 101.59 ms 101.60 ms] - change: [-78.998% -78.989% -78.981%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union MLE2PP + WyHash - time: [98.833 ms 98.848 ms 98.874 ms] - change: [-79.292% -79.285% -79.277%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [101.50 ms 101.50 ms 101.51 ms] - change: [-79.064% -79.056% -79.048%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low severe - -Union MLE2PP + WyHash - time: [98.755 ms 98.770 ms 98.790 ms] - change: [-79.324% -79.314% -79.305%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [101.36 ms 101.38 ms 101.40 ms] - change: [-79.068% -79.062% -79.055%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [99.453 ms 99.473 ms 99.521 ms] - change: [-79.161% -79.147% -79.131%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) high mild - 1 (10.00%) high severe - -Union HybridMLE2LLB + XxHash64 - time: [102.55 ms 102.57 ms 102.59 ms] - change: [-78.851% -78.844% -78.838%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [99.087 ms 99.192 ms 99.306 ms] - change: [-79.233% -79.219% -79.203%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [101.51 ms 101.55 ms 101.60 ms] - change: [-79.007% -78.994% -78.982%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [99.126 ms 99.399 ms 99.512 ms] - change: [-79.283% -79.230% -79.179%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [101.62 ms 101.63 ms 101.64 ms] - change: [-79.014% -79.005% -78.996%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2LLB + WyHash - time: [98.863 ms 98.884 ms 98.909 ms] - change: [-79.292% -79.282% -79.272%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [101.47 ms 101.49 ms 101.51 ms] - change: [-78.985% -78.977% -78.970%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [98.731 ms 98.745 ms 98.752 ms] - change: [-79.322% -79.316% -79.311%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [101.48 ms 101.49 ms 101.50 ms] - change: [-79.030% -79.023% -79.015%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [99.250 ms 99.462 ms 99.547 ms] - change: [-79.281% -79.225% -79.172%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [101.46 ms 101.48 ms 101.49 ms] - change: [-79.037% -79.027% -79.018%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + WyHash - time: [98.685 ms 98.708 ms 98.727 ms] - change: [-79.309% -79.303% -79.296%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [102.15 ms 102.40 ms 102.53 ms] - change: [-78.911% -78.882% -78.853%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [99.278 ms 99.316 ms 99.360 ms] - change: [-79.195% -79.180% -79.164%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 1 (10.00%) low mild - 1 (10.00%) high mild - -Union HybridMLE2PP + XxHash64 - time: [101.59 ms 101.60 ms 101.63 ms] - change: [-79.008% -78.996% -78.986%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) low mild - -Union HybridMLE2PP + WyHash - time: [98.770 ms 98.802 ms 98.847 ms] - change: [-79.261% -79.251% -79.241%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [101.59 ms 101.94 ms 102.20 ms] - change: [-79.055% -79.022% -78.983%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union HybridMLE2PP + WyHash - time: [98.850 ms 98.869 ms 98.885 ms] - change: [-79.328% -79.319% -79.311%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [101.55 ms 101.57 ms 101.58 ms] - change: [-79.021% -79.014% -79.007%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [98.847 ms 98.860 ms 98.870 ms] - change: [-79.252% -79.244% -79.236%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) low mild - -Union HybridMLE2PP + XxHash64 - time: [101.47 ms 101.48 ms 101.49 ms] - change: [-79.055% -79.048% -79.040%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [98.764 ms 99.103 ms 99.364 ms] - change: [-79.316% -79.286% -79.246%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 10 measurements (20.00%) - 2 (20.00%) high severe - -Union HybridMLE2PP + XxHash64 - time: [102.18 ms 102.19 ms 102.19 ms] - change: [-78.846% -78.837% -78.829%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [98.599 ms 98.625 ms 98.638 ms] - change: [-79.284% -79.274% -79.265%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [1.3589 ms 1.3594 ms 1.3601 ms] - change: [-77.344% -77.321% -77.304%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 20 measurements (10.00%) - 1 (5.00%) high mild - 1 (5.00%) high severe - -Union TabacPP + XxHash64 - time: [2.9298 ms 2.9300 ms 2.9305 ms] - change: [-79.162% -79.135% -79.113%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 20 measurements (20.00%) - 1 (5.00%) low mild - 1 (5.00%) high mild - 2 (10.00%) high severe - -Union SA + XxHash64 - time: [434.89 µs 434.95 µs 435.00 µs] - change: [-80.007% -80.000% -79.991%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union CF + WyHash - time: [2.5523 ms 2.5531 ms 2.5539 ms] - change: [-78.830% -78.820% -78.810%] (p = 0.00 < 0.05) - Performance has improved. - -Union CF + XxHash64 - time: [2.5157 ms 2.5158 ms 2.5160 ms] - change: [-79.389% -79.382% -79.375%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union FrankPP + SipHasher13 - time: [6.6663 ms 6.6680 ms 6.6693 ms] - change: [-78.314% -78.305% -78.296%] (p = 0.00 < 0.05) - Performance has improved. - -Union SM time: [1.5082 ms 1.5090 ms 1.5097 ms] - change: [-78.506% -78.488% -78.471%] (p = 0.00 < 0.05) - Performance has improved. - -Union SHLL time: [598.42 µs 598.46 µs 598.51 µs] - change: [-78.471% -78.466% -78.461%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high severe - -Union LLB + XxHash64 - time: [573.57 µs 574.81 µs 576.13 µs] - change: [-79.549% -79.510% -79.472%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union LLB + WyHash - time: [583.41 µs 584.32 µs 585.34 µs] - change: [-79.305% -79.254% -79.196%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 3 (3.00%) low mild - -Union LLB + XxHash64 - time: [593.19 µs 594.90 µs 596.36 µs] - change: [-79.362% -79.318% -79.271%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + WyHash - time: [600.69 µs 600.73 µs 600.78 µs] - change: [-78.988% -78.981% -78.974%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 2 (2.00%) high mild - 4 (4.00%) high severe - -Union LLB + XxHash64 - time: [584.87 µs 584.91 µs 584.95 µs] - change: [-78.886% -78.864% -78.847%] (p = 0.00 < 0.05) - Performance has improved. - -Union LLB + WyHash - time: [584.98 µs 585.00 µs 585.02 µs] - change: [-78.841% -78.836% -78.831%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union LLB + XxHash64 - time: [615.01 µs 615.36 µs 615.90 µs] - change: [-78.861% -78.854% -78.847%] (p = 0.00 < 0.05) - Performance has improved. -Found 13 outliers among 100 measurements (13.00%) - 6 (6.00%) high mild - 7 (7.00%) high severe - -Union LLB + WyHash - time: [615.23 µs 615.51 µs 615.84 µs] - change: [-78.866% -78.859% -78.852%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) high mild - 7 (7.00%) high severe - -Union LLB + XxHash64 - time: [930.74 µs 930.81 µs 930.89 µs] - change: [-78.861% -78.856% -78.851%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union LLB + WyHash - time: [930.72 µs 930.82 µs 930.94 µs] - change: [-78.857% -78.849% -78.843%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 4 (4.00%) high severe - -Union LLB + XxHash64 - time: [973.18 µs 973.99 µs 974.92 µs] - change: [-78.874% -78.846% -78.823%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 3 (3.00%) high mild - 9 (9.00%) high severe - -Union LLB + WyHash - time: [972.70 µs 972.97 µs 973.31 µs] - change: [-78.830% -78.817% -78.800%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Union PP + XxHash64 - time: [597.00 µs 597.07 µs 597.14 µs] - change: [-78.877% -78.870% -78.864%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 1 (1.00%) low severe - 7 (7.00%) low mild - 7 (7.00%) high mild - -Union PP + WyHash - time: [596.92 µs 596.95 µs 597.00 µs] - change: [-78.910% -78.880% -78.859%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union PP + XxHash64 - time: [604.52 µs 604.60 µs 604.69 µs] - change: [-78.998% -78.976% -78.950%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 1 (1.00%) high mild - 8 (8.00%) high severe - -Union PP + WyHash - time: [604.91 µs 605.32 µs 605.83 µs] - change: [-78.915% -78.901% -78.885%] (p = 0.00 < 0.05) - Performance has improved. -Found 18 outliers among 100 measurements (18.00%) - 2 (2.00%) high mild - 16 (16.00%) high severe - -Union PP + XxHash64 - time: [588.24 µs 588.26 µs 588.28 µs] - change: [-78.826% -78.823% -78.819%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 1 (1.00%) high mild - -Union PP + WyHash - time: [588.08 µs 588.11 µs 588.16 µs] - change: [-78.825% -78.820% -78.815%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 1 (1.00%) high mild - 4 (4.00%) high severe - -Union PP + XxHash64 - time: [621.12 µs 622.10 µs 623.19 µs] - change: [-78.768% -78.738% -78.708%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Union PP + WyHash - time: [618.91 µs 619.27 µs 619.74 µs] - change: [-78.740% -78.699% -78.650%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union PP + XxHash64 - time: [933.68 µs 933.70 µs 933.73 µs] - change: [-78.816% -78.804% -78.794%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 3 (3.00%) high mild - -Union PP + WyHash - time: [933.73 µs 933.83 µs 933.95 µs] - change: [-78.798% -78.794% -78.791%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union PP + XxHash64 - time: [976.17 µs 976.43 µs 976.70 µs] - change: [-78.811% -78.805% -78.800%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 5 (5.00%) high mild - -Union PP + WyHash - time: [976.62 µs 977.34 µs 978.12 µs] - change: [-78.802% -78.794% -78.786%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 4 (4.00%) high mild - 6 (6.00%) high severe - -Union HybridLLB + XxHash64 - time: [599.84 µs 599.95 µs 600.07 µs] - change: [-78.857% -78.851% -78.845%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 4 (4.00%) high mild - 5 (5.00%) high severe - -Union HybridLLB + WyHash - time: [599.98 µs 600.18 µs 600.40 µs] - change: [-78.842% -78.833% -78.823%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 6 (6.00%) high mild - -Union HybridLLB + XxHash64 - time: [608.12 µs 608.68 µs 609.36 µs] - change: [-78.945% -78.905% -78.867%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 6 (6.00%) high mild - 10 (10.00%) high severe - -Union HybridLLB + WyHash - time: [608.82 µs 609.39 µs 610.02 µs] - change: [-78.946% -78.926% -78.906%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 9 (9.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + XxHash64 - time: [593.80 µs 593.83 µs 593.86 µs] - change: [-78.833% -78.824% -78.816%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - 1 (1.00%) high severe - -Union HybridLLB + WyHash - time: [593.71 µs 593.74 µs 593.79 µs] - change: [-78.811% -78.807% -78.803%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 2 (2.00%) high mild - 3 (3.00%) high severe - -Union HybridLLB + XxHash64 - time: [622.50 µs 622.79 µs 623.15 µs] - change: [-78.787% -78.777% -78.767%] (p = 0.00 < 0.05) - Performance has improved. -Found 12 outliers among 100 measurements (12.00%) - 6 (6.00%) high mild - 6 (6.00%) high severe - -Union HybridLLB + WyHash - time: [622.08 µs 622.27 µs 622.52 µs] - change: [-78.800% -78.790% -78.777%] (p = 0.00 < 0.05) - Performance has improved. -Found 17 outliers among 100 measurements (17.00%) - 1 (1.00%) high mild - 16 (16.00%) high severe - -Union HybridLLB + XxHash64 - time: [1.0116 ms 1.0117 ms 1.0119 ms] - change: [-77.115% -77.103% -77.092%] (p = 0.00 < 0.05) - Performance has improved. -Found 8 outliers among 100 measurements (8.00%) - 2 (2.00%) low severe - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + WyHash - time: [1.0116 ms 1.0117 ms 1.0118 ms] - change: [-77.162% -77.147% -77.135%] (p = 0.00 < 0.05) - Performance has improved. -Found 7 outliers among 100 measurements (7.00%) - 5 (5.00%) high mild - 2 (2.00%) high severe - -Union HybridLLB + XxHash64 - time: [977.60 µs 978.24 µs 978.90 µs] - change: [-78.823% -78.814% -78.804%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 3 (3.00%) high mild - 7 (7.00%) high severe - -Union HybridLLB + WyHash - time: [977.19 µs 977.73 µs 978.39 µs] - change: [-78.808% -78.801% -78.793%] (p = 0.00 < 0.05) - Performance has improved. -Found 15 outliers among 100 measurements (15.00%) - 8 (8.00%) high mild - 7 (7.00%) high severe - -Union HybridPP + XxHash64 - time: [601.59 µs 601.67 µs 601.75 µs] - change: [-78.845% -78.840% -78.836%] (p = 0.00 < 0.05) - Performance has improved. -Found 11 outliers among 100 measurements (11.00%) - 1 (1.00%) low severe - 9 (9.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [601.81 µs 601.87 µs 601.93 µs] - change: [-78.826% -78.821% -78.818%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [610.78 µs 611.21 µs 611.79 µs] - change: [-78.775% -78.671% -78.562%] (p = 0.00 < 0.05) - Performance has improved. -Found 22 outliers among 100 measurements (22.00%) - 1 (1.00%) high mild - 21 (21.00%) high severe - -Union HybridPP + WyHash - time: [609.97 µs 610.16 µs 610.40 µs] - change: [-78.969% -78.963% -78.957%] (p = 0.00 < 0.05) - Performance has improved. -Found 10 outliers among 100 measurements (10.00%) - 1 (1.00%) low mild - 5 (5.00%) high mild - 4 (4.00%) high severe - -Union HybridPP + XxHash64 - time: [594.77 µs 594.80 µs 594.84 µs] - change: [-78.847% -78.832% -78.821%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - 2 (2.00%) high severe - -Union HybridPP + WyHash - time: [594.46 µs 594.51 µs 594.56 µs] - change: [-78.821% -78.814% -78.807%] (p = 0.00 < 0.05) - Performance has improved. -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low severe - 1 (1.00%) low mild - 2 (2.00%) high severe - -Union HybridPP + XxHash64 - time: [623.91 µs 624.00 µs 624.09 µs] - change: [-78.804% -78.800% -78.796%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 100 measurements (3.00%) - 2 (2.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + WyHash - time: [624.17 µs 624.31 µs 624.51 µs] - change: [-78.807% -78.799% -78.793%] (p = 0.00 < 0.05) - Performance has improved. -Found 6 outliers among 100 measurements (6.00%) - 1 (1.00%) low mild - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union HybridPP + XxHash64 - time: [1.0142 ms 1.0143 ms 1.0143 ms] - change: [-77.212% -77.171% -77.140%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 1 (1.00%) low mild - 1 (1.00%) high mild - -Union HybridPP + WyHash - time: [1.0140 ms 1.0140 ms 1.0141 ms] - change: [-77.158% -77.151% -77.144%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 1 (1.00%) low severe - 1 (1.00%) high mild - 3 (3.00%) high severe - -Union HybridPP + XxHash64 - time: [979.35 µs 979.54 µs 979.75 µs] - change: [-78.813% -78.806% -78.800%] (p = 0.00 < 0.05) - Performance has improved. -Found 16 outliers among 100 measurements (16.00%) - 1 (1.00%) low severe - 2 (2.00%) low mild - 4 (4.00%) high mild - 9 (9.00%) high severe - -Union HybridPP + WyHash - time: [978.98 µs 979.07 µs 979.17 µs] - change: [-78.819% -78.814% -78.810%] (p = 0.00 < 0.05) - Performance has improved. -Found 9 outliers among 100 measurements (9.00%) - 2 (2.00%) low mild - 3 (3.00%) high mild - 4 (4.00%) high severe - -Union MLE2LLB + XxHash64 - time: [99.077 ms 99.120 ms 99.173 ms] - change: [-78.258% -78.246% -78.232%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.43 ms 100.47 ms 100.50 ms] - change: [-77.701% -77.688% -77.675%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [98.957 ms 99.020 ms 99.080 ms] - change: [-78.216% -78.203% -78.190%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.26 ms 100.33 ms 100.39 ms] - change: [-77.673% -77.656% -77.638%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [99.143 ms 99.204 ms 99.279 ms] - change: [-78.262% -78.248% -78.232%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.53 ms 100.60 ms 100.69 ms] - change: [-77.666% -77.649% -77.635%] (p = 0.00 < 0.05) - Performance has improved. -Found 3 outliers among 10 measurements (30.00%) - 2 (20.00%) low mild - 1 (10.00%) high mild - -Union MLE2LLB + XxHash64 - time: [98.940 ms 98.985 ms 99.029 ms] - change: [-78.258% -78.244% -78.232%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.26 ms 100.51 ms 100.67 ms] - change: [-77.710% -77.681% -77.651%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [98.851 ms 98.906 ms 98.960 ms] - change: [-78.296% -78.285% -78.273%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.13 ms 100.16 ms 100.21 ms] - change: [-77.750% -77.739% -77.728%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + XxHash64 - time: [98.777 ms 98.817 ms 98.852 ms] - change: [-78.204% -78.193% -78.182%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2LLB + WyHash - time: [100.00 ms 100.07 ms 100.19 ms] - change: [-77.655% -77.632% -77.606%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [99.504 ms 99.542 ms 99.576 ms] - change: [-78.276% -78.262% -78.250%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.80 ms 100.86 ms 100.91 ms] - change: [-77.695% -77.677% -77.659%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union MLE2PP + XxHash64 - time: [98.777 ms 98.821 ms 98.855 ms] - change: [-78.270% -78.256% -78.243%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.11 ms 100.16 ms 100.21 ms] - change: [-77.663% -77.651% -77.636%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [99.113 ms 99.172 ms 99.223 ms] - change: [-78.296% -78.286% -78.275%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.53 ms 100.59 ms 100.63 ms] - change: [-77.735% -77.725% -77.716%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [98.765 ms 98.796 ms 98.834 ms] - change: [-78.258% -78.248% -78.237%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.11 ms 100.16 ms 100.21 ms] - change: [-77.749% -77.736% -77.723%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [98.828 ms 98.871 ms 98.911 ms] - change: [-78.252% -78.240% -78.228%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.20 ms 100.26 ms 100.32 ms] - change: [-77.662% -77.649% -77.636%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + XxHash64 - time: [98.686 ms 98.741 ms 98.794 ms] - change: [-78.201% -78.187% -78.172%] (p = 0.00 < 0.05) - Performance has improved. - -Union MLE2PP + WyHash - time: [100.06 ms 100.12 ms 100.19 ms] - change: [-77.714% -77.700% -77.688%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [99.128 ms 99.159 ms 99.201 ms] - change: [-78.234% -78.224% -78.212%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.40 ms 100.47 ms 100.52 ms] - change: [-77.698% -77.682% -77.667%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high mild - -Union HybridMLE2LLB + XxHash64 - time: [99.005 ms 99.065 ms 99.113 ms] - change: [-78.252% -78.240% -78.228%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.27 ms 100.32 ms 100.38 ms] - change: [-77.708% -77.697% -77.685%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [99.165 ms 99.225 ms 99.292 ms] - change: [-78.250% -78.237% -78.223%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.52 ms 100.58 ms 100.63 ms] - change: [-77.706% -77.692% -77.678%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [98.945 ms 99.005 ms 99.048 ms] - change: [-78.240% -78.228% -78.219%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.27 ms 100.32 ms 100.38 ms] - change: [-77.646% -77.630% -77.616%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [98.872 ms 98.910 ms 98.944 ms] - change: [-78.273% -78.262% -78.252%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.17 ms 100.22 ms 100.26 ms] - change: [-77.711% -77.697% -77.683%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + XxHash64 - time: [98.689 ms 98.739 ms 98.778 ms] - change: [-78.238% -78.226% -78.213%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2LLB + WyHash - time: [100.02 ms 100.07 ms 100.13 ms] - change: [-77.694% -77.683% -77.671%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [99.435 ms 99.489 ms 99.542 ms] - change: [-78.246% -78.233% -78.219%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.78 ms 100.82 ms 100.85 ms] - change: [-77.672% -77.660% -77.648%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [98.756 ms 98.800 ms 98.831 ms] - change: [-78.262% -78.251% -78.239%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.10 ms 100.12 ms 100.16 ms] - change: [-77.701% -77.691% -77.681%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [99.073 ms 99.122 ms 99.171 ms] - change: [-78.218% -78.207% -78.196%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.47 ms 100.51 ms 100.57 ms] - change: [-77.724% -77.710% -77.696%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [98.811 ms 98.857 ms 98.897 ms] - change: [-78.226% -78.214% -78.202%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.14 ms 100.18 ms 100.22 ms] - change: [-77.778% -77.746% -77.724%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [98.749 ms 98.802 ms 98.851 ms] - change: [-78.288% -78.277% -78.266%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.15 ms 100.20 ms 100.24 ms] - change: [-77.701% -77.690% -77.679%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + XxHash64 - time: [98.632 ms 98.673 ms 98.718 ms] - change: [-78.269% -78.261% -78.252%] (p = 0.00 < 0.05) - Performance has improved. - -Union HybridMLE2PP + WyHash - time: [100.02 ms 100.06 ms 100.13 ms] - change: [-77.700% -77.688% -77.676%] (p = 0.00 < 0.05) - Performance has improved. - -Union Tabac + XxHash64 - time: [2.6907 ms 2.6911 ms 2.6914 ms] - change: [-77.173% -77.157% -77.147%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Union TabacPP + XxHash64 - time: [5.7404 ms 5.7407 ms 5.7411 ms] - change: [-79.404% -79.400% -79.395%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 20 measurements (5.00%) - 1 (5.00%) high mild - -Union SA + XxHash64 - time: [897.21 µs 897.31 µs 897.42 µs] - change: [-78.881% -78.877% -78.872%] (p = 0.00 < 0.05) - Performance has improved. -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - -Union CF + WyHash - time: [4.9394 ms 4.9397 ms 4.9400 ms] - change: [-79.215% -79.205% -79.195%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union CF + XxHash64 - time: [4.9448 ms 4.9451 ms 4.9455 ms] - change: [-79.465% -79.444% -79.429%] (p = 0.00 < 0.05) - Performance has improved. -Found 5 outliers among 100 measurements (5.00%) - 2 (2.00%) low mild - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union FrankPP + SipHasher13 - time: [12.898 ms 12.900 ms 12.903 ms] - change: [-78.473% -78.465% -78.456%] (p = 0.00 < 0.05) - Performance has improved. - -Union SM time: [2.2170 ms 2.2174 ms 2.2181 ms] - change: [-79.429% -79.408% -79.388%] (p = 0.00 < 0.05) - Performance has improved. -Found 1 outliers among 10 measurements (10.00%) - 1 (10.00%) high severe - -Union SHLL time: [813.61 µs 814.44 µs 815.17 µs] - change: [-79.283% -79.267% -79.250%] (p = 0.00 < 0.05) - Performance has improved. - -Union H2B time: [51.244 µs 51.249 µs 51.255 µs] -Found 5 outliers among 100 measurements (5.00%) - 4 (4.00%) high mild - 1 (1.00%) high severe - -Union H2B time: [69.497 µs 69.508 µs 69.519 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) low severe - -Union H2B> time: [69.249 µs 69.277 µs 69.304 µs] -Found 13 outliers among 100 measurements (13.00%) - 2 (2.00%) low severe - 7 (7.00%) low mild - 3 (3.00%) high mild - 1 (1.00%) high severe - -Union H2B> time: [99.586 µs 99.593 µs 99.600 µs] -Found 8 outliers among 100 measurements (8.00%) - 3 (3.00%) low severe - 4 (4.00%) low mild - 1 (1.00%) high mild - -Union H2B> time: [124.67 µs 124.77 µs 124.87 µs] -Found 1 outliers among 100 measurements (1.00%) - 1 (1.00%) high mild - -Union H2B> time: [161.37 µs 161.41 µs 161.46 µs] - -Union H2B> time: [222.92 µs 222.98 µs 223.04 µs] -Found 3 outliers among 100 measurements (3.00%) - 1 (1.00%) high mild - 2 (2.00%) high severe - -Union H3B time: [58.030 µs 58.040 µs 58.052 µs] -Found 4 outliers among 100 measurements (4.00%) - 4 (4.00%) high mild - -Union H3B time: [73.963 µs 73.986 µs 74.013 µs] - -Union H3B> time: [87.530 µs 87.558 µs 87.586 µs] - -Union H3B> time: [111.61 µs 111.63 µs 111.66 µs] -Found 6 outliers among 100 measurements (6.00%) - 3 (3.00%) high mild - 3 (3.00%) high severe - -Union H3B> time: [133.15 µs 133.19 µs 133.22 µs] - -Union H3B> time: [192.37 µs 192.40 µs 192.44 µs] -Found 4 outliers among 100 measurements (4.00%) - 1 (1.00%) low mild - 3 (3.00%) high mild - -Union H3B> time: [263.16 µs 263.22 µs 263.28 µs] -Found 6 outliers among 100 measurements (6.00%) - 5 (5.00%) high mild - 1 (1.00%) high severe - -Union HashSet time: [850.76 ms 852.69 ms 854.73 ms] -Found 2 outliers among 100 measurements (2.00%) - 2 (2.00%) high mild - diff --git a/statistical_comparisons/benches/union.rs b/statistical_comparisons/benches/union.rs deleted file mode 100644 index d55539c..0000000 --- a/statistical_comparisons/benches/union.rs +++ /dev/null @@ -1,414 +0,0 @@ -#![feature(test)] -extern crate test; - -use criterion::{criterion_group, criterion_main, Criterion}; -use hyperloglog_rs::prelude::*; -use std::collections::HashSet; -use std::hint::black_box; -use wyhash::WyHash; - -mod utils; - -use utils::*; - -const RANDOM_STATE: u64 = 87561346897134_u64; -const NUMBER_OF_ELEMENTS: usize = 50_000; -const NUMBER_OF_COUNTERS: usize = 2_000; - -fn union_bencher< - H: Estimator + hyperloglog_rs::prelude::Named + ExtendableApproximatedSet, ->( - b: &mut Criterion, -) { - let mut random_state = splitmix64(RANDOM_STATE); - let counters: Vec<(H, H)> = (0..NUMBER_OF_COUNTERS) - .map(|_| { - let mut left = H::default(); - let mut right = H::default(); - random_state = splitmix64(random_state); - for value in iter_var_len_random_values(NUMBER_OF_ELEMENTS, None, random_state) { - if value % 2 == 0 { - left.insert(&value); - } - - right.insert(&value); - } - (left, right) - }) - .collect(); - - b.bench_function(format!("Union {}", H::default().name()).as_str(), |b| { - b.iter(|| { - let mut total_union = 0.0_f64; - for (left, right) in counters.iter() { - total_union += black_box(left).estimate_union_cardinality(black_box(right)); - } - total_union - }) - }); -} - -macro_rules! bench_union { - ($precision:ty, $bits:ty, $hasher:ty) => { - paste::item! { - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>>(b); - } - - - fn [] (b: &mut Criterion) { - union_bencher::>::ArrayRegister, $hasher>>>>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>::PackedRegister, $hasher>>>>(b); - } - } - }; -} - -macro_rules! bench_cludflare_union { - ($precision:ty, $bits:ty, $($hasher:ty),*) => { - $( - paste::item! { - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - } - )* - }; -} - -type XxHash64 = twox_hash::XxHash64; - -/// Macro to generate a criterion benchmark with the provided precision exponent and bits -macro_rules! bench_union_bits { - ($precision:ty, $($bits:ty),*) => { - $( - bench_union!($precision, $bits, WyHash); - bench_union!($precision, $bits, XxHash64); - )* - }; -} - -/// Macro to generate criterion groups. -macro_rules! bench_union_registers { - ($precision:ty, $sample_size:expr, $($register:expr),*) => { - $( - paste::paste! { - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [], - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size(10).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [], - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size(10).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size(10).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size(10).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[], [], [], [] - } - } - )* - }; -} - -/// Macro to generate a criterion benchmark with the provided precision exponents -macro_rules! bench_cardinalities { - ($(($precision:ty, $sample_size:expr)),*) => { - $( - bench_cludflare_union!($precision, Bits6, WyHash, XxHash64); - bench_union_bits!($precision, Bits6); - bench_union_bits!($precision, Bits8); - - paste::item! { - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - fn [] (b: &mut Criterion) { - union_bencher::>(b); - } - - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size); - targets=[], [] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size($sample_size / 5); - targets=[] - } - criterion_group! { - name=[]; - config = Criterion::default().sample_size(10).warm_up_time(std::time::Duration::from_secs(1)).warm_up_time(std::time::Duration::from_secs(1)); - targets=[] - } - - bench_union_registers!($precision, $sample_size, "array", "packedarray"); - } - )* - }; -} - -macro_rules! bench_hyper_two_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - union_bencher::>(b); - } - } - )* - }; -} - -macro_rules! bench_hyper_three_bits { - ($($sketch:ty),*) => { - $( - paste::paste!{ - fn [](b: &mut Criterion) { - union_bencher::>(b); - } - } - )* - }; -} - -use hypertwobits::h2b::{ - M1024 as M1024H2B, M128 as M128H2B, M2048 as M2048H2B, M256 as M256H2B, M4096 as M4096H2B, - M512 as M512H2B, M64 as M64H2B, -}; -bench_hyper_two_bits!(M64H2B, M128H2B, M256H2B, M512H2B, M1024H2B, M2048H2B, M4096H2B); - -use hypertwobits::h3b::{ - M1024 as M1024H3B, M128 as M128H3B, M2048 as M2048H3B, M256 as M256H3B, M4096 as M4096H3B, - M512 as M512H3B, M64 as M64H3B, -}; -bench_hyper_three_bits!(M64H3B, M128H3B, M256H3B, M512H3B, M1024H3B, M2048H3B, M4096H3B); - -fn bench_hashset_union(b: &mut Criterion) { - union_bencher::>(b); -} - -criterion_group!( - name = union_hyper_two_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)); - targets = bench_hypertwobits_m64h2b_union, bench_hypertwobits_m128h2b_union, bench_hypertwobits_m256h2b_union, bench_hypertwobits_m512h2b_union, bench_hypertwobits_m1024h2b_union, bench_hypertwobits_m2048h2b_union, bench_hypertwobits_m4096h2b_union -); - -criterion_group!( - name = union_hyper_three_bits; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)); - targets = bench_hyperthreebits_m64h3b_union, bench_hyperthreebits_m128h3b_union, bench_hyperthreebits_m256h3b_union, bench_hyperthreebits_m512h3b_union, bench_hyperthreebits_m1024h3b_union, bench_hyperthreebits_m2048h3b_union, bench_hyperthreebits_m4096h3b_union -); - -criterion_group!( - name = union_hashset; - config = Criterion::default().sample_size(100).warm_up_time(std::time::Duration::from_secs(1)); - targets = bench_hashset_union -); - -#[cfg(feature = "low_precisions")] -bench_cardinalities!( - (Precision4, 100), - (Precision5, 100), - (Precision6, 100), - (Precision7, 100), - (Precision8, 100), - (Precision9, 100), - (Precision10, 100) -); - -#[cfg(feature = "medium_precisions")] -bench_cardinalities!( - (Precision11, 100), - (Precision12, 100), - (Precision13, 50), - (Precision14, 50), - (Precision15, 50), - (Precision16, 50) -); - -#[cfg(feature = "high_precisions")] -bench_cardinalities!((Precision17, 50), (Precision18, 50)); - -/// Macro to generate the criterion main for all precisions -macro_rules! bench_union_main { - ($($precision:ty),*) => { - paste::paste!{ - criterion_main!( - $( - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - [], - )* - union_hyper_two_bits, - union_hyper_three_bits, - union_hashset - ); - } - }; -} - -bench_union_main!( - Precision4, - Precision5, - Precision6, - Precision7, - Precision8, - Precision9, - Precision10, - Precision11, - Precision12, - Precision13, - Precision14, - Precision15, - Precision16, - Precision17, - Precision18 -); diff --git a/statistical_comparisons/macro_test_utils/src/lib.rs b/statistical_comparisons/macro_test_utils/src/lib.rs index 9969689..d995c1c 100644 --- a/statistical_comparisons/macro_test_utils/src/lib.rs +++ b/statistical_comparisons/macro_test_utils/src/lib.rs @@ -1,6 +1,5 @@ //! Provides a procedural macro to implement all of the methods of a trait for an enum //! of single-fielded variants, all of which impleent the trait. -//! use proc_macro::TokenStream; use quote::quote; @@ -54,7 +53,6 @@ pub fn my_trait_derive(input: TokenStream) -> TokenStream { TokenStream::from(expanded) } - #[proc_macro_derive(ExtendableApproximatedSet)] pub fn extendable_approximated_set_derive(input: TokenStream) -> TokenStream { // Parse the input TokenStream into a syntax tree @@ -123,7 +121,7 @@ pub fn estimator_derive(input: TokenStream) -> TokenStream { // Generate match arms for each variant of the enum let mut estimate_cardinality = Vec::new(); let mut estimate_union_cardinality = Vec::new(); - let mut is_union_estimate_non_deterministic = Vec::new(); + let mut estimate_union_cardinality_with_cardinalities = Vec::new(); data_enum.variants.iter().for_each(|variant| { let variant_name = &variant.ident; @@ -142,8 +140,8 @@ pub fn estimator_derive(input: TokenStream) -> TokenStream { (#name::#variant_name(inner), #name::#variant_name(other)) => inner.estimate_union_cardinality(other), }); - is_union_estimate_non_deterministic.push(quote! { - (#name::#variant_name(inner), #name::#variant_name(other)) => inner.is_union_estimate_non_deterministic(other), + estimate_union_cardinality_with_cardinalities.push(quote! { + (#name::#variant_name(inner), #name::#variant_name(other)) => inner.estimate_union_cardinality_with_cardinalities(other, cardinality, other_cardinality), }); }); @@ -157,17 +155,17 @@ pub fn estimator_derive(input: TokenStream) -> TokenStream { #(#estimate_cardinality)* } } - - fn estimate_union_cardinality(&self, other: &Self) -> f64 { + + fn estimate_union_cardinality_with_cardinalities(&self, other: &Self, cardinality: f64, other_cardinality: f64) -> f64 { match (self, other) { - #(#estimate_union_cardinality)* - _ => panic!("Union cardinality not defined for these variants."), + #(#estimate_union_cardinality_with_cardinalities)* + _ => panic!("Union cardinality with cardinalities not defined for these variants."), } } - - fn is_union_estimate_non_deterministic(&self, other: &Self) -> bool { + + fn estimate_union_cardinality(&self, other: &Self) -> f64 { match (self, other) { - #(#is_union_estimate_non_deterministic)* + #(#estimate_union_cardinality)* _ => panic!("Union cardinality not defined for these variants."), } } @@ -223,4 +221,4 @@ pub fn transparent_mem_size_derive(input: TokenStream) -> TokenStream { }; TokenStream::from(expanded) -} \ No newline at end of file +} diff --git a/statistical_comparisons/macro_test_utils/tests/test_derives.rs b/statistical_comparisons/macro_test_utils/tests/test_derives.rs index 93ac32e..5eceb1d 100644 --- a/statistical_comparisons/macro_test_utils/tests/test_derives.rs +++ b/statistical_comparisons/macro_test_utils/tests/test_derives.rs @@ -1,5 +1,5 @@ -use macro_test_utils::*; use hyperloglog_rs::prelude::*; +use macro_test_utils::*; #[derive(Default)] struct TestNamedA; @@ -21,6 +21,15 @@ impl Estimator for TestNamedA { 0.0 } + fn estimate_union_cardinality_with_cardinalities( + &self, + _other: &Self, + _cardinality: f64, + _other_cardinality: f64, + ) -> f64 { + 0.0 + } + fn estimate_union_cardinality(&self, _other: &Self) -> f64 { 0.0 } @@ -46,6 +55,15 @@ impl Estimator for TestNamedB { 0.0 } + fn estimate_union_cardinality_with_cardinalities( + &self, + _other: &Self, + _cardinality: f64, + _other_cardinality: f64, + ) -> f64 { + 0.0 + } + fn estimate_union_cardinality(&self, _other: &Self) -> f64 { 0.0 } @@ -79,4 +97,4 @@ fn test_named_derive_with_generics() { assert_eq!(a.name(), "A"); assert_eq!(b.name(), "B"); -} \ No newline at end of file +} diff --git a/statistical_comparisons/src/enumerations.rs b/statistical_comparisons/src/enumerations.rs index edd5d21..d9402bc 100644 --- a/statistical_comparisons/src/enumerations.rs +++ b/statistical_comparisons/src/enumerations.rs @@ -1,8 +1,8 @@ //! This module contains the enumerations used in the benchmarks. use crate::proxy_implementations::{ - AlecHLL, CloudFlareHLL, HyperThreeBits, HyperTwoBits, RustHLL, SimpleHLL, TabacHLL, - TabacHLLPlusPlus, + AlecHLL, CloudFlareHLL, HasherBuilderAssociated, HyperThreeBits, HyperTwoBits, RustHLL, + SimpleHLL, TabacHLL, TabacHLLPlusPlus, }; use crate::traits::TransparentMemSize; use hyperloglog_rs::prelude::*; @@ -26,21 +26,21 @@ use strum_macros::EnumIter; #[derive(Clone, Named, ExtendableApproximatedSet, Estimator, TransparentMemSize, EnumIter)] /// Enumerations will all `HyperTwo` variants we /// take into consideration for the benchmarks. -pub enum HyperTwoVariants { - H2BM64(HyperTwoBits), - H2BM128(HyperTwoBits), - H2BM256(HyperTwoBits), - H2BM512(HyperTwoBits), - H2BM1024(HyperTwoBits), - H2BM2048(HyperTwoBits), - H2BM4096(HyperTwoBits), - H3BM64(HyperThreeBits), - H3BM128(HyperThreeBits), - H3BM256(HyperThreeBits), - H3BM512(HyperThreeBits), - H3BM1024(HyperThreeBits), - H3BM2048(HyperThreeBits), - H3BM4096(HyperThreeBits), +pub enum HyperTwoVariants { + H2BM64(HyperTwoBits), + H2BM128(HyperTwoBits), + H2BM256(HyperTwoBits), + H2BM512(HyperTwoBits), + H2BM1024(HyperTwoBits), + H2BM2048(HyperTwoBits), + H2BM4096(HyperTwoBits), + H3BM64(HyperThreeBits), + H3BM128(HyperThreeBits), + H3BM256(HyperThreeBits), + H3BM512(HyperThreeBits), + H3BM1024(HyperThreeBits), + H3BM2048(HyperThreeBits), + H3BM4096(HyperThreeBits), } #[allow(missing_docs)] @@ -51,389 +51,56 @@ pub enum HyperTwoVariants { #[derive(Clone, Named, ExtendableApproximatedSet, Estimator, TransparentMemSize, EnumIter)] /// Enumerations will all `HyperLogLog` variants we /// take into consideration for the benchmarks. -pub enum HLLVariants +pub enum HLLVariants where P: AllArrays + Named, +

>::Array: VariableWords, +

>::Array: VariableWords, +

>::Array: VariableWords, +

>::Packed: VariableWords, +

>::Packed: VariableWords, +

>::Packed: VariableWords, { - TabacHyperLogLogPlus(TabacHLLPlusPlus

), - TabacHyperLogLogPF(TabacHLL

), + TabacHyperLogLogPlus(TabacHLLPlusPlus), + TabacHyperLogLogPF(TabacHLL), SAHyperLogLog(AlecHLL

), RustHyperLogLog(RustHLL

), - CE4(CloudFlareHLL), - CE5(CloudFlareHLL), - CE6(CloudFlareHLL), + CE4(CloudFlareHLL), + CE5(CloudFlareHLL), + CE6(CloudFlareHLL), SimpleHLL(SimpleHLL), - PP4ArrayXxhasher( - PlusPlus>::Array, twox_hash::XxHash64>, - ), - PP4ArrayWyHash(PlusPlus>::Array, wyhash::WyHash>), - PP5ArrayXxhasher( - PlusPlus>::Array, twox_hash::XxHash64>, - ), - PP5ArrayWyHash(PlusPlus>::Array, wyhash::WyHash>), - PP6ArrayXxhasher( - PlusPlus>::Array, twox_hash::XxHash64>, - ), - PP6ArrayWyHash(PlusPlus>::Array, wyhash::WyHash>), - PP4PackedXxhasher( - PlusPlus< - P, - Bits4, -

>::Packed, - twox_hash::XxHash64, - >, - ), - PP4PackedWyHash( - PlusPlus>::Packed, wyhash::WyHash>, - ), - PP5PackedXxhasher( - PlusPlus< - P, - Bits5, -

>::Packed, - twox_hash::XxHash64, - >, - ), - PP5PackedWyHash( - PlusPlus>::Packed, wyhash::WyHash>, - ), - PP6PackedXxhasher( - PlusPlus< - P, - Bits6, -

>::Packed, - twox_hash::XxHash64, - >, - ), - PP6PackedWyHash( - PlusPlus>::Packed, wyhash::WyHash>, - ), - LLB4ArrayXxhasher( - LogLogBeta>::Array, twox_hash::XxHash64>, - ), - LLB4ArrayWyHash( - LogLogBeta>::Array, wyhash::WyHash>, - ), - LLB5ArrayXxhasher( - LogLogBeta>::Array, twox_hash::XxHash64>, - ), - LLB5ArrayWyHash( - LogLogBeta>::Array, wyhash::WyHash>, - ), - LLB6ArrayXxhasher( - LogLogBeta>::Array, twox_hash::XxHash64>, - ), - LLB6ArrayWyHash( - LogLogBeta>::Array, wyhash::WyHash>, - ), - LLB4PackedWyHash( - LogLogBeta< - P, - Bits4, -

>::Packed, - wyhash::WyHash, - >, - ), - LLB5PackedXxhasher( - LogLogBeta< - P, - Bits5, -

>::Packed, - twox_hash::XxHash64, - >, - ), - LLB5PackedWyHash( - LogLogBeta< - P, - Bits5, -

>::Packed, - wyhash::WyHash, - >, - ), - LLB6PackedXxhasher( - LogLogBeta< - P, - Bits6, -

>::Packed, - twox_hash::XxHash64, - >, - ), - LLB6PackedWyHash( - LogLogBeta< - P, - Bits6, -

>::Packed, - wyhash::WyHash, - >, - ), - MLEPP4WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLEPP5WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLEPP6WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLEPP4Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - MLEPP5Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - MLEPP6Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - MLELLB4WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLELLB5WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLELLB6WyHash( - MLE>::Array, wyhash::WyHash>>, - ), - MLELLB4Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - MLELLB5Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - MLELLB6Xxhasher( - MLE>::Array, twox_hash::XxHash64>>, - ), - - HybridPP4ArrayXxhasher( - Hybrid>::Array, twox_hash::XxHash64>>, - ), - HybridPP4ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridPP5ArrayXxhasher( - Hybrid>::Array, twox_hash::XxHash64>>, - ), - HybridPP5ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridPP6ArrayXxhasher( - Hybrid>::Array, twox_hash::XxHash64>>, - ), - HybridPP6ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridPP4PackedXxhasher( - Hybrid< - PlusPlus< - P, - Bits4, -

>::Packed, - twox_hash::XxHash64, - >, - >, - ), - HybridPP4PackedWyHash( - Hybrid< - PlusPlus< - P, - Bits4, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridPP5PackedXxhasher( - Hybrid< - PlusPlus< - P, - Bits5, -

>::Packed, - twox_hash::XxHash64, - >, - >, - ), - HybridPP5PackedWyHash( - Hybrid< - PlusPlus< - P, - Bits5, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridPP6PackedXxhasher( - Hybrid< - PlusPlus< - P, - Bits6, -

>::Packed, - twox_hash::XxHash64, - >, - >, - ), - HybridPP6PackedWyHash( - Hybrid< - PlusPlus< - P, - Bits6, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridLLB4ArrayXxhasher( - Hybrid< - LogLogBeta>::Array, twox_hash::XxHash64>, - >, - ), - HybridLLB4ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridLLB5ArrayXxhasher( - Hybrid< - LogLogBeta>::Array, twox_hash::XxHash64>, - >, - ), - HybridLLB5ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridLLB6ArrayXxhasher( - Hybrid< - LogLogBeta>::Array, twox_hash::XxHash64>, - >, - ), - HybridLLB6ArrayWyHash( - Hybrid>::Array, wyhash::WyHash>>, - ), - HybridLLB4PackedWyHash( - Hybrid< - LogLogBeta< - P, - Bits4, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridLLB5PackedXxhasher( - Hybrid< - LogLogBeta< - P, - Bits5, -

>::Packed, - twox_hash::XxHash64, - >, - >, - ), - HybridLLB5PackedWyHash( - Hybrid< - LogLogBeta< - P, - Bits5, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridLLB6PackedXxhasher( - Hybrid< - LogLogBeta< - P, - Bits6, -

>::Packed, - twox_hash::XxHash64, - >, - >, - ), - HybridLLB6PackedWyHash( - Hybrid< - LogLogBeta< - P, - Bits6, -

>::Packed, - wyhash::WyHash, - >, - >, - ), - HybridMLEPP4WyHash( - Hybrid>::Array, wyhash::WyHash>>>, - ), - HybridMLEPP5WyHash( - Hybrid>::Array, wyhash::WyHash>>>, - ), - HybridMLEPP6WyHash( - Hybrid>::Array, wyhash::WyHash>>>, - ), - HybridMLEPP4Xxhasher( - Hybrid< - MLE< - PlusPlus>::Array, twox_hash::XxHash64>, - >, - >, - ), - HybridMLEPP5Xxhasher( - Hybrid< - MLE< - PlusPlus>::Array, twox_hash::XxHash64>, - >, - >, - ), - HybridMLEPP6Xxhasher( - Hybrid< - MLE< - PlusPlus>::Array, twox_hash::XxHash64>, - >, - >, - ), - HybridMLELLB4WyHash( - Hybrid< - MLE>::Array, wyhash::WyHash>>, - >, - ), - HybridMLELLB5WyHash( - Hybrid< - MLE>::Array, wyhash::WyHash>>, - >, - ), - HybridMLELLB6WyHash( - Hybrid< - MLE>::Array, wyhash::WyHash>>, - >, - ), - HybridMLELLB4Xxhasher( - Hybrid< - MLE< - LogLogBeta< - P, - Bits4, -

>::Array, - twox_hash::XxHash64, - >, - >, - >, - ), - HybridMLELLB5Xxhasher( - Hybrid< - MLE< - LogLogBeta< - P, - Bits5, -

>::Array, - twox_hash::XxHash64, - >, - >, - >, - ), - HybridMLELLB6Xxhasher( - Hybrid< - MLE< - LogLogBeta< - P, - Bits6, -

>::Array, - twox_hash::XxHash64, - >, - >, - >, - ), + PP4ArrayXxhasher(PlusPlus>::Array, H>), + PP5ArrayXxhasher(PlusPlus>::Array, H>), + PP6ArrayXxhasher(PlusPlus>::Array, H>), + PP4PackedXxhasher(PlusPlus>::Packed, H>), + PP5PackedXxhasher(PlusPlus>::Packed, H>), + PP6PackedXxhasher(PlusPlus>::Packed, H>), + LLB4ArrayXxhasher(LogLogBeta>::Array, H>), + LLB5ArrayXxhasher(LogLogBeta>::Array, H>), + LLB6ArrayXxhasher(LogLogBeta>::Array, H>), + LLB5PackedXxhasher(LogLogBeta>::Packed, H>), + LLB6PackedXxhasher(LogLogBeta>::Packed, H>), + MLEPP4Xxhasher(MLE>::Array, H>>), + MLEPP5Xxhasher(MLE>::Array, H>>), + MLEPP6Xxhasher(MLE>::Array, H>>), + MLELLB4Xxhasher(MLE>::Array, H>>), + MLELLB5Xxhasher(MLE>::Array, H>>), + MLELLB6Xxhasher(MLE>::Array, H>>), + HybridPP4ArrayXxhasher(Hybrid>::Array, H>>), + HybridPP5ArrayXxhasher(Hybrid>::Array, H>>), + HybridPP6ArrayXxhasher(Hybrid>::Array, H>>), + HybridPP4PackedXxhasher(Hybrid>::Packed, H>>), + HybridPP5PackedXxhasher(Hybrid>::Packed, H>>), + HybridPP6PackedXxhasher(Hybrid>::Packed, H>>), + HybridLLB4ArrayXxhasher(Hybrid>::Array, H>>), + HybridLLB5ArrayXxhasher(Hybrid>::Array, H>>), + HybridLLB6ArrayXxhasher(Hybrid>::Array, H>>), + HybridLLB5PackedXxhasher(Hybrid>::Packed, H>>), + HybridLLB6PackedXxhasher(Hybrid>::Packed, H>>), + HybridMLEPP4Xxhasher(Hybrid>::Array, H>>>), + HybridMLEPP5Xxhasher(Hybrid>::Array, H>>>), + HybridMLEPP6Xxhasher(Hybrid>::Array, H>>>), + HybridMLELLB4Xxhasher(Hybrid>::Array, H>>>), + HybridMLELLB5Xxhasher(Hybrid>::Array, H>>>), + HybridMLELLB6Xxhasher(Hybrid>::Array, H>>>), } diff --git a/statistical_comparisons/src/estimation_tests.rs b/statistical_comparisons/src/estimation_tests.rs index 6008416..35d72a9 100644 --- a/statistical_comparisons/src/estimation_tests.rs +++ b/statistical_comparisons/src/estimation_tests.rs @@ -80,7 +80,9 @@ pub(crate) fn cardinality_test< let mut current_sample_rate = minimum_sample_interval; - for (i, element) in iter_var_len_random_values(2_000_000, None, random_state).enumerate() { + for (i, element) in + iter_random_values::(2_000_000, None, Some(random_state)).enumerate() + { estimator.insert(&element); if u64::try_from(i).unwrap() % current_sample_rate == 0 { @@ -144,8 +146,10 @@ pub(crate) fn union_test< right_random_state.wrapping_mul(thread_number + 1), )); - let mut left_iter = iter_var_len_random_values(2_000_000, Some(1_000_000), left_random_state); - let mut right_iter = iter_var_len_random_values(2_000_000, Some(1_000_000), right_random_state); + let mut left_iter = + iter_random_values::(2_000_000, Some(1_000_000), Some(left_random_state)); + let mut right_iter = + iter_random_values::(2_000_000, Some(1_000_000), Some(right_random_state)); let mut current_sample_rate = minimum_sample_interval; diff --git a/statistical_comparisons/src/main.rs b/statistical_comparisons/src/main.rs index db808ab..c56a849 100644 --- a/statistical_comparisons/src/main.rs +++ b/statistical_comparisons/src/main.rs @@ -2,26 +2,37 @@ use hyperloglog_rs::prelude::*; use statistical_comparisons::cartesian_wilcoxon_test; use statistical_comparisons::enumerations::*; use statistical_comparisons::reports_generator::SetTester; +use twox_hash::{XxHash64, xxh3::Hash64 as XxH3}; +use wyhash::WyHash; +use ahash::AHasher; /// Macro to generate the calls to the HLLVariant reports for precisions from 4 to 18. macro_rules! generate_hll_variant_reports { - ($($exponent:expr),*) => { + ($hasher:ty, $($exponent:expr),*) => { $( paste::item! { - HLLVariants::<$exponent, []>::prepare_cardinality_reports(); + HLLVariants::<$exponent, [], $hasher>::prepare_cardinality_reports(); // HLLVariants::<$exponent, []>::prepare_union_reports(); } )* }; } +macro_rules! generate_hll_variant_reports_per_hasher { + ($($hasher:ty),*) => { + $( + HyperTwoVariants::<$hasher>::prepare_cardinality_reports(); + // HyperTwoVariants::<$hasher>::prepare_union_reports(); + generate_hll_variant_reports!($hasher, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18); + )* + }; +} + fn main() { // We init the logger env_logger::init(); - HyperTwoVariants::prepare_cardinality_reports(); - // HyperTwoVariants::prepare_union_reports(); - generate_hll_variant_reports!(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18); + generate_hll_variant_reports_per_hasher!(XxHash64, XxH3, WyHash, AHasher); cartesian_wilcoxon_test("cardinality"); // cartesian_wilcoxon_test("union"); diff --git a/statistical_comparisons/src/proxy_implementations.rs b/statistical_comparisons/src/proxy_implementations.rs index 94908b6..999f8f6 100644 --- a/statistical_comparisons/src/proxy_implementations.rs +++ b/statistical_comparisons/src/proxy_implementations.rs @@ -1,4 +1,4 @@ -use std::hash::RandomState; +use core::hash::BuildHasher; use mem_dbg::{MemDbg, MemSize}; @@ -17,6 +17,26 @@ use sourmash::sketch::hyperloglog::HyperLogLog as SourMashHyperLogLog; use std::marker::PhantomData; use streaming_algorithms::HyperLogLog as SAHyperLogLog; +pub trait HasherBuilderAssociated: HasherType + MemSize{ + type Builder: BuildHasher + Default + Clone + Send + Sync + MemSize; +} + +impl HasherBuilderAssociated for twox_hash::XxHash64 { + type Builder = twox_hash::RandomXxHashBuilder64; +} + +impl HasherBuilderAssociated for twox_hash::xxh3::Hash64 { + type Builder = twox_hash::xxh3::RandomHashBuilder64; +} + +impl HasherBuilderAssociated for wyhash::WyHash { + type Builder = wyhash::WyHasherBuilder; +} + +impl HasherBuilderAssociated for ahash::AHasher { + type Builder = ahash::RandomState; +} + #[derive(Debug, Clone, Default, MemDbg, MemSize)] pub struct SimpleHLL { estimator: SimpleHyperLogLog

, @@ -28,13 +48,13 @@ pub struct CloudFlareHLL { } #[derive(Debug, Clone, Default, MemDbg, MemSize)] -pub struct HyperTwoBits { - estimator: H2B, +pub struct HyperTwoBits { + estimator: H2B } #[derive(Debug, Clone, Default, MemDbg, MemSize)] -pub struct HyperThreeBits { - estimator: H3B, +pub struct HyperThreeBits { + estimator: H3B } #[derive(Debug, Clone, MemDbg, MemSize)] @@ -74,30 +94,31 @@ impl Default for RustHLL

{ } #[derive(Clone, MemDbg, MemSize)] -pub struct TabacHLLPlusPlus { - estimator: TabacHyperLogLogPlus, +pub struct TabacHLLPlusPlus { + estimator: TabacHyperLogLogPlus, _precision: PhantomData

, } -impl Default for TabacHLLPlusPlus

{ +impl Default for TabacHLLPlusPlus { fn default() -> Self { Self { - estimator: TabacHyperLogLogPlus::new(P::EXPONENT, RandomState::default()).unwrap(), + estimator: TabacHyperLogLogPlus::new(P::EXPONENT, H::Builder::default()).unwrap(), _precision: PhantomData, } } } #[derive(Clone, MemDbg, MemSize)] -pub struct TabacHLL { - estimator: TabacHyperLogLogPF, +pub struct TabacHLL { + estimator: TabacHyperLogLogPF, _precision: PhantomData

, } -impl Default for TabacHLL

{ + +impl Default for TabacHLL { fn default() -> Self { Self { - estimator: TabacHyperLogLogPF::new(P::EXPONENT, RandomState::default()).unwrap(), + estimator: TabacHyperLogLogPF::new(P::EXPONENT, H::Builder::default()).unwrap(), _precision: PhantomData, } } @@ -126,21 +147,23 @@ impl hyperloglog_rs::prelude::Named for SimpleHLL

{ } #[cfg(feature = "std")] -impl hyperloglog_rs::prelude::Named for HyperTwoBits { +impl hyperloglog_rs::prelude::Named for HyperTwoBits { fn name(&self) -> String { format!( - "H2B<{}>", - std::any::type_name::().split("::").last().unwrap() + "H2B<{}> + {}", + std::any::type_name::().split("::").last().unwrap(), + std::any::type_name::().split("::").last().unwrap() ) } } #[cfg(feature = "std")] -impl hyperloglog_rs::prelude::Named for HyperThreeBits { +impl hyperloglog_rs::prelude::Named for HyperThreeBits { fn name(&self) -> String { format!( - "H3B<{}>", - std::any::type_name::().split("::").last().unwrap() + "H3B<{}> + {}", + std::any::type_name::().split("::").last().unwrap(), + std::any::type_name::().split("::").last().unwrap() ) } } @@ -174,16 +197,26 @@ impl hyperloglog_rs::prelude::Named for RustHLL

{ } #[cfg(feature = "std")] -impl hyperloglog_rs::prelude::Named for TabacHLLPlusPlus

{ +impl hyperloglog_rs::prelude::Named + for TabacHLLPlusPlus +{ fn name(&self) -> String { - format!("TabacPP + XxHash64", P::EXPONENT) + format!( + "TabacPP + {}", + P::EXPONENT, + std::any::type_name::().split("::").last().unwrap() + ) } } #[cfg(feature = "std")] -impl hyperloglog_rs::prelude::Named for TabacHLL

{ +impl hyperloglog_rs::prelude::Named for TabacHLL { fn name(&self) -> String { - format!("Tabac + XxHash64", P::EXPONENT) + format!( + "Tabac + {}", + P::EXPONENT, + std::any::type_name::().split("::").last().unwrap() + ) } } @@ -203,14 +236,14 @@ impl ExtendableApproximatedSet for SimpleHLL

{ } } -impl ExtendableApproximatedSet for HyperTwoBits { +impl ExtendableApproximatedSet for HyperTwoBits { fn insert(&mut self, item: &u64) -> bool { self.estimator.insert(item); true } } -impl ExtendableApproximatedSet for HyperThreeBits { +impl ExtendableApproximatedSet for HyperThreeBits { fn insert(&mut self, item: &u64) -> bool { self.estimator.insert(item); true @@ -242,14 +275,16 @@ impl ExtendableApproximatedSet for RustHLL

{ } } -impl ExtendableApproximatedSet for TabacHLLPlusPlus

{ +impl ExtendableApproximatedSet + for TabacHLLPlusPlus +{ fn insert(&mut self, item: &u64) -> bool { self.estimator.insert(item); true } } -impl ExtendableApproximatedSet for TabacHLL

{ +impl ExtendableApproximatedSet for TabacHLL { fn insert(&mut self, item: &u64) -> bool { self.estimator.insert(item); true @@ -272,6 +307,12 @@ impl Estimator for SimpleHLL

{ self.estimator.count() as f64 } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!( + "SimpleHLL does not support estimating union cardinality with cardinalities." + ) + } + #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -292,6 +333,12 @@ impl Estimator for CloudFlar self.estimator.estimate() as f64 } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!( + "CloudFlareHLL does not support estimating union cardinality with cardinalities." + ) + } + #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -303,7 +350,7 @@ impl Estimator for CloudFlar } } -impl Estimator for HyperTwoBits { +impl Estimator for HyperTwoBits { #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -312,6 +359,12 @@ impl Estimator for Hype self.estimator.count() as f64 } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!( + "HyperTwoBits does not support estimating union cardinality with cardinalities." + ) + } + #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -323,7 +376,7 @@ impl Estimator for Hype } } -impl Estimator for HyperThreeBits { +impl Estimator for HyperThreeBits { #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -332,6 +385,12 @@ impl Estimator for Hype self.estimator.count() as f64 } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!( + "HyperThreeBits does not support estimating union cardinality with cardinalities." + ) + } + #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -352,6 +411,10 @@ impl Estimator for SourMash

{ self.estimator.cardinality() as f64 } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!("SourMash does not support estimating union cardinality with cardinalities.") + } + #[expect( clippy::cast_precision_loss, reason = "We do not expect to exceeed 2**54 in set cardinality in our tests." @@ -366,6 +429,10 @@ impl Estimator for RustHLL

{ self.estimator.len() } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!("RustHLL does not support estimating union cardinality with cardinalities.") + } + fn estimate_union_cardinality(&self, other: &Self) -> f64 { let mut copy = self.clone(); copy.estimator.merge(&other.estimator); @@ -373,11 +440,17 @@ impl Estimator for RustHLL

{ } } -impl Estimator for TabacHLLPlusPlus

{ +impl Estimator for TabacHLLPlusPlus { fn estimate_cardinality(&self) -> f64 { self.estimator.clone().count() } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!( + "TabacHLLPlusPlus does not support estimating union cardinality with cardinalities." + ) + } + fn estimate_union_cardinality(&self, other: &Self) -> f64 { let mut copy = self.clone(); copy.estimator.merge(&other.estimator).unwrap(); @@ -385,11 +458,15 @@ impl Estimator for TabacHLLPlusPlus

{ } } -impl Estimator for TabacHLL

{ +impl Estimator for TabacHLL { fn estimate_cardinality(&self) -> f64 { self.estimator.clone().count() } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!("TabacHLL does not support estimating union cardinality with cardinalities.") + } + fn estimate_union_cardinality(&self, _other: &Self) -> f64 { let mut copy = self.clone(); copy.estimator.merge(&self.estimator).unwrap(); @@ -402,6 +479,10 @@ impl Estimator for AlecHLL

{ self.estimator.len() } + fn estimate_union_cardinality_with_cardinalities(&self, _: &Self, _: f64, _: f64) -> f64 { + unimplemented!("AlecHLL does not support estimating union cardinality with cardinalities.") + } + fn estimate_union_cardinality(&self, other: &Self) -> f64 { let mut copy = self.clone(); copy.estimator.union(&other.estimator); diff --git a/tests/test_hll.rs b/tests/test_hll.rs index 3c625a5..c2c6bc0 100644 --- a/tests/test_hll.rs +++ b/tests/test_hll.rs @@ -1,3 +1,4 @@ +use ahash::AHasher; use hyperloglog_derive::test_estimator; use hyperloglog_rs::prelude::*; use twox_hash::XxHash; @@ -138,6 +139,28 @@ fn test_mle_beta, H: HasherType>() { test_approximated_counter_at_precision_and_bits::>>(); } +#[test_estimator] +#[cfg(feature = "mle")] +fn test_hybrid_mle_plusplus< + P: Precision, + B: Bits, + R: Registers + VariableWords, + H: HasherType, +>() { + test_approximated_counter_at_precision_and_bits::>>>(); +} + +#[test_estimator] +#[cfg(feature = "mle")] +fn test_hybrid_mle_beta< + P: Precision, + B: Bits, + R: Registers + VariableWords, + H: HasherType, +>() { + test_approximated_counter_at_precision_and_bits::>>>(); +} + #[test_estimator] fn test_hybrid_plusplus< P: Precision, @@ -181,26 +204,44 @@ fn test_hybrid_beta< fn test_hybrid_plusplus_low_bits_hash() { test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Array, XxHash>, u8>, + Hybrid< + PlusPlus>::Array, XxHash>, + u8, + >, >(); test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Array, XxHash>, u16>, + Hybrid< + PlusPlus>::Array, XxHash>, + u16, + >, >(); test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Array, XxHash>, u24>, + Hybrid< + PlusPlus>::Array, XxHash>, + u24, + >, >(); test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Packed, XxHash>, u8>, + Hybrid< + PlusPlus>::Packed, XxHash>, + u8, + >, >(); test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Packed, XxHash>, u16>, + Hybrid< + PlusPlus>::Packed, XxHash>, + u16, + >, >(); test_approximated_counter_at_precision_and_bits::< Precision4, - Hybrid>::Packed, XxHash>, u24>, + Hybrid< + PlusPlus>::Packed, XxHash>, + u24, + >, >(); -} \ No newline at end of file +}