on: push: branches: - main pull_request: name: Benchmark jobs: benchmark: name: Cargo benchmark runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-${{ runner.os }}-bench-${{ hashFiles('**/Cargo.toml') }} continue-on-error: true - name: Run benchmarks run: | for bench in call dict gil list pyclass pyobject set tuple; do cargo bench --features hashbrown --bench "bench_$bench" -- --output-format bencher | tee -a output.txt done # Download previous benchmark result from cache (if exists) - name: Download previous benchmark data uses: actions/cache@v1 with: path: ./cache key: ${{ runner.os }}-benchmark # Run `github-action-benchmark` action - name: Store benchmark result uses: rhysd/github-action-benchmark@v1 with: name: pyo3-bench # What benchmark tool the output.txt came from tool: "cargo" # Where the output from the benchmark tool is stored output-file-path: output.txt # GitHub API token to make a commit comment github-token: ${{ secrets.GITHUB_TOKEN }} auto-push: ${{ github.event_name != 'pull_request' }} pytest-benchmark: name: pytest benchmark runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: actions/cache@v2 with: path: | ~/.cargo/registry ~/.cargo/git target key: cargo-${{ runner.os }}-pytest-bench-${{ hashFiles('**/Cargo.toml') }} continue-on-error: true - name: Download previous benchmark data uses: actions/cache@v1 with: path: ./cache key: ${{ runner.os }}-pytest-benchmark - name: Run benchmarks run: | cd examples/pyo3-benchmarks python -m pip install -r requirements-dev.txt python setup.py develop pytest --benchmark-json ../../output.json - name: Store benchmark result uses: rhysd/github-action-benchmark@v1 with: name: pytest-bench tool: "pytest" output-file-path: output.json github-token: ${{ secrets.GITHUB_TOKEN }} auto-push: ${{ github.event_name != 'pull_request' }}