From 2f2ceb24265a7e63601cf1ffde7d586cd666a783 Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Mon, 16 Nov 2020 13:04:35 -0800 Subject: [PATCH] chore(ci): automatically publish benchmarks in a graph --- .github/workflows/bench.yml | 58 +++++++++++++++++++++++++++++++++++++ benches/pipeline.rs | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/bench.yml diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml new file mode 100644 index 00000000..1243c481 --- /dev/null +++ b/.github/workflows/bench.yml @@ -0,0 +1,58 @@ +name: Benchmark +on: + push: + branches: + - master + +jobs: + benchmark: + name: Benchmark + runs-on: ubuntu-latest + strategy: + matrix: + bench: + - connect + - end_to_end + - pipeline + steps: + - uses: actions/checkout@v2 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + + # Run benchmark and stores the output to a file + - name: Run benchmark + run: cargo bench --bench ${{ matrix.bench }} | tee output.txt + + # 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: seanmonstar/github-action-benchmark@v1-patch-1 + with: + name: ${{ matrix.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 + # # Where the previous data file is stored + # external-data-json-path: ./cache/benchmark-data.json + # Workflow will fail when an alert happens + fail-on-alert: true + # GitHub API token to make a commit comment + github-token: ${{ secrets.GITHUB_TOKEN }} + # Enable alert commit comment + comment-on-alert: true + #alert-comment-cc-users: '@seanmonstar' + auto-push: true + + # Upload the updated cache file for the next job by actions/cache diff --git a/benches/pipeline.rs b/benches/pipeline.rs index 40b0b31d..d5cc67b4 100644 --- a/benches/pipeline.rs +++ b/benches/pipeline.rs @@ -16,7 +16,7 @@ use hyper::{Body, Response, Server}; const PIPELINED_REQUESTS: usize = 16; #[bench] -fn hello_world(b: &mut test::Bencher) { +fn hello_world_16(b: &mut test::Bencher) { let _ = pretty_env_logger::try_init(); let (_until_tx, until_rx) = oneshot::channel::<()>();