blob: 9edf95ceb1a657f618ccc39fea75d15b8b1e75a1 [file] [log] [blame]
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -07001// `cargo test --benches` and `#[feature(test)]` work only in nightly
2#![cfg(rustc_nightly)]
3#![feature(test)]
4
5extern crate protobuf;
6extern crate test;
7
Joel Galensonfa77f002021-04-02 11:32:01 -07008use protobuf::CodedOutputStream;
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -07009
David LeGare793d84b2022-03-02 16:21:10 +000010use self::test::Bencher;
11
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -070012#[inline]
Joel Galensonfa77f002021-04-02 11:32:01 -070013fn buffer_write_byte(os: &mut CodedOutputStream) {
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -070014 for i in 0..10 {
15 os.write_raw_byte(test::black_box(i as u8)).unwrap();
16 }
17 os.flush().unwrap();
18}
19
20#[inline]
Joel Galensonfa77f002021-04-02 11:32:01 -070021fn buffer_write_bytes(os: &mut CodedOutputStream) {
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -070022 for _ in 0..10 {
23 os.write_raw_bytes(test::black_box(b"1234567890")).unwrap();
24 }
25 os.flush().unwrap();
26}
27
28#[bench]
29fn bench_buffer(b: &mut Bencher) {
30 b.iter(|| {
31 let mut v = Vec::new();
32 {
Joel Galensonfa77f002021-04-02 11:32:01 -070033 let mut os = CodedOutputStream::new(&mut v);
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -070034 buffer_write_byte(&mut os);
35 }
36 v
37 });
38}
39
40#[bench]
41fn bench_buffer_bytes(b: &mut Bencher) {
42 b.iter(|| {
43 let mut v = Vec::new();
44 {
Joel Galensonfa77f002021-04-02 11:32:01 -070045 let mut os = CodedOutputStream::new(&mut v);
Chih-Hung Hsiehcfc3a232020-06-10 20:13:05 -070046 buffer_write_bytes(&mut os);
47 }
48 v
49 });
50}