// #![feature(vec_push_all)] // #![feature(test)] // #![feature(collections)] // // use rand::{Rng, SeedableRng, StdRng, Rand}; // use test::Bencher; // // use differential_dataflow::sort::*; // use differential_dataflow::sort::radix::*; // // fn random_vec(size: usize) -> Vec { // let seed: &[_] = &[1, 2, 3, 4]; // let mut rng: StdRng = SeedableRng::from_seed(seed); // // println!("{}", rng.gen::()); // // let mut result = Vec::with_capacity(size); // for _ in 0..size { // result.push(rng.gen()); // } // // result // } // // #[bench] // fn bench_rand_exp8(bencher: &mut Bencher) { // let mut data = random_vec::<(u32, u32)>(1 << 16); // // let mut src = Vec::new(); // for _ in 0..256 { src.push(Vec::with_capacity(data.len())); } // // let mut dst = Vec::new(); // for _ in 0..256 { dst.push(Vec::with_capacity(data.len())); } // // bencher.bytes = 1 << 16; // bencher.iter(|| { // for s in &mut src { s.clear(); } // for d in &mut dst { d.clear(); } // src[0].push_all(&data[..]); // // rsort_experimental8_buf(&mut src, &mut dst, &|x| x.0 as u64); // rsort_experimental8_buf(&mut dst, &mut src, &|x| x.0 as u64 >> 8); // rsort_experimental8_buf(&mut src, &mut dst, &|x| x.0 as u64 >> 16); // rsort_experimental8_buf(&mut dst, &mut src, &|x| x.0 as u64 >> 24); // for s in &mut src { isort_by(s, &|x| x); } // }); // } // // // fn bench_rand(bencher: &mut Bencher, mut func: F) { // let mut data = random_vec::<(u32, T)>(1 << 16); // let mut data2 = Vec::new(); // // bencher.bytes = 1 << 16; // bencher.iter(|| { // data2.clear(); // data2.push_all(&data[..]); // func(&mut data2) // }); // } // // // fn bench_sort(bencher: &mut Bencher, mut func: F) { // // let mut data = random_vec::<(u32, T)>(1 << 16); // // let mut data2 = Vec::new(); // // // // func(&mut data); // // // // bencher.bytes = 1 << 16; // // bencher.iter(|| { // // data2.clear(); // // data2.push_all(&data[..]); // // func(&mut data2) // // }); // // } // // fn bench_same(bencher: &mut Bencher, mut func: F) { // // let mut data = random_vec::<(u32, T)>(1 << 16); // // let mut data2 = Vec::new(); // // // // for i in 0..data.len() { data[i].0 = 0; } // // // // bencher.bytes = 1 << 16; // // bencher.iter(|| { // // data2.clear(); // // data2.push_all(&data[..]); // // func(&mut data2) // // }); // // } // // // #[bench] fn rand_sort(bencher: &mut Bencher) { // // bench_rand::(bencher, |x| x.sort()); // // } // // // // #[bench] fn rand_qsort(bencher: &mut Bencher) { // // bench_rand::(bencher, |x| qsort_by(x, &|y|&y.0)); // // } // // // #[bench] fn rand_rsort(bencher: &mut Bencher) { // // bench_rand::(bencher, |x| rsort_msb(x, &|y|y.0 as u64, &|z| qsort_by(z, &|w|&w.0))); // // } // // // // #[bench] fn rand_rsort_safe(bencher: &mut Bencher) { // // bench_rand::(bencher, |x| rsort_msb_safe(x, &|y|y.0 as u64, &|z| qsort_by(z, &|w|&w.0))); // // } // // #[bench] fn rand_rsort_bsaf(bencher: &mut Bencher) { // let mut buffer = vec![(0u32, 0u32); 8 * 256]; // bench_rand::(bencher, |x| rsort_msb_buf(x, &mut buffer[..], &|y|y.0 as u64, &|z| qsort_by(z, &|q| q))); // } // // #[bench] fn rand_rsort_c(bencher: &mut Bencher) { // bench_rand::(bencher, |x| rsort_msb_clv(x, &|y|y.0 as u64, &|z| qsort_by(z, &|q| q))); // } // // // #[bench] fn same_sort(bencher: &mut Bencher) { // // bench_same::<(u32, u32), _>(bencher, |x| x.sort()); // // } // // // // #[bench] fn same_qsort(bencher: &mut Bencher) { // // bench_same::<(u32, u32), _>(bencher, |x| qsort_by(x, &|y|&y.0)); // // } // // // // #[bench] fn same_rsort(bencher: &mut Bencher) { // // bench_same::<(u32, u32), _>(bencher, |x| rsort_msb(x, &|y|y.0 as u64, &|z| qsort_by(z, &|w|&w.0))); // // } // // // // #[bench] fn sort_sort(bencher: &mut Bencher) { // // bench_sort::<(u32, u32), _>(bencher, |x| x.sort()); // // } // // // // #[bench] fn sort_qsort(bencher: &mut Bencher) { // // bench_sort::<(u32, u32), _>(bencher, |x| qsort_by(x, &|y|&y.0)); // // } // // // // #[bench] fn sort_rsort(bencher: &mut Bencher) { // // bench_sort::<(u32, u32), _>(bencher, |x| rsort_msb(x, &|y|y.0 as u64, &|z| qsort_by(z, &|w|&w.0))); // // }