mirror of
https://github.com/ratatui-org/ratatui
synced 2024-11-22 20:53:19 +00:00
c12bcfefa2
Fixes many not yet enabled lints (mostly pedantic) on everything that is not the lib (examples, benchs, tests). Therefore, this is not containing anything that can be a breaking change. Lints are not enabled as that should be the job of #974. I created this as a separate PR as its mostly independent and would only clutter up the diff of #974 even more. Also see https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743 --------- Co-authored-by: Josh McKinney <joshka@users.noreply.github.com>
45 lines
1.3 KiB
Rust
45 lines
1.3 KiB
Rust
use criterion::{criterion_group, criterion_main, Bencher, BenchmarkId, Criterion};
|
|
use rand::Rng;
|
|
use ratatui::{
|
|
buffer::Buffer,
|
|
layout::Rect,
|
|
widgets::{Sparkline, Widget},
|
|
};
|
|
|
|
/// Benchmark for rendering a sparkline.
|
|
fn sparkline(c: &mut Criterion) {
|
|
let mut group = c.benchmark_group("sparkline");
|
|
let mut rng = rand::thread_rng();
|
|
|
|
for data_count in [64, 256, 2048] {
|
|
let data: Vec<u64> = (0..data_count)
|
|
.map(|_| rng.gen_range(0..data_count))
|
|
.collect();
|
|
|
|
// Render a basic sparkline
|
|
group.bench_with_input(
|
|
BenchmarkId::new("render", data_count),
|
|
&Sparkline::default().data(&data),
|
|
render,
|
|
);
|
|
}
|
|
|
|
group.finish();
|
|
}
|
|
|
|
/// render the block into a buffer of the given `size`
|
|
fn render(bencher: &mut Bencher, sparkline: &Sparkline) {
|
|
let mut buffer = Buffer::empty(Rect::new(0, 0, 200, 50));
|
|
// We use `iter_batched` to clone the value in the setup function.
|
|
// See https://github.com/ratatui-org/ratatui/pull/377.
|
|
bencher.iter_batched(
|
|
|| sparkline.clone(),
|
|
|bench_sparkline| {
|
|
bench_sparkline.render(buffer.area, &mut buffer);
|
|
},
|
|
criterion::BatchSize::LargeInput,
|
|
);
|
|
}
|
|
|
|
criterion_group!(benches, sparkline);
|
|
criterion_main!(benches);
|