diff --git a/rayon-demo/src/sort.rs b/rayon-demo/src/sort.rs index baad4d8b4..00fc7bcd3 100644 --- a/rayon-demo/src/sort.rs +++ b/rayon-demo/src/sort.rs @@ -79,6 +79,17 @@ macro_rules! sort { }; } +macro_rules! sort_keys { + ($f:ident, $name:ident, $gen:expr, $len:expr) => { + #[bench] + fn $name(b: &mut Bencher) { + let v = $gen($len); + b.iter(|| v.clone().$f(ToString::to_string)); + b.bytes = $len * mem::size_of_val(&$gen(1)[0]) as u64; + } + }; +} + macro_rules! sort_strings { ($f:ident, $name:ident, $gen:expr, $len:expr) => { #[bench] @@ -136,6 +147,13 @@ sort!(par_sort, par_sort_random, gen_random, 50_000); sort!(par_sort, par_sort_big, gen_big_random, 50_000); sort_strings!(par_sort, par_sort_strings, gen_strings, 50_000); sort_expensive!(par_sort_by, par_sort_expensive, gen_random, 50_000); +sort_keys!(par_sort_by_key, par_sort_by_key, gen_random, 50_000); +sort_keys!( + par_sort_by_cached_key, + par_sort_by_cached_key, + gen_random, + 50_000 +); sort!( par_sort_unstable, @@ -185,6 +203,12 @@ sort_expensive!( gen_random, 50_000 ); +sort_keys!( + par_sort_unstable_by_key, + par_sort_unstable_by_key, + gen_random, + 50_000 +); trait MergeSort { fn demo_merge_sort(&mut self);