Extending and Registering New Benchmarks
This guide shows how to add a new benchmark algorithm and make it discoverable by PGSI.
Option A: Create a Full Project Scaffold
Generate a benchmark project skeleton:
pgsi-analyzer startproject my-benchmarks --algorithms all
This creates a ready structure and registry file.
Option B: Add One Benchmark to Existing Project
Create and register a benchmark in an existing benchmark project:
pgsi-analyzer create benchmark \
--name my_algo \
--benchmarks-dir my-benchmarks
This command:
creates method folders (
cpython,pypy,cython,ctypes,py_compile),adds starter files (
main.pyand method-specific stubs),updates
pgsi_registry.jsonwith the new benchmark entry.
Implement the Workload
Edit the generated files, especially:
my-benchmarks/my_algo/cpython/main.pyand equivalent method directories as needed.
Keep the measurement decorators so PGSI can collect outputs:
@measure_energy_to_csv(n=get_measurement_runs("my_algo"), csv_filename="my_algo_cpython")
def run_energy_benchmark():
run_workload()
@measure_time_to_csv(n=get_measurement_runs("my_algo"), csv_filename="my_algo_cpython")
def run_time_benchmark():
run_workload()
Validate Discovery
pgsi-analyzer benchmark list --algorithms --benchmarks-dir my-benchmarks
You should see my_algo in the output.
Run Only the New Benchmark
pgsi-analyzer benchmark run \
--algorithms my_algo \
--methods cpython \
--runs 5 \
--benchmarks-dir my-benchmarks \
--output results_my_algo
Best Practices
Keep workloads deterministic where possible.
Start with
cpythonbaseline, then add other methods.Add enough runs to reduce random variance.
Keep input sizes representative of your real workload category.