diff options
author | Chih-Hung Hsieh <chh@google.com> | 2020-06-10 20:13:05 -0700 |
---|---|---|
committer | Chih-Hung Hsieh <chh@google.com> | 2020-06-10 20:13:05 -0700 |
commit | cfc3a2393e88971337346fd696518e9ea60aa2b8 (patch) | |
tree | 27da848698dcf5cab8eabb82e02b880eb1e100c4 /benches/coded_output_stream.rs | |
parent | e97eb59d5ef6d56df05edde7356c6310d9a2cbe3 (diff) | |
download | protobuf-cfc3a2393e88971337346fd696518e9ea60aa2b8.tar.gz |
Import protobuf-2.14.0
* Add OWNERS and Android.bp
* add generated version.rs into out
Bug: 143953733
Test: make
Change-Id: Ib53a973b74679c4dd78e2de2fa54141e55048c17
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 + }); +} |