diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml new file mode 100644 index 00000000..fb8da74b --- /dev/null +++ b/.github/workflows/bench.yml @@ -0,0 +1,33 @@ +name: Benchmarks + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + name: Run pollard benchmarks + runs-on: ubuntu-latest + env: + CRITERION_TOKEN: ${{ secrets.CRITERION_TOKEN }} + steps: + - uses: actions/checkout@v2 + - name: Run benchmarks + run: | + # run benchmarks and save baseline to "criterion.dev.temp" + cargo bench -- --verbose --noplot --save-baseline criterion.dev.temp + + # set the path to the file to upload to criterion.dev + echo "::set-env name=CRITERION_FILE_PATH::$(find $(find . -type d -name criterion.dev.temp) -name raw.csv)" + - name: Upload benchmarks + run: | + # upload the file + curl -F 'raw.csv=@${{ env.CRITERION_FILE_PATH }}' \ + 'https://api.criterion.dev/v1/${{ github.repository }}/measurements?token=${{ secrets.CRITERION_TOKEN }}&commit=${{ github.sha }}' diff --git a/Cargo.toml b/Cargo.toml index aa7acb1f..2c9b0510 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,3 +17,9 @@ publish = false [package.metadata.docs.rs] rustdoc-args = [ "--html-in-header", "katex-header.html" ] + +[dev-dependencies] +criterion = "0.3" + +[lib] +bench = false