benchmark #3574
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# DO NOT EDIT MANUALLY | |
# This file is generated by ./bin/build_workflow.sh | |
--- | |
name: benchmark | |
on: | |
push: | |
branches: | |
- benchmark/* | |
schedule: | |
- cron: '50 */6 * * *' | |
jobs: | |
poetry: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: setup | |
run: ./bin/actions_prereqs.sh | |
- name: tooling | |
run: | | |
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-tooling | |
- name: import | |
run: | | |
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-import | |
- name: lock cold | |
run: | | |
make poetry-clean-cache | |
make poetry-clean-venv | |
make poetry-clean-lock | |
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-lock | |
- name: lock warm | |
run: | | |
make poetry-clean-lock | |
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-lock | |
- name: install cold | |
run: | | |
make poetry-clean-cache | |
make poetry-clean-venv | |
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-install | |
- name: install warm | |
run: | | |
make poetry-clean-venv | |
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-install | |
- name: update cold | |
run: | | |
make poetry-clean-cache | |
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-update | |
- name: update warm | |
run: | | |
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-update | |
- name: add package | |
run: | | |
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make poetry-add-package | |
- name: stats | |
run: | | |
VERSION=$(make poetry-version) | |
CSV=poetry/stats.csv | |
TIMESTAMP=$(date +%s) | |
mkdir -p "poetry" | |
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" | |
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do | |
echo "poetry,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" | |
done | |
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
name: poetry-stats | |
path: poetry/stats.csv | |
retention-days: 10 | |
pdm: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: setup | |
run: ./bin/actions_prereqs.sh | |
- name: tooling | |
run: | | |
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-tooling | |
- name: import | |
run: | | |
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-import | |
- name: lock cold | |
run: | | |
make pdm-clean-cache | |
make pdm-clean-venv | |
make pdm-clean-lock | |
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-lock | |
- name: lock warm | |
run: | | |
make pdm-clean-lock | |
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-lock | |
- name: install cold | |
run: | | |
make pdm-clean-cache | |
make pdm-clean-venv | |
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-install | |
- name: install warm | |
run: | | |
make pdm-clean-venv | |
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-install | |
- name: update cold | |
run: | | |
make pdm-clean-cache | |
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-update | |
- name: update warm | |
run: | | |
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-update | |
- name: add package | |
run: | | |
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pdm-add-package | |
- name: stats | |
run: | | |
VERSION=$(make pdm-version) | |
CSV=pdm/stats.csv | |
TIMESTAMP=$(date +%s) | |
mkdir -p "pdm" | |
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" | |
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do | |
echo "pdm,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" | |
done | |
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
name: pdm-stats | |
path: pdm/stats.csv | |
retention-days: 10 | |
pipenv: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: setup | |
run: ./bin/actions_prereqs.sh | |
- name: tooling | |
run: | | |
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-tooling | |
- name: import | |
run: | | |
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-import | |
- name: lock cold | |
run: | | |
make pipenv-clean-cache | |
make pipenv-clean-venv | |
make pipenv-clean-lock | |
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-lock | |
- name: lock warm | |
run: | | |
make pipenv-clean-lock | |
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-lock | |
- name: install cold | |
run: | | |
make pipenv-clean-cache | |
make pipenv-clean-venv | |
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-install | |
- name: install warm | |
run: | | |
make pipenv-clean-venv | |
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-install | |
- name: update cold | |
run: | | |
make pipenv-clean-cache | |
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-update | |
- name: update warm | |
run: | | |
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-update | |
- name: add package | |
run: | | |
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pipenv-add-package | |
- name: stats | |
run: | | |
VERSION=$(make pipenv-version) | |
CSV=pipenv/stats.csv | |
TIMESTAMP=$(date +%s) | |
mkdir -p "pipenv" | |
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" | |
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do | |
echo "pipenv,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" | |
done | |
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
name: pipenv-stats | |
path: pipenv/stats.csv | |
retention-days: 10 | |
pip-tools: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: setup | |
run: ./bin/actions_prereqs.sh | |
- name: tooling | |
run: | | |
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-tooling | |
- name: import | |
run: | | |
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-import | |
- name: lock cold | |
run: | | |
make pip-tools-clean-cache | |
make pip-tools-clean-venv | |
make pip-tools-clean-lock | |
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-lock | |
- name: lock warm | |
run: | | |
make pip-tools-clean-lock | |
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-lock | |
- name: install cold | |
run: | | |
make pip-tools-clean-cache | |
make pip-tools-clean-venv | |
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-install | |
- name: install warm | |
run: | | |
make pip-tools-clean-venv | |
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-install | |
- name: update cold | |
run: | | |
make pip-tools-clean-cache | |
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-update | |
- name: update warm | |
run: | | |
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-update | |
- name: add package | |
run: | | |
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make pip-tools-add-package | |
- name: stats | |
run: | | |
VERSION=$(make pip-tools-version) | |
CSV=pip-tools/stats.csv | |
TIMESTAMP=$(date +%s) | |
mkdir -p "pip-tools" | |
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" | |
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do | |
echo "pip-tools,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" | |
done | |
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
name: pip-tools-stats | |
path: pip-tools/stats.csv | |
retention-days: 10 | |
uv: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: setup | |
run: ./bin/actions_prereqs.sh | |
- name: tooling | |
run: | | |
/usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-tooling | |
- name: import | |
run: | | |
/usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-import | |
- name: lock cold | |
run: | | |
make uv-clean-cache | |
make uv-clean-venv | |
make uv-clean-lock | |
/usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-lock | |
- name: lock warm | |
run: | | |
make uv-clean-lock | |
/usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-lock | |
- name: install cold | |
run: | | |
make uv-clean-cache | |
make uv-clean-venv | |
/usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-install | |
- name: install warm | |
run: | | |
make uv-clean-venv | |
/usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-install | |
- name: update cold | |
run: | | |
make uv-clean-cache | |
/usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-update | |
- name: update warm | |
run: | | |
/usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-update | |
- name: add package | |
run: | | |
/usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ | |
make uv-add-package | |
- name: stats | |
run: | | |
VERSION=$(make uv-version) | |
CSV=uv/stats.csv | |
TIMESTAMP=$(date +%s) | |
mkdir -p "uv" | |
echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" | |
for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do | |
echo "uv,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" | |
done | |
csv2md "$CSV" >> $GITHUB_STEP_SUMMARY | |
- uses: actions/upload-artifact@v4 | |
if: github.ref == 'refs/heads/main' | |
with: | |
name: uv-stats | |
path: uv/stats.csv | |
retention-days: 10 | |
gather: | |
runs-on: ubuntu-22.04 | |
needs: [poetry, pdm, pipenv, pip-tools, uv] | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: build stats.csv | |
run: | | |
# join and remove duplicate headers | |
cat *-stats/stats.csv > raw.csv | |
HEADER=$(head -n 1 raw.csv) | |
echo "$HEADER" > stats.csv | |
grep -v "$HEADER" raw.csv >> stats.csv | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: stats | |
path: stats.csv | |
retention-days: 10 |