Analysis, statistics, and visualisation pipeline for RollupX benchmark results.
benchmark-suite/metrics/ ← raw JSON / JSONL / CSV from each run
│
▼
aggregate.py → metrics/all_results.csv
│
├──► stats.py → metrics/stats_summary.csv
│ metrics/sensitivity_matrix.csv
│
├──► plots/
│ ├── pareto_frontier.py → figures/pareto_*.png
│ ├── throughput_bar.py → figures/throughput_*.png
│ ├── latency_cdf.py → figures/latency_cdf_*.png
│ ├── latency_boxplot.py → figures/latency_boxplot_*.png
│ ├── fairness.py → figures/fairness_*.png, starvation.png
│ ├── cost_heatmap.py → figures/cost_heatmap_*.png
│ └── sensitivity.py → figures/sensitivity_*.png
│
└──► report/generate_md.py → thesis_summary.md
# 1. Install dependencies
pip install pandas matplotlib
# 2. Aggregate all runs
python aggregate.py --metrics_root ../benchmark-suite/metrics
# 3. Compute statistics
python stats.py --input metrics/all_results.csv
# 4. Generate all plots
python plots/pareto_frontier.py --input metrics/all_results.csv
python plots/throughput_bar.py --input metrics/all_results.csv
python plots/latency_cdf.py --metrics_root ../benchmark-suite/metrics
python plots/latency_boxplot.py --input metrics/all_results.csv
python plots/fairness.py --input metrics/all_results.csv
python plots/cost_heatmap.py --input metrics/all_results.csv
python plots/sensitivity.py --input metrics/all_results.csv
# 5. Generate thesis summary
python report/generate_md.py \
--input metrics/all_results.csv \
--stats metrics/stats_summary.csv \
--output thesis_summary.md
# 6. Run unit tests
python -m pytest tests/ -v| File | Description |
|---|---|
metrics/all_results.csv |
One row per run, all metrics columns |
metrics/stats_summary.csv |
Per-experiment: mean±std, p50/p95/p99, CI95, Δbaseline |
metrics/sensitivity_matrix.csv |
% change vs baseline per experiment × metric |
figures/pareto_cost_latency.png |
Main Pareto frontier plot |
figures/sensitivity_heatmap.png |
Factor × metric sensitivity |
figures/fairness_jains.png |
Fairness index by experiment |
thesis_summary.md |
Auto-generated thesis section |
tps_offered— offered load from generatortps_accepted— accepted by sequencertps_committed— committed to sealed batches
avg_l2_l1_ms,p50_l2_l1_ms,p95_l2_l1_ms,p99_l2_l1_msavg_prove_ms,p50_prove_ms,p95_prove_ms
avg_gas_per_tx,avg_gas_per_batch,avg_gas_savedavg_calldata_bytes,avg_compressed_bytes,avg_comp_ratio
failed_batches,total_retries
jains_fairness— Jain's Fairness Index (0–1, higher is fairer)starvation_count— txs waiting > 3× mean latencyp95_latency_typeA_ms,p95_latency_typeB_ms,p95_latency_typeC_ms