chore: update bench

This commit is contained in:
Ilya Zlobintsev 2025-02-10 09:38:21 +02:00
parent 0894f9ae9d
commit 5bd588738f
4 changed files with 61 additions and 55 deletions

View File

@ -26,6 +26,7 @@ chrono = "0.4.31"
indexmap = { version = "2.5.0", features = ["serde"] } indexmap = { version = "2.5.0", features = ["serde"] }
pretty_assertions = "1.4.0" pretty_assertions = "1.4.0"
divan = "0.1" divan = "0.1"
gtk = { version = "0.9", package = "gtk4" }
[profile.release] [profile.release]
strip = "symbols" strip = "symbols"

View File

@ -20,8 +20,8 @@ tracing = { workspace = true }
anyhow = { workspace = true } anyhow = { workspace = true }
tracing-subscriber = { workspace = true } tracing-subscriber = { workspace = true }
chrono = { workspace = true } chrono = { workspace = true }
gtk = { workspace = true, features = ["v4_6", "blueprint"] }
gtk = { version = "0.9", package = "gtk4", features = ["v4_6", "blueprint"] }
adw = { package = "libadwaita", version = "0.7.1", features = [ adw = { package = "libadwaita", version = "0.7.1", features = [
"v1_4", "v1_4",
], optional = true } ], optional = true }

View File

@ -193,3 +193,58 @@ impl PlotData {
self.line_series.is_empty() && self.secondary_line_series.is_empty() self.line_series.is_empty() && self.secondary_line_series.is_empty()
} }
} }
#[cfg(feature = "bench")]
mod benches {
use crate::app::graphs_window::plot::{
render_thread::{process_request, RenderRequest},
PlotData,
};
use chrono::{NaiveDate, NaiveDateTime, NaiveTime};
use divan::{counter::ItemsCount, Bencher};
use std::sync::Mutex;
#[divan::bench]
fn render_plot(bencher: Bencher) {
let last_texture = &Mutex::new(None);
bencher
.with_inputs(sample_plot_data)
.input_counter(|_| ItemsCount::new(1usize))
.bench_values(|data| {
let request = RenderRequest {
title: "bench render".into(),
value_suffix: "%".into(),
secondary_value_suffix: "".into(),
y_label_area_relative_size: 1.0,
secondary_y_label_relative_area_size: 1.0,
data,
width: 1920,
height: 1080,
supersample_factor: 4,
time_period_seconds: 60,
};
process_request(request, last_texture)
});
}
fn sample_plot_data() -> PlotData {
let mut data = PlotData::default();
// Simulate 1 minute plot with 4 values per second
for sec in 0..60 {
for milli in [0, 250, 500, 750] {
let datetime = NaiveDateTime::new(
NaiveDate::from_ymd_opt(2025, 1, 1).unwrap(),
NaiveTime::from_hms_milli_opt(0, 0, sec, milli).unwrap(),
);
data.push_line_series_with_time("GPU", 100.0, datetime);
data.push_secondary_line_series_with_time("GPU Secondary", 10.0, datetime);
}
}
data
}
}

View File

@ -130,7 +130,10 @@ impl RenderThread {
} }
} }
fn process_request(render_request: RenderRequest, last_texture: &Mutex<Option<MemoryTexture>>) { pub(super) fn process_request(
render_request: RenderRequest,
last_texture: &Mutex<Option<MemoryTexture>>,
) {
// Create a new ImageSurface for Cairo rendering. // Create a new ImageSurface for Cairo rendering.
let mut surface = ImageSurface::create( let mut surface = ImageSurface::create(
cairo::Format::ARgb32, cairo::Format::ARgb32,
@ -393,56 +396,3 @@ impl RenderRequest {
Ok(()) Ok(())
} }
} }
#[cfg(feature = "bench")]
mod benches {
use super::{process_request, RenderRequest};
use crate::app::graphs_window::plot::PlotData;
use chrono::{NaiveDate, NaiveDateTime, NaiveTime};
use divan::{counter::ItemsCount, Bencher};
use std::sync::Mutex;
#[divan::bench]
fn render_plot(bencher: Bencher) {
let last_texture = &Mutex::new(None);
bencher
.with_inputs(sample_plot_data)
.input_counter(|_| ItemsCount::new(1usize))
.bench_values(|data| {
let request = RenderRequest {
title: "bench render".into(),
value_suffix: "%".into(),
secondary_value_suffix: "".into(),
y_label_area_relative_size: 1.0,
secondary_y_label_relative_area_size: 1.0,
data,
width: 1920,
height: 1080,
supersample_factor: 4,
time_period_seconds: 60,
};
process_request(request, last_texture)
});
}
fn sample_plot_data() -> PlotData {
let mut data = PlotData::default();
// Simulate 1 minute plot with 4 values per second
for sec in 0..60 {
for milli in [0, 250, 500, 750] {
let datetime = NaiveDateTime::new(
NaiveDate::from_ymd_opt(2025, 1, 1).unwrap(),
NaiveTime::from_hms_milli_opt(0, 0, sec, milli).unwrap(),
);
data.push_line_series_with_time("GPU", 100.0, datetime);
data.push_secondary_line_series_with_time("GPU Secondary", 10.0, datetime);
}
}
data
}
}