Skip to content

Commit 3f6e687

Browse files
committed
Lay out benchmark charts horizontally instead of vertically
1 parent 6b5476b commit 3f6e687

1 file changed

Lines changed: 20 additions & 12 deletions

File tree

crates/rtx-bench/src/chart.rs

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ const BASE_HUES: &[f64] = &[
2626
/// Chart dimensions and layout.
2727
const CHART_WIDTH: f64 = 500.0;
2828
const CHART_HEIGHT: f64 = 250.0;
29-
const CHART_PADDING_LEFT: f64 = 80.0; // Extra space for y-axis labels
30-
const CHART_PADDING_RIGHT: f64 = 60.0;
31-
const CHART_PADDING_TOP: f64 = 60.0;
32-
const CHART_PADDING_BOTTOM: f64 = 40.0;
29+
const CHART_PADDING_LEFT: f64 = 40.0;
30+
const CHART_PADDING_RIGHT: f64 = 10.0;
31+
const CHART_PADDING_TOP: f64 = 40.0;
32+
const CHART_PADDING_BOTTOM: f64 = 30.0;
3333
const CHART_SPACING: f64 = 40.0;
34+
const LEGEND_WIDTH: f64 = 70.0;
3435
const LEGEND_LINE_HEIGHT: f64 = 20.0;
3536

3637
/// Lightness range for color shades (oldest to newest).
@@ -88,7 +89,12 @@ fn generate_shade_colors(base_hue: f64, count: usize) -> Vec<String> {
8889
}
8990

9091
/// Generate an SVG group for a single benchmark chart.
91-
fn generate_benchmark_chart(benchmark: &BenchmarkData, base_hue: f64, y_offset: f64) -> Group {
92+
fn generate_benchmark_chart(
93+
benchmark: &BenchmarkData,
94+
base_hue: f64,
95+
x_offset: f64,
96+
y_offset: f64,
97+
) -> Group {
9298
let mut group = Group::new();
9399
let chart_id = &benchmark.name;
94100

@@ -120,7 +126,7 @@ fn generate_benchmark_chart(benchmark: &BenchmarkData, base_hue: f64, y_offset:
120126

121127
let plot_width = CHART_WIDTH - CHART_PADDING_LEFT - CHART_PADDING_RIGHT;
122128
let plot_height = CHART_HEIGHT - CHART_PADDING_TOP - CHART_PADDING_BOTTOM;
123-
let plot_x = CHART_PADDING_LEFT;
129+
let plot_x = x_offset + CHART_PADDING_LEFT;
124130
let plot_y = y_offset + CHART_PADDING_TOP;
125131

126132
// Create clip path for the plot area
@@ -338,9 +344,10 @@ const CHART_JS: &str = include_str!("../static/chart.js");
338344
///
339345
/// Takes the output of `load_all_benchmarks`: a list of BenchmarkData.
340346
pub fn generate_svg(benchmarks: &[BenchmarkData]) -> String {
341-
// Calculate total dimensions
342-
let total_height = benchmarks.len() as f64 * (CHART_HEIGHT + CHART_SPACING);
343-
let total_width = CHART_WIDTH + 120.0; // Extra space for legend
347+
// Calculate total dimensions (charts laid out horizontally)
348+
let chart_total_width = CHART_WIDTH + LEGEND_WIDTH;
349+
let total_width = benchmarks.len() as f64 * (chart_total_width + CHART_SPACING);
350+
let total_height = CHART_HEIGHT;
344351

345352
// Create document
346353
let mut document =
@@ -357,11 +364,12 @@ pub fn generate_svg(benchmarks: &[BenchmarkData]) -> String {
357364
.set("fill", "#fafafa");
358365
document = document.add(background);
359366

360-
// Generate each chart
367+
// Generate each chart (laid out horizontally)
361368
for (i, benchmark) in benchmarks.iter().enumerate() {
362-
let y_offset = i as f64 * (CHART_HEIGHT + CHART_SPACING);
369+
let x_offset = i as f64 * (chart_total_width + CHART_SPACING);
370+
let y_offset = 0.0;
363371
let base_hue = BASE_HUES[i % BASE_HUES.len()];
364-
let chart_group = generate_benchmark_chart(benchmark, base_hue, y_offset);
372+
let chart_group = generate_benchmark_chart(benchmark, base_hue, x_offset, y_offset);
365373
document = document.add(chart_group);
366374
}
367375

0 commit comments

Comments
 (0)