about summary refs log tree commit diff
path: root/src/libstd/path
diff options
context:
space:
mode:
authorg3xzh <g3xzh@yahoo.com>2013-12-25 02:56:59 +0200
committerg3xzh <g3xzh@yahoo.com>2013-12-30 22:59:48 +0200
commit9f1adf07ad3033238d6041c70df1159dd10b8aa3 (patch)
treeaa25a7d55c115976123f2118b10edaa094c394c6 /src/libstd/path
parentb8c87fd9fe649d3211bb53754fb692a825ecfdff (diff)
downloadrust-9f1adf07ad3033238d6041c70df1159dd10b8aa3.tar.gz
rust-9f1adf07ad3033238d6041c70df1159dd10b8aa3.zip
Add more benchmark tests to path/posix
Benchmark testing `is_ancestor_of` and `path_relative_from`
Diffstat (limited to 'src/libstd/path')
-rw-r--r--src/libstd/path/posix.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs
index 3f2535765dd..d149634a396 100644
--- a/src/libstd/path/posix.rs
+++ b/src/libstd/path/posix.rs
@@ -1404,4 +1404,45 @@ mod bench {
             posix_home_path.ends_with_path(&Path::new("jome"));
         });
     }
+
+    #[bench]
+    fn is_ancestor_of_path_with_10_dirs(bh: &mut BenchHarness) {
+        let path = Path::new("/home/1/2/3/4/5/6/7/8/9");
+        let mut sub = path.clone();
+        sub.pop();
+        bh.iter(|| {
+            path.is_ancestor_of(&sub);
+        });
+    }
+
+    #[bench]
+    fn path_relative_from_forward(bh: &mut BenchHarness) {
+        let path = Path::new("/a/b/c");
+        let mut other = path.clone();
+        other.pop();
+        bh.iter(|| {
+            path.path_relative_from(&other);
+        });
+    }
+
+    #[bench]
+    fn path_relative_from_same_level(bh: &mut BenchHarness) {
+        let path = Path::new("/a/b/c");
+        let mut other = path.clone();
+        other.pop();
+        other.push("d");
+        bh.iter(|| {
+            path.path_relative_from(&other);
+        });
+    }
+
+    #[bench]
+    fn path_relative_from_backward(bh: &mut BenchHarness) {
+        let path = Path::new("/a/b");
+        let mut other = path.clone();
+        other.push("c");
+        bh.iter(|| {
+            path.path_relative_from(&other);
+        });
+    }
 }