fparkan/vendor/indicatif/examples/steady.rs
Valentin Popov 1b6a04ca55
Initial vendor packages
Signed-off-by: Valentin Popov <valentin@popov.link>
2024-01-08 01:21:28 +04:00

51 lines
1.7 KiB
Rust

use std::{
thread::sleep,
time::{Duration, Instant},
};
use indicatif::{ProgressBar, ProgressIterator, ProgressStyle};
fn main() {
let iterations = 1000;
// Set the array with all the blocksizes to test
let blocksizes: [usize; 7] = [16, 64, 256, 1024, 4096, 16384, 65536];
// Set the array with all the durations to save
let mut elapsed: [Duration; 7] = [Duration::ZERO; 7];
for (pos, blocksize) in blocksizes.iter().enumerate() {
// Set up the style for the progressbar
let sty = ProgressStyle::default_spinner()
.tick_strings(&[
"▹▹▹▹▹",
"▸▹▹▹▹",
"▹▸▹▹▹",
"▹▹▸▹▹",
"▹▹▹▸▹",
"▹▹▹▹▸",
"▪▪▪▪▪",
])
.template("{prefix} {pos:>4}/{len:4} Iterations per second: {per_sec} {spinner} {msg}")
.unwrap();
// Set up the progress bar and apply the style
let pb = ProgressBar::new(iterations);
pb.set_style(sty);
pb.enable_steady_tick(Duration::from_millis(120));
pb.set_prefix(format!("Doing test with Blocksize {:5?}:", blocksize));
// Iterate for the given number of iterations
// for _ in (0..iterations) {
for _ in (0..iterations).progress_with(pb) {
// pb.inc(1);
// Take a timestamp for timemeasurement later on
let now = Instant::now();
sleep(Duration::from_millis(1));
// Save the elapsed time for later evaluation
elapsed[pos] += now.elapsed();
}
// pb.finish_using_style();
}
}