Files
drop/torrential/benches/torrential.rs
T

47 lines
1.1 KiB
Rust

use std::{
cmp,
fs::File,
io::{BufWriter, Write},
};
use criterion::{Criterion, criterion_group, criterion_main};
use rand::{Rng, rng};
use tempfile::tempfile;
use tokio::runtime::Runtime;
async fn torrential() {}
fn generate_file() -> File {
let total_bytes = 312 * 1024 * 1024;
let tempfile = tempfile().unwrap();
let mut writer = BufWriter::new(tempfile);
let mut rng = rng();
let mut buffer = [0; 1024];
let mut remaining_size = total_bytes;
while remaining_size > 0 {
let to_write = cmp::min(remaining_size, buffer.len());
let buffer = &mut buffer[..to_write];
rng.fill(buffer);
writer.write(buffer).unwrap();
remaining_size -= to_write;
}
writer.into_inner().unwrap()
}
// The benchmark function setup
fn benchmark(c: &mut Criterion) {
let rt = Runtime::new().unwrap();
let file = generate_file();
c.bench_function("torrential download", |b| {
b.to_async(&rt).iter(|| torrential())
});
}
// Grouping your benchmarks
criterion_group!(benches, benchmark);
criterion_main!(benches);