Skip to content

Running benchmarks

The benchmark module measures end-to-end performance of the Meta processing pipeline, from CSV input to triplestore upload.

Terminal window
uv run python -m oc_meta.run.benchmark -c <CONFIG> [options]
ParameterDefaultDescription
-c, --configRequiredPath to benchmark config YAML
--sizesNoneGenerate N synthetic records. Multiple values for scalability analysis
--runs1Execute benchmark multiple times for statistical analysis
--seed42Random seed for reproducible data
--fresh-dataFalseGenerate new data for each run
--no-cleanupFalseSkip database reset after benchmark
--update-scenarioFalseTest graph diff performance (preload partial, then complete data)
--preload-high-authorsNonePreload BR with N authors before benchmark

Single run with 100 synthetic records:

Terminal window
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100

Statistical analysis with 5 runs:

Terminal window
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100 --runs 5

Scalability analysis across multiple sizes:

Terminal window
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 10 50 100 500 --runs 3

Update scenario (tests graph diff when updating existing entities):

Terminal window
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --sizes 100 --update-scenario

High-author stress test (simulates ATLAS paper with 2869 authors):

Terminal window
uv run python -m oc_meta.run.benchmark -c benchmark_config.yaml --preload-high-authors 2869

Reports are saved in oc_meta/run/benchmark/reports/:

  • benchmark_<size>.json - raw timing data and statistics
  • benchmark_<size>.png - phase breakdown and throughput charts
  • Total duration
  • Throughput (records/sec)
  • Per-phase timing: curation (collect IDs, clean, merge), RDF creation, storage
  • Memory usage per phase
  • 95% confidence intervals (with multiple runs)
  • Outlier detection