Installation

Requires Python 3.9+. Install with pip:

pip install acenly-bench

Verify it works:

acenly-bench --help

★ View on GitHub →

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 with file and function
  • regression_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 →