Skip to content

Commit 785e3c3

Browse files
committed
Add lexicographic sorting benchmark
1 parent 81edd17 commit 785e3c3

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/liballoc/benches/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#![feature(i128_type)]
1414
#![feature(rand)]
1515
#![feature(repr_simd)]
16+
#![feature(slice_sort_by_cached_key)]
1617
#![feature(test)]
1718

1819
extern crate rand;

src/liballoc/benches/slice.rs

+15
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,17 @@ macro_rules! sort_expensive {
284284
}
285285
}
286286

287+
macro_rules! sort_lexicographic {
288+
($f:ident, $name:ident, $gen:expr, $len:expr) => {
289+
#[bench]
290+
fn $name(b: &mut Bencher) {
291+
let v = $gen($len);
292+
b.iter(|| v.clone().$f(|x| x.to_string()));
293+
b.bytes = $len * mem::size_of_val(&$gen(1)[0]) as u64;
294+
}
295+
}
296+
}
297+
287298
sort!(sort, sort_small_ascending, gen_ascending, 10);
288299
sort!(sort, sort_small_descending, gen_descending, 10);
289300
sort!(sort, sort_small_random, gen_random, 10);
@@ -312,6 +323,10 @@ sort!(sort_unstable, sort_unstable_large_big, gen_big_random, 10000);
312323
sort_strings!(sort_unstable, sort_unstable_large_strings, gen_strings, 10000);
313324
sort_expensive!(sort_unstable_by, sort_unstable_large_expensive, gen_random, 10000);
314325

326+
sort_lexicographic!(sort_by_key, sort_by_key_lexicographic, gen_random, 10000);
327+
sort_lexicographic!(sort_unstable_by_key, sort_unstable_by_key_lexicographic, gen_random, 10000);
328+
sort_lexicographic!(sort_by_cached_key, sort_by_cached_key_lexicographic, gen_random, 10000);
329+
315330
macro_rules! reverse {
316331
($name:ident, $ty:ty, $f:expr) => {
317332
#[bench]

0 commit comments

Comments
 (0)