aboutsummaryrefslogtreecommitdiff
path: root/benches/coded_output_stream.rs
diff options
context:
space:
mode:
authorChih-Hung Hsieh <chh@google.com>2020-06-10 20:13:05 -0700
committerChih-Hung Hsieh <chh@google.com>2020-06-10 20:13:05 -0700
commitcfc3a2393e88971337346fd696518e9ea60aa2b8 (patch)
tree27da848698dcf5cab8eabb82e02b880eb1e100c4 /benches/coded_output_stream.rs
parente97eb59d5ef6d56df05edde7356c6310d9a2cbe3 (diff)
downloadprotobuf-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.rs50
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
+ });
+}