Skip to content

Commit 90fe1a6

Browse files
committed
std: flesh out MemWriter benchmarks
1 parent f1ea540 commit 90fe1a6

File tree

1 file changed

+49
-5
lines changed

1 file changed

+49
-5
lines changed

src/libstd/io/mem.rs

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -607,17 +607,61 @@ mod test {
607607
assert_eq!(buf.as_slice(), &[7, 8, 6]);
608608
}
609609

610-
#[bench]
611-
fn bench_mem_writer(b: &mut Bencher) {
610+
fn do_bench_mem_writer(b: &mut Bencher, times: uint, len: uint) {
611+
let src: Vec<u8> = Vec::from_elem(len, 5);
612+
612613
b.iter(|| {
613614
let mut wr = MemWriter::new();
614-
for _i in range(0u, 10) {
615-
wr.write([5, .. 10]).unwrap();
615+
for _ in range(0, times) {
616+
wr.write(src.as_slice()).unwrap();
616617
}
617-
assert_eq!(wr.unwrap().as_slice(), [5, .. 100].as_slice());
618+
619+
let v = wr.unwrap();
620+
assert_eq!(v.len(), times * len);
621+
assert!(v.iter().all(|x| *x == 5));
618622
});
619623
}
620624

625+
#[bench]
626+
fn bench_mem_writer_001_0000(b: &mut Bencher) {
627+
do_bench_mem_writer(b, 1, 0)
628+
}
629+
630+
#[bench]
631+
fn bench_mem_writer_001_0010(b: &mut Bencher) {
632+
do_bench_mem_writer(b, 1, 10)
633+
}
634+
635+
#[bench]
636+
fn bench_mem_writer_001_0100(b: &mut Bencher) {
637+
do_bench_mem_writer(b, 1, 100)
638+
}
639+
640+
#[bench]
641+
fn bench_mem_writer_001_1000(b: &mut Bencher) {
642+
do_bench_mem_writer(b, 1, 1000)
643+
}
644+
645+
#[bench]
646+
fn bench_mem_writer_100_0000(b: &mut Bencher) {
647+
do_bench_mem_writer(b, 100, 0)
648+
}
649+
650+
#[bench]
651+
fn bench_mem_writer_100_0010(b: &mut Bencher) {
652+
do_bench_mem_writer(b, 100, 10)
653+
}
654+
655+
#[bench]
656+
fn bench_mem_writer_100_0100(b: &mut Bencher) {
657+
do_bench_mem_writer(b, 100, 100)
658+
}
659+
660+
#[bench]
661+
fn bench_mem_writer_100_1000(b: &mut Bencher) {
662+
do_bench_mem_writer(b, 100, 1000)
663+
}
664+
621665
#[bench]
622666
fn bench_mem_reader(b: &mut Bencher) {
623667
b.iter(|| {

0 commit comments

Comments
 (0)