Skip to content

Commit 62f95d6

Browse files
committed
Add a BufReader benchmark for reads smaller than the buffer
1 parent 2b698ec commit 62f95d6

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

collector/runtime-benchmarks/Cargo.lock

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
[workspace]
2-
members = ["hashmap"]
2+
members = ["hashmap", "bufreader"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[package]
2+
name = "bufreader"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
9+
benchlib = { path = "../../benchlib" }
10+
snap = "1.0.5"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
use benchlib::benchmark::BenchmarkSuite;
2+
use snap::{read::FrameDecoder, write::FrameEncoder};
3+
use std::io::{BufRead, BufReader, Write};
4+
5+
const BYTES: usize = 64 * 1024 * 1024;
6+
7+
fn main() {
8+
let mut suite = BenchmarkSuite::new();
9+
10+
suite.register("bufreader-snappy", || {
11+
let data = vec![0u8; BYTES];
12+
move || {
13+
let mut compressed = Vec::new();
14+
FrameEncoder::new(&mut compressed)
15+
.write_all(&data[..])
16+
.unwrap();
17+
let mut reader = BufReader::with_capacity(BYTES, FrameDecoder::new(&compressed[..]));
18+
19+
while let Ok(buf) = reader.fill_buf() {
20+
if buf.is_empty() {
21+
break;
22+
}
23+
let len = buf.len();
24+
reader.consume(len);
25+
}
26+
}
27+
});
28+
29+
suite.run().unwrap();
30+
}

0 commit comments

Comments
 (0)