872a5421bf
Signed-off-by: quexeky <git@quexeky.dev>
47 lines
1.1 KiB
Rust
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);
|