Installation
Requires Python 3.9+. Install with pip:
pip install acenly-bench
Verify it works:
acenly-bench --help
Configuration
Create acenly.yml in your project root. Copy from acenly.example.yml as a starting point:
acenly.yml
benchmark: track: - file: src/api.py function: deduplicate_users - file: src/search.py function: build_index # warn if 10% slower, block push if 25% slower regression_warn: 0.10 regression_block: 0.25 noise_floor: 0.05 trials: 5 warmup: 2
Config options
track— list of functions to benchmark, each withfileandfunctionregression_warn— warn but allow push if this much slower (e.g. 0.10 = 10%)regression_block— block push entirely if this much slower (e.g. 0.25 = 25%)noise_floor— ignore changes smaller than this (filters measurement noise)trials/warmup— number of timed runs and warmup runs per function
Running
Benchmark all tracked functions:
python3 bench.py
Benchmark one specific function:
python3 bench.py src/api.py::deduplicate_users
View history across commits:
python3 bench.py --history
High-precision mode — batch timing, 3-second measurement window:
python3 bench.py --precise
Git Hooks
Install a pre-push hook that runs benchmarks automatically before every push:
python3 bench.py --install-hooks
If a function regresses past regression_block, the push is stopped. To override once:
python3 bench.py --skip-hooks && git push
Remove the hook:
python3 bench.py --uninstall-hooks
Optimizer — Coming Soon
Once the benchmark finds something slow, the ACENLY Optimizer rewrites it algorithmically — O(n²) to O(n), correctness-verified, pure Python output. No new dependencies.
The optimizer is currently in private beta. We're onboarding a small group early.
Join the waitlist → get early access and help shape the product.
acenly.com/optimize →