Guest User

Untitled

a guest
May 24th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. extern crate itertools;
  2. extern crate rand;
  3. use rand::Rng;
  4. use itertools::Itertools;
  5. use std::time::Instant;
  6.  
  7. fn do_all_equal(v: &Vec<i32>) -> bool {
  8. v.iter().all_equal()
  9. }
  10. fn do_all_equal_for(v: &Vec<i32>) -> bool {
  11. for i in v {
  12. if i != &v[0] {
  13. return false;
  14. }
  15. }
  16. true
  17. }
  18. fn do_any_diff(v: &Vec<i32>) -> bool {
  19. v.iter().any(|x| x != &v[0])
  20. }
  21. fn main() {
  22. //let mut v = vec![0; 5_000_000];
  23. //v.extend(vec![1; 5_000_000]);
  24. let mut rng = rand::thread_rng();
  25. let mut v: Vec<i32> = (0..5_000_000).map(|_| rng.gen_range(1, 2)).collect();
  26. v.extend((0..5_000_000).map(|_| rng.gen_range(2, 3)) .collect::<Vec<i32>>());
  27. let mut start = Instant::now();
  28. do_all_equal(&v);
  29. let mut elapsed = start.elapsed();
  30. println!( "all_equal: {} msecs", elapsed.as_secs() * 1_000 + (elapsed.subsec_nanos() / 1_000_000) as u64);
  31.  
  32. start = Instant::now();
  33. do_any_diff(&v);
  34. elapsed = start.elapsed();
  35. println!( "any_diff: {} msecs", elapsed.as_secs() * 1_000 + (elapsed.subsec_nanos() / 1_000_000) as u64);
  36.  
  37. start = Instant::now();
  38. do_all_equal_for(&v);
  39. elapsed = start.elapsed();
  40. println!( "for loop: {} msecs", elapsed.as_secs() * 1_000 + (elapsed.subsec_nanos() / 1_000_000) as u64);
  41. }
Add Comment
Please, Sign In to add comment