about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-11-27 19:47:15 -0800
committerbors <bors@rust-lang.org>2013-11-27 19:47:15 -0800
commit68e3292fd79230f00745dc7608f4d80329c776bb (patch)
tree97b7e7ea2fe8aa4525d6bcfeef7ecf6e99d08261 /src/libstd
parentdb5b51ae634830ac07b199a0842ef839d3809d8e (diff)
parent26ba64dca9486a910a6e191d27841ebff800928c (diff)
downloadrust-68e3292fd79230f00745dc7608f4d80329c776bb.tar.gz
rust-68e3292fd79230f00745dc7608f4d80329c776bb.zip
auto merge of #10691 : g3xzh/rust/benchm, r=cmr
I have written some benchmark tests to `push`, `push_many`, `join`,
`join_many` and `ends_with_path`.

Let me know what you think (@cmr).
Thanks in advance.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/path/posix.rs86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs
index ddfb43ed56f..9b6b82266a2 100644
--- a/src/libstd/path/posix.rs
+++ b/src/libstd/path/posix.rs
@@ -1319,3 +1319,89 @@ mod tests {
         // the full set of tests
     }
 }
+
+#[cfg(test)]
+mod bench {
+    use extra::test::BenchHarness;
+    use super::*;
+
+    #[bench]
+    fn join_home_dir(bh: &mut BenchHarness) {
+        let posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.join("home");
+        });
+    }
+
+    #[bench]
+    fn join_abs_path_home_dir(bh: &mut BenchHarness) {
+        let posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.join("/home");
+        });
+    }
+
+    #[bench]
+    fn join_many_home_dir(bh: &mut BenchHarness) {
+        let posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.join_many(&["home"]);
+        });
+    }
+
+    #[bench]
+    fn join_many_abs_path_home_dir(bh: &mut BenchHarness) {
+        let posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.join_many(&["/home"]);
+        });
+    }
+
+    #[bench]
+    fn push_home_dir(bh: &mut BenchHarness) {
+        let mut posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.push("home");
+        });
+    }
+
+    #[bench]
+    fn push_abs_path_home_dir(bh: &mut BenchHarness) {
+        let mut posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.push("/home");
+        });
+    }
+
+    #[bench]
+    fn push_many_home_dir(bh: &mut BenchHarness) {
+        let mut posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.push_many(&["home"]);
+        });
+    }
+
+    #[bench]
+    fn push_many_abs_path_home_dir(bh: &mut BenchHarness) {
+        let mut posix_path = Path::new("/");
+        bh.iter(|| {
+            posix_path.push_many(&["/home"]);
+        });
+    }
+
+    #[bench]
+    fn ends_with_path_home_dir(bh: &mut BenchHarness) {
+        let posix_home_path = Path::new("/home");
+        bh.iter(|| {
+            posix_home_path.ends_with_path(&Path::new("home"));
+        });
+    }
+
+    #[bench]
+    fn ends_with_path_missmatch_jome_home(bh: &mut BenchHarness) {
+        let posix_home_path = Path::new("/home");
+        bh.iter(|| {
+            posix_home_path.ends_with_path(&Path::new("jome"));
+        });
+    }
+}