Rust implementation of the CVM algorithm for counting distinct elements in a stream
0

Configure Feed

Select the types of activity you want to include in your feed.

Add HashSet benchmark for comparison

+19 -2
+19 -2
benches/benchmarks.rs
··· 11 11 use rand::{thread_rng, Rng}; 12 12 use regex::Regex; 13 13 14 + use rustc_hash::FxHashSet; 15 + 14 16 // generate 1 million 7-digit random positive integers 15 17 fn generate_random_numbers() -> Vec<i32> { 16 18 let mut rng = thread_rng(); ··· 64 66 let digits = generate_random_numbers(); 65 67 b.iter(|| { 66 68 let mut int_counter: CVM<i32> = CVM::new(epsilon, delta, stream_size); 67 - digits.iter().for_each(|integer| int_counter.process_element(*integer)); 69 + digits 70 + .iter() 71 + .for_each(|integer| int_counter.process_element(*integer)); 68 72 int_counter.calculate_final_result() 69 73 }) 70 - } 74 + }, 75 + ); 76 + c.bench_function( 77 + "Count uniques in ten million 7-digit random positive integers: HashSet", 78 + |b| { 79 + let digits = generate_random_numbers(); 80 + b.iter(|| { 81 + let mut hs = FxHashSet::with_hasher(Default::default()); 82 + digits.iter().for_each(|digit| { 83 + hs.insert(digit); 84 + }); 85 + digits.len() 86 + }) 87 + }, 71 88 ); 72 89 } 73 90