Skip to content

Commit

Permalink
Update benchmark scripts, use uv (astral-sh#15120)
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaReiser authored Dec 23, 2024
1 parent 8440f3e commit dcb85b7
Show file tree
Hide file tree
Showing 11 changed files with 335 additions and 601 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,7 @@ cargo build --release && hyperfine --warmup 10 \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache -e --select W505,E501"
```
You can run `poetry install` from `./scripts/benchmarks` to create a working environment for the
You can run `uv venv --project ./scripts/benchmarks`, activate the venv and then run `uv sync --project ./scripts/benchmarks` to create a working environment for the
above. All reported benchmarks were computed using the versions specified by
`./scripts/benchmarks/pyproject.toml` on Python 3.11.
Expand Down
6 changes: 3 additions & 3 deletions scripts/benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ Utilities for benchmarking Ruff.

## Getting Started

Run `./scripts/benchmarks/run.sh` to clone the benchmarking target (CPython).
Run `./scripts/benchmarks/setup.sh` to clone the benchmarking target (CPython).

If you're looking to benchmark Ruff against other tools, you'll also need to run `poetry install`
to create a virtual environment with the required dependencies.
If you're looking to benchmark Ruff against other tools, you'll also need to run `uv venv --project ./scripts/benchmarks`,
activate the venv and finally `uv sync --project ./scripts/benchmarks` to create a virtual environment with the required dependencies.

## Running Benchmarks

Expand Down
523 changes: 0 additions & 523 deletions scripts/benchmarks/poetry.lock

This file was deleted.

38 changes: 13 additions & 25 deletions scripts/benchmarks/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,38 +1,26 @@
[tool.poetry]
[project]
name = "scripts"
version = "0.8.4"
description = ""
authors = ["Charles Marsh <[email protected]>"]

[tool.poetry.dependencies]

python = ">=3.10,<3.12"
autoflake = "*"
autopep8 = "*"
black = "*"
flake8 = "*"
isort = "*"
pycodestyle = "*"
pyflakes = "*"
pylint = "*"
yapf = "*"

[tool.poetry.dev-dependencies]
dependencies = ["autoflake", "autopep8", "black", "flake8", "isort", "pycodestyle", "pyflakes", "pylint", "yapf"]

[tool.poetry.extras]
[dependency-groups]
formatter = [
"black",
"yapf",
"autopep8",
"black",
"yapf",
"autopep8",
]
linter = [
"autoflake",
"flake8",
"pycodestyle",
"pyflakes",
"pylint",
"isort",
"autoflake",
"flake8",
"pycodestyle",
"pyflakes",
"pylint",
"isort",
]

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
4 changes: 2 additions & 2 deletions scripts/benchmarks/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
# Benchmark Ruff on the CPython codebase.
###

cargo build --release && hyperfine --ignore-failure --warmup 10 \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache"
cargo build --release && hyperfine --warmup 10 \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --exit-zero"
6 changes: 3 additions & 3 deletions scripts/benchmarks/run_all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# })

hyperfine --ignore-failure --warmup 5 \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --select ALL" \
"flake8 crates/ruff_linter/resources/test/cpython -qq --docstring-convention=all" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --select ALL --exit-zero" \
"flake8 crates/ruff_linter/resources/test/cpython -qq --exit-zero" \
"pycodestyle crates/ruff_linter/resources/test/cpython -qq" \
"pylint crates/ruff_linter/resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R"
"pylint crates/ruff_linter/resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R --exit-zero"
6 changes: 3 additions & 3 deletions scripts/benchmarks/run_comparisons.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
# Benchmark Ruff's performance against a variety of similar tools.
###

hyperfine --ignore-failure --warmup 5 \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache" \
hyperfine --ignore-failure --warmup 2 --runs 5\
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --exit-zero" \
"pyflakes crates/ruff_linter/resources/test/cpython" \
"autoflake --recursive --expand-star-imports --remove-all-unused-imports --remove-unused-variables --remove-duplicate-keys crates/ruff_linter/resources/test/cpython" \
"pycodestyle crates/ruff_linter/resources/test/cpython" \
"flake8 crates/ruff_linter/resources/test/cpython"
"flake8 crates/ruff_linter/resources/test/cpython --exit-zero"
74 changes: 37 additions & 37 deletions scripts/benchmarks/run_plugins.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,40 @@
# Benchmark the incremental performance of each subsequent plugin.
###

cargo build --release && hyperfine --ignore-failure --warmup 10 \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select C90" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select I" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select D" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select UP" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select N" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select YTT" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ANN" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select S" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select BLE" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select FBT" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select B" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select A" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select C4" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select T10" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select EM" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ISC" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ICN" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select T20" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PT" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select Q" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select RET" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select SIM" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select TID" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ARG" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select DTZ" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ERA" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PD" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PGH" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLC" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLE" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLR" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLW" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PIE" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select COM" \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select RUF"
cargo build --release && hyperfine --warmup 10 \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select C90 --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select I --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select D --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select UP --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select N --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select YTT --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ANN --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select S --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select BLE --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select FBT --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select B --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select A --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select C4 --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select T10 --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select EM --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ISC --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ICN --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select T20 --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PT --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select Q --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select RET --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select SIM --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select TID --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ARG --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select DTZ --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select ERA --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PD --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PGH --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLC --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLE --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLR --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PLW --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select PIE --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select COM --exit-zero" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --extend-select RUF --exit-zero"
6 changes: 3 additions & 3 deletions scripts/benchmarks/run_silent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
###

hyperfine --ignore-failure --warmup 5 \
"./target/release/ruff ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent" \
"./target/release/ruff check ./crates/ruff_linter/resources/test/cpython/ --no-cache --silent --exit-zero" \
"pycodestyle ./crates/ruff_linter/resources/test/cpython -qq" \
"flake8 ./crates/ruff_linter/resources/test/cpython -qq" \
"pylint ./crates/ruff_linter/resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R"
"flake8 ./crates/ruff_linter/resources/test/cpython -qq --exit-zero" \
"pylint ./crates/ruff_linter/resources/test/cpython -j 0 --recursive=y --disable=E,W,C,R--exit-zero"
2 changes: 1 addition & 1 deletion scripts/benchmarks/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
# Setup the CPython repository to enable benchmarking.
###

git clone --branch 3.10 https://github.com/python/cpython.git crates/ruff_linter/resources/test/cpython --filter=blob:none
git clone --branch 3.12 https://github.com/python/cpython.git crates/ruff_linter/resources/test/cpython --filter=blob:none --depth=1
Loading

0 comments on commit dcb85b7

Please sign in to comment.