pyo3 0.15.0

Bindings to Python interpreter
Documentation
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' }}