diff options
Diffstat (limited to 'benches/coded_output_stream.rs')
-rw-r--r-- | benches/coded_output_stream.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/benches/coded_output_stream.rs b/benches/coded_output_stream.rs new file mode 100644 index 0000000..438e980 --- /dev/null +++ b/benches/coded_output_stream.rs @@ -0,0 +1,50 @@ +// `cargo test --benches` and `#[feature(test)]` work only in nightly +#![cfg(rustc_nightly)] +#![feature(test)] + +extern crate protobuf; +extern crate test; + +use protobuf::stream; + +use self::test::Bencher; + +#[inline] +fn buffer_write_byte(os: &mut stream::CodedOutputStream) { + for i in 0..10 { + os.write_raw_byte(test::black_box(i as u8)).unwrap(); + } + os.flush().unwrap(); +} + +#[inline] +fn buffer_write_bytes(os: &mut stream::CodedOutputStream) { + for _ in 0..10 { + os.write_raw_bytes(test::black_box(b"1234567890")).unwrap(); + } + os.flush().unwrap(); +} + +#[bench] +fn bench_buffer(b: &mut Bencher) { + b.iter(|| { + let mut v = Vec::new(); + { + let mut os = stream::CodedOutputStream::new(&mut v); + buffer_write_byte(&mut os); + } + v + }); +} + +#[bench] +fn bench_buffer_bytes(b: &mut Bencher) { + b.iter(|| { + let mut v = Vec::new(); + { + let mut os = stream::CodedOutputStream::new(&mut v); + buffer_write_bytes(&mut os); + } + v + }); +} |