diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 0000000000000..baa5dd8558311 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,33 @@ +name: codspeed-benchmarks + +on: + # Run on pushes to the master branch + push: + branches: + - "master" + # Run on pull requests + 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@v4 + - name: Setup rust toolchain, cache and cargo-codspeed binary + uses: moonrepo/setup-rust@v1 + with: + cache-target: release + bins: cargo-codspeed + + - name: Build the benchmark target(s) + working-directory: v3 + run: cargo codspeed build -p engine -p lang-graphql + + - name: Run the benchmarks + uses: CodSpeedHQ/action@v2 + with: + working-directory: v3 + run: cargo codspeed run -p engine -p lang-graphql diff --git a/v3/Cargo.lock b/v3/Cargo.lock index 9ca28a73a5f4a..d63a925c70fd4 100644 --- a/v3/Cargo.lock +++ b/v3/Cargo.lock @@ -908,12 +908,46 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +[[package]] +name = "codspeed" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a104ac948e0188b921eb3fcbdd55dcf62e542df4c7ab7e660623f6288302089" +dependencies = [ + "colored", + "libc", + "serde_json", +] + +[[package]] +name = "codspeed-criterion-compat" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "722c36bdc62d9436d027256ce2627af81ac7a596dfc7d13d849d0d212448d7fe" +dependencies = [ + "codspeed", + "colored", + "criterion", + "futures", + "tokio", +] + [[package]] name = "colorchoice" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + [[package]] name = "combine" version = "3.8.1" @@ -1717,7 +1751,7 @@ dependencies = [ "base64 0.22.1", "build-data", "clap", - "criterion", + "codspeed-criterion-compat", "execute", "goldenfile", "hasura-authn-core", @@ -1792,7 +1826,7 @@ dependencies = [ "axum", "base64 0.22.1", "bytes", - "criterion", + "codspeed-criterion-compat", "derive_more", "futures-ext", "futures-util", @@ -2594,7 +2628,7 @@ dependencies = [ "axum", "bincode", "bson", - "criterion", + "codspeed-criterion-compat", "diffy", "expect-test", "graphql-parser", diff --git a/v3/Cargo.toml b/v3/Cargo.toml index d42ca4876b7f1..40f5ff565cdf2 100644 --- a/v3/Cargo.toml +++ b/v3/Cargo.toml @@ -70,7 +70,7 @@ bytes = "1" clap = "4" convert_case = "0.6" cookie = "0.18" -criterion = "0.5" +criterion = { package="codspeed-criterion-compat", version = "2.6.0" } darling = "0.20" derive_more = "0.99" diffy = "0.4"