Skip to content

benchmark

benchmark #2942

Workflow file for this run

# 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