cuckoo_params.rs 1.0 KB

12345678910111213141516171819202122
  1. use utils::cuckoo::{Hasher, Parameters};
  2. use utils::hash::AesHashFunction;
  3. fn main() {
  4. let log_domain_sizes = [4, 8, 12, 16, 20, 24, 26];
  5. println!("domain inputs #bucks maxbucks avgbucks #emptybucks");
  6. for log_domain_size in log_domain_sizes {
  7. let log_number_inputs = log_domain_size / 2;
  8. let params = Parameters::<AesHashFunction<u16>, _>::sample(1 << log_number_inputs);
  9. let number_buckets = params.get_number_buckets();
  10. let hasher = Hasher::new(params);
  11. let buckets = hasher.hash_domain_into_buckets(1 << log_domain_size);
  12. let max_bucket_size = buckets.iter().map(|b| b.len()).max().unwrap();
  13. let avg_bucket_size = buckets.iter().map(|b| b.len()).sum::<usize>() / number_buckets;
  14. let number_empty_buckets = buckets.iter().map(|b| b.len()).filter(|&l| l == 0).count();
  15. println!(
  16. "{log_domain_size:6} {log_number_inputs:6} {number_buckets:6} {max_bucket_size:8} {avg_bucket_size:8} {number_empty_buckets:11}"
  17. );
  18. }
  19. }