Skip to content

Commit

Permalink
CI: Add Benchmarking
Browse files Browse the repository at this point in the history
  • Loading branch information
Jacob-Stevens-Haas committed Aug 1, 2024
1 parent f4ad7b0 commit 6c2389c
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 2 deletions.
49 changes: 48 additions & 1 deletion .github/workflows/push-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,51 @@ jobs:
# https://github.com/marketplace/actions/install-poetry-action#codecov-upload
# ======
- name: Run tests
run: poetry run pytest
run: poetry run pytest

benchmarks:
name: ASV Benchmarks
needs: test
runs-on: ubuntu-22.04
strategy:
matrix:
python-version: ["3.9"]
poetry-version: ["1.2.1"]
steps:
# ======
# Checkout, set up python
# ======
- name: Check out
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
# ======
# Install and configure poetry
# ======
- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v4
with:
path: ~/.local # the path depends on the OS
key: poetry-${{ matrix.poetry-version }}
- name: Install Poetry
if: steps.cached-poetry.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1
with:
version: ${{ matrix.poetry-version }}
virtualenvs-create: true
virtualenvs-in-project: true
# ======
# Load cached venv if cache exists
# Install dependencies if cache does not exist
# ======
- name: Install dependencies
run: poetry install --no-interaction -E dev
- name: Run ASV benchmarks
run: |
pip install asv
cd asv_bench
asv machine --yes
python -m asv run --durations=30 --python=same --show-stderr
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,11 @@ venv.bak/

# Exploratory work
playground/

# Unit / Performance Testing #
##############################
asv_bench/.asv/env/
asv_bench/html/
asv_bench/.asv/results/
asv_bench/derivative/
test-data.xml
14 changes: 14 additions & 0 deletions asv_bench/asv.conf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 1,
"project": "derivative",
"project_url": "https://derivative.readthedocs.io/",
"repo": "..",
"environment_type": "virtualenv",
"env_dir": ".asv/env",
"results_dir": ".asv/results",
"html_dir": ".asv/html",
"show_commit_url": "https://github.com/$OWNER/$REPO/commit/",
"build_command": [
"python -m build --outdir {build_cache_dir} {build_dir}"
]
}
Empty file.
31 changes: 31 additions & 0 deletions asv_bench/benchmarks/finite_difference_1D.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Write the benchmarking functions here.
# See "Writing benchmarks" in the asv docs for more information.


class TimeSuite:
"""
An example benchmark that times the performance of various kinds
of iterating over dictionaries in Python.
"""
def setup(self):
self.d = {}
for x in range(500):
self.d[x] = None

def time_keys(self):
for key in self.d.keys():
pass

def time_values(self):
for value in self.d.values():
pass

def time_range(self):
d = self.d
for key in range(500):
d[key]


class MemSuite:
def mem_list(self):
return [0] * 256
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,12 @@ matplotlib = {version = "^3.2.1", optional = true}
#pandoc = {version = "^2.2", optional = true}

# dev
asv = {version = "^0.6", optional = true}
pytest = {version = "^7", optional = true}

[tool.poetry.extras]
docs = ["sphinx", "nbsphinx", "ipykernel", "jupyter_client", "matplotlib", "pandoc"]
dev = ["pytest"]
dev = ["asv", "pytest"]

[build-system]
requires = ["poetry-core>=1.1.0"]
Expand Down

0 comments on commit 6c2389c

Please sign in to comment.