Skip to content

Commit 825b127

Browse files
committed
auto merge of #10441 : cmr/rust/bench_bufferedstream, r=alexcrichton
#10424 did optimizations without adding a way to measure their effect and ensure no regressions. This fixes that.
2 parents 1bfa45c + 67692b2 commit 825b127

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/libstd/io/buffered.rs

+42
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,27 @@ mod test {
351351
use super::*;
352352
use io;
353353
use super::super::mem::{MemReader, MemWriter};
354+
use Harness = extra::test::BenchHarness;
355+
356+
/// A type, free to create, primarily intended for benchmarking creation of wrappers that, just
357+
/// for construction, don't need a Reader/Writer that does anything useful. Is equivalent to
358+
/// `/dev/null` in semantics.
359+
#[deriving(Clone,Eq,Ord)]
360+
pub struct NullStream;
361+
362+
impl Reader for NullStream {
363+
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
364+
None
365+
}
366+
367+
fn eof(&mut self) -> bool {
368+
true
369+
}
370+
}
371+
372+
impl Writer for NullStream {
373+
fn write(&mut self, _: &[u8]) { }
374+
}
354375

355376
#[test]
356377
fn test_buffered_reader() {
@@ -470,4 +491,25 @@ mod test {
470491
writer.flush();
471492
assert_eq!(*writer.inner_ref().inner_ref(), ~[0, 1, 0, '\n' as u8, 1]);
472493
}
494+
495+
#[bench]
496+
fn bench_buffered_reader(bh: &mut Harness) {
497+
do bh.iter {
498+
BufferedReader::new(NullStream);
499+
}
500+
}
501+
502+
#[bench]
503+
fn bench_buffered_writer(bh: &mut Harness) {
504+
do bh.iter {
505+
BufferedWriter::new(NullStream);
506+
}
507+
}
508+
509+
#[bench]
510+
fn bench_buffered_stream(bh: &mut Harness) {
511+
do bh.iter {
512+
BufferedStream::new(NullStream);
513+
}
514+
}
473515
}

0 commit comments

Comments
 (0)