about summary refs log tree commit diff
path: root/src/liballoc/benches/slice.rs
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-03-18 12:37:06 +0000
committervarkor <github@varkor.com>2018-03-18 12:50:58 +0000
commit785e3c38fe6c49e39aec145c81e463ceb60d179e (patch)
treebb4fa8a56ce5a8f31bf9f80d6b7f4d376374dbed /src/liballoc/benches/slice.rs
parent81edd1796b463776d111cd4fe48e866dd716dfab (diff)
downloadrust-785e3c38fe6c49e39aec145c81e463ceb60d179e.tar.gz
rust-785e3c38fe6c49e39aec145c81e463ceb60d179e.zip
Add lexicographic sorting benchmark
Diffstat (limited to 'src/liballoc/benches/slice.rs')
-rw-r--r--src/liballoc/benches/slice.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/liballoc/benches/slice.rs b/src/liballoc/benches/slice.rs
index ee5182a1d46..a699ff9c0a7 100644
--- a/src/liballoc/benches/slice.rs
+++ b/src/liballoc/benches/slice.rs
@@ -284,6 +284,17 @@ macro_rules! sort_expensive {
     }
 }
 
+macro_rules! sort_lexicographic {
+    ($f:ident, $name:ident, $gen:expr, $len:expr) => {
+        #[bench]
+        fn $name(b: &mut Bencher) {
+            let v = $gen($len);
+            b.iter(|| v.clone().$f(|x| x.to_string()));
+            b.bytes = $len * mem::size_of_val(&$gen(1)[0]) as u64;
+        }
+    }
+}
+
 sort!(sort, sort_small_ascending, gen_ascending, 10);
 sort!(sort, sort_small_descending, gen_descending, 10);
 sort!(sort, sort_small_random, gen_random, 10);
@@ -312,6 +323,10 @@ sort!(sort_unstable, sort_unstable_large_big, gen_big_random, 10000);
 sort_strings!(sort_unstable, sort_unstable_large_strings, gen_strings, 10000);
 sort_expensive!(sort_unstable_by, sort_unstable_large_expensive, gen_random, 10000);
 
+sort_lexicographic!(sort_by_key, sort_by_key_lexicographic, gen_random, 10000);
+sort_lexicographic!(sort_unstable_by_key, sort_unstable_by_key_lexicographic, gen_random, 10000);
+sort_lexicographic!(sort_by_cached_key, sort_by_cached_key_lexicographic, gen_random, 10000);
+
 macro_rules! reverse {
     ($name:ident, $ty:ty, $f:expr) => {
         #[bench]