Skip to content

Commit

Permalink
Add codspeed (#48)
Browse files Browse the repository at this point in the history
* Add benchmarking

* Update CI for benchmarking

* Fix dep installation

* yml syntax...

* Fix default codspeed yml

* Try without token

* Try to track down codspeed failure
  • Loading branch information
j6k4m8 committed Apr 17, 2024
1 parent 49a1077 commit 4438409
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/codspeed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: codspeed-benchmarks

on:
push:
branches:
- "master"
pull_request:
# `workflow_dispatch` allows CodSpeed to trigger backtest
# performance analysis in order to generate initial data.
workflow_dispatch:

jobs:
benchmarks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: "3.11"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest pytest-cov pytest-codspeed
# Install "cmake", "cython" for networkit. Must happen first:
pip install --upgrade cmake cython
pip install -e ".[sql]"
- name: Run benchmarks
uses: CodSpeedHQ/action@v2
with:
# token: ${{ secrets.CODSPEED_TOKEN }}
run: pytest . --codspeed
22 changes: 22 additions & 0 deletions grand/backends/test_backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -369,3 +369,25 @@ def test_directed_degree_multiple(self, backend):
assert G.nx.in_degree("foo") == 0
assert G.nx.in_degree("bar") == 1
assert G.nx.in_degree("baz") == 1


@pytest.mark.benchmark
@pytest.mark.parametrize("backend", backend_test_params)
def test_node_addition_performance(backend):
backend, kwargs = backend
G = Graph(backend=backend(directed=True, **kwargs))
for i in range(1000):
G.nx.add_node(i)
assert len(G.nx) == 1000


@pytest.mark.benchmark
@pytest.mark.parametrize("backend", backend_test_params)
def test_get_density_performance(backend):
backend, kwargs = backend
G = Graph(backend=backend(directed=True, **kwargs))
for i in range(1000):
G.nx.add_node(i)
for i in range(1000 - 1):
G.nx.add_edge(i, i + 1)
assert nx.density(G.nx) <= 0.005

0 comments on commit 4438409

Please sign in to comment.