about summary refs log tree commit diff
path: root/src/libstd/io
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2014-07-05 22:31:57 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2014-07-05 23:11:21 -0700
commit90fe1a632bd38633006ea53f92a1da14944fd835 (patch)
tree3d9b8aab9a6502041553817cb8fe75d8a4e56ce8 /src/libstd/io
parentf1ea540e9024db9b5d2e6a6e92431875feb345b3 (diff)
downloadrust-90fe1a632bd38633006ea53f92a1da14944fd835.tar.gz
rust-90fe1a632bd38633006ea53f92a1da14944fd835.zip
std: flesh out MemWriter benchmarks
Diffstat (limited to 'src/libstd/io')
-rw-r--r--src/libstd/io/mem.rs54
1 files changed, 49 insertions, 5 deletions
diff --git a/src/libstd/io/mem.rs b/src/libstd/io/mem.rs
index 3443a85b468..e2500fd00be 100644
--- a/src/libstd/io/mem.rs
+++ b/src/libstd/io/mem.rs
@@ -607,18 +607,62 @@ mod test {
         assert_eq!(buf.as_slice(), &[7, 8, 6]);
     }
 
-    #[bench]
-    fn bench_mem_writer(b: &mut Bencher) {
+    fn do_bench_mem_writer(b: &mut Bencher, times: uint, len: uint) {
+        let src: Vec<u8> = Vec::from_elem(len, 5);
+
         b.iter(|| {
             let mut wr = MemWriter::new();
-            for _i in range(0u, 10) {
-                wr.write([5, .. 10]).unwrap();
+            for _ in range(0, times) {
+                wr.write(src.as_slice()).unwrap();
             }
-            assert_eq!(wr.unwrap().as_slice(), [5, .. 100].as_slice());
+
+            let v = wr.unwrap();
+            assert_eq!(v.len(), times * len);
+            assert!(v.iter().all(|x| *x == 5));
         });
     }
 
     #[bench]
+    fn bench_mem_writer_001_0000(b: &mut Bencher) {
+        do_bench_mem_writer(b, 1, 0)
+    }
+
+    #[bench]
+    fn bench_mem_writer_001_0010(b: &mut Bencher) {
+        do_bench_mem_writer(b, 1, 10)
+    }
+
+    #[bench]
+    fn bench_mem_writer_001_0100(b: &mut Bencher) {
+        do_bench_mem_writer(b, 1, 100)
+    }
+
+    #[bench]
+    fn bench_mem_writer_001_1000(b: &mut Bencher) {
+        do_bench_mem_writer(b, 1, 1000)
+    }
+
+    #[bench]
+    fn bench_mem_writer_100_0000(b: &mut Bencher) {
+        do_bench_mem_writer(b, 100, 0)
+    }
+
+    #[bench]
+    fn bench_mem_writer_100_0010(b: &mut Bencher) {
+        do_bench_mem_writer(b, 100, 10)
+    }
+
+    #[bench]
+    fn bench_mem_writer_100_0100(b: &mut Bencher) {
+        do_bench_mem_writer(b, 100, 100)
+    }
+
+    #[bench]
+    fn bench_mem_writer_100_1000(b: &mut Bencher) {
+        do_bench_mem_writer(b, 100, 1000)
+    }
+
+    #[bench]
     fn bench_mem_reader(b: &mut Bencher) {
         b.iter(|| {
             let buf = Vec::from_slice([5 as u8, ..100]);