From 8a96988e48048c3ac24c669968450d4629882659 Mon Sep 17 00:00:00 2001 From: Raul Victor Trombin Date: Sat, 23 Nov 2024 13:34:27 -0300 Subject: [PATCH] Add support for running `cargo bench` or `cross bench` --- .github/workflows/test.yml | 60 ++- Changes.md | 5 + action.yml | 26 +- determine-cargo-commands.sh | 13 + test-project/bench/Cargo.lock | 651 ++++++++++++++++++++++++ test-project/bench/Cargo.toml | 11 + test-project/bench/benches/benchmark.rs | 16 + test-project/bench/lib.rs | 0 8 files changed, 752 insertions(+), 30 deletions(-) create mode 100755 determine-cargo-commands.sh create mode 100644 test-project/bench/Cargo.lock create mode 100644 test-project/bench/Cargo.toml create mode 100644 test-project/bench/benches/benchmark.rs create mode 100644 test-project/bench/lib.rs diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 75726f8..8ca693a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,7 +18,7 @@ jobs: expect_file_re: "x86-64.+FreeBSD" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: false + can_execute: false - platform_name: Linux-x86_64 os: ubuntu-20.04 @@ -27,7 +27,7 @@ jobs: expect_file_re: "ELF.+x86-64" expect_cross: "--no-expect-cross" expect_stripped: "--expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 os: ubuntu-20.04 @@ -36,7 +36,7 @@ jobs: expect_file_re: "aarch64" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 (no cache) os: ubuntu-20.04 @@ -45,7 +45,7 @@ jobs: expect_file_re: "aarch64" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 with cross v0.2.3 os: ubuntu-20.04 @@ -56,7 +56,7 @@ jobs: expect_cross: "--expect-cross" expect_cross_version: "0.2.3" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 with cross v0.2.3 (no cache) os: ubuntu-20.04 @@ -67,7 +67,7 @@ jobs: expect_cross: "--expect-cross" expect_cross_version: "0.2.3" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 with cross 19be834 os: ubuntu-20.04 @@ -78,7 +78,7 @@ jobs: expect_cross: "--expect-cross" expect_cross_version: "19be834" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-aarch64 with cross 19be834 os: ubuntu-20.04 @@ -89,7 +89,7 @@ jobs: expect_cross: "--expect-cross" expect_cross_version: "19be834" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-arm os: ubuntu-20.04 @@ -98,7 +98,7 @@ jobs: expect_file_re: "32.+ARM" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-i586 os: ubuntu-20.04 @@ -107,7 +107,7 @@ jobs: expect_file_re: "ELF.+80386" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-i686 os: ubuntu-20.04 @@ -116,7 +116,7 @@ jobs: expect_file_re: "ELF.+80386" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-powerpc os: ubuntu-20.04 @@ -125,7 +125,7 @@ jobs: expect_file_re: "32.+PowerPC" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-powerpc64 os: ubuntu-20.04 @@ -134,7 +134,7 @@ jobs: expect_file_re: "64.+PowerPC" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-powerpc64le os: ubuntu-20.04 @@ -143,7 +143,7 @@ jobs: expect_file_re: "64.+PowerPC" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-riscv64 os: ubuntu-20.04 @@ -152,7 +152,7 @@ jobs: expect_file_re: "64.+RISC-V" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: Linux-s390x os: ubuntu-20.04 @@ -161,7 +161,7 @@ jobs: expect_file_re: "64.+S/390" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: true + can_execute: true - platform_name: NetBSD-x86_64 os: ubuntu-20.04 @@ -170,7 +170,7 @@ jobs: expect_file_re: "x86-64.+NetBSD" expect_cross: "--expect-cross" expect_stripped: "--no-expect-stripped" - can_test: false + can_execute: false - platform_name: Windows-aarch64 os: windows-latest @@ -179,7 +179,7 @@ jobs: expect_file_re: "Aarch64.+Windows" expect_cross: "--no-expect-cross" expect_stripped: "--no-expect-stripped" - can_test: false + can_execute: false - platform_name: Windows-i686 os: windows-latest @@ -188,7 +188,7 @@ jobs: expect_file_re: "80386.+Windows" expect_cross: "--no-expect-cross" expect_stripped: "--expect-stripped" - can_test: true + can_execute: true - platform_name: Windows-x86_64 os: windows-latest @@ -196,7 +196,7 @@ jobs: cache-cross-binary: true expect_file_re: "x86-64.+Windows" expect_stripped: "--expect-stripped" - can_test: true + can_execute: true - platform_name: macOS-x86_64 os: macOS-latest @@ -205,7 +205,7 @@ jobs: expect_file_re: "Mach-O.+x86_64" expect_cross: "--no-expect-cross" expect_stripped: "--expect-stripped" - can_test: true + can_execute: true - platform_name: macOS-aarch64 os: macOS-latest @@ -214,7 +214,7 @@ jobs: expect_file_re: "Mach-O.+arm64" expect_cross: "--no-expect-cross" expect_stripped: "--expect-stripped" - can_test: false + can_execute: false runs-on: ${{ matrix.platform.os }} steps: @@ -233,7 +233,7 @@ jobs: cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} target: ${{ matrix.platform.target }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ matrix.platform.can_test }} + if: ${{ matrix.platform.can_execute }} - name: Run test command uses: ./ with: @@ -242,7 +242,7 @@ jobs: cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} target: ${{ matrix.platform.target }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: ${{ matrix.platform.can_test }} + if: ${{ matrix.platform.can_execute }} - name: Run test command with args uses: ./ with: @@ -252,7 +252,7 @@ jobs: target: ${{ matrix.platform.target }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} args: "-- --ignored" - if: ${{ matrix.platform.can_test }} + if: ${{ matrix.platform.can_execute }} - name: Run build command uses: ./ with: @@ -272,6 +272,16 @@ jobs: target: ${{ matrix.platform.target }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strip: true + - name: Run bench command + uses: ./ + with: + command: bench + cross-version: ${{ matrix.platform.cross-version }} + cache-cross-binary: ${{ matrix.platform.cache-cross-binary }} + target: ${{ matrix.platform.target }} + working-directory: bench + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ matrix.platform.can_execute }} - name: Check binary and cross on ${{ matrix.platform.platform_name }} shell: bash run: | diff --git a/Changes.md b/Changes.md index 7eaf1fe..6a3d934 100644 --- a/Changes.md +++ b/Changes.md @@ -1,3 +1,8 @@ +## 0.0.17 + +- Added support for running `cargo bench` or `cross bench`. Implemented by @RaulTrombin (Raul Victor + Trombin). GH #32. + ## 0.0.16 - 2024-11-17 - Arguments passed in the `args` parameter are now always last when executing `cargo`. This lets you diff --git a/action.yml b/action.yml index 1b37f69..ef29c70 100644 --- a/action.yml +++ b/action.yml @@ -11,7 +11,7 @@ inputs: default: "." command: description: | - The commands to run (one of "build", "test", or "both"). + The commands to run. This must be one of "build", "test", "both" (build and test), or "bench". default: build target: description: The target platform @@ -91,12 +91,16 @@ runs: id: set-build-command shell: bash run: set-build-command.sh ${{ steps.set-cross-dir.outputs.cross-dir }} + - name: Determine which cargo commands to run + id: determine-cargo-commands + shell: bash + run: determine-cargo-commands.sh ${{ inputs.command }} - name: Run tests (*nix) working-directory: ${{ inputs.working-directory }} shell: bash run: | ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} test --target ${{ inputs.target }} ${{ inputs.args }} - if: inputs.command != 'build' && runner.os != 'Windows' + if: steps.determine-cargo-commands.outputs.test == 'true' && runner.os != 'Windows' # We want to run in Powershell on Windows to make sure we compile in a # native Windows environment. Some things won't compile properly under # msys, notably OpenSSL, which is compiled locally when using the @@ -106,19 +110,31 @@ runs: shell: powershell run: | & ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} test --target ${{ inputs.target }} ${{ inputs.args }} - if: inputs.command != 'build' && runner.os == 'Windows' + if: steps.determine-cargo-commands.outputs.test == 'true' && runner.os == 'Windows' + - name: Run benchmarks (*nix) + working-directory: ${{ inputs.working-directory }} + shell: bash + run: | + ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} bench --target ${{ inputs.target }} ${{ inputs.args }} + if: steps.determine-cargo-commands.outputs.bench == 'true' && runner.os != 'Windows' + - name: Run benchmarks (Windows) + working-directory: ${{ inputs.working-directory }} + shell: powershell + run: | + & ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} bench --target ${{ inputs.target }} ${{ inputs.args }} + if: steps.determine-cargo-commands.outputs.bench == 'true' && runner.os == 'Windows' - name: Build binary (*nix) working-directory: ${{ inputs.working-directory }} shell: bash run: | ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} build ${{ inputs.args }} --target ${{ inputs.target }} - if: inputs.command != 'test' && runner.os != 'Windows' + if: steps.determine-cargo-commands.outputs.build == 'true' && runner.os != 'Windows' - name: Build binary (Windows) working-directory: ${{ inputs.working-directory }} shell: powershell run: | & ${{ steps.set-build-command.outputs.build-command }} +${{inputs.toolchain}} build ${{ inputs.args }} --target ${{ inputs.target }} - if: inputs.command != 'test' && runner.os == 'Windows' + if: steps.determine-cargo-commands.outputs.build == 'true' && runner.os == 'Windows' - name: Strip binary working-directory: ${{ inputs.working-directory }} shell: bash diff --git a/determine-cargo-commands.sh b/determine-cargo-commands.sh new file mode 100755 index 0000000..e596ba7 --- /dev/null +++ b/determine-cargo-commands.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e +set -x +set -o pipefail + +COMMAND="$1" +if [ "$COMMAND" == 'both' ]; then + echo "build=true" >>"$GITHUB_OUTPUT" + echo "test=true" >>"$GITHUB_OUTPUT" +else + echo "$COMMAND=true" >>"$GITHUB_OUTPUT" +fi diff --git a/test-project/bench/Cargo.lock b/test-project/bench/Cargo.lock new file mode 100644 index 0000000..b8b90b9 --- /dev/null +++ b/test-project/bench/Cargo.lock @@ -0,0 +1,651 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "bench" +version = "0.1.0" +dependencies = [ + "criterion", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "bitflags", + "clap_lex", + "indexmap", + "textwrap", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "criterion" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb" +dependencies = [ + "anes", + "atty", + "cast", + "ciborium", + "clap", + "criterion-plot", + "itertools", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" + +[[package]] +name = "js-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.164" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "oorandom" +version = "11.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "serde" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.215" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.133" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "2.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" + +[[package]] +name = "web-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/test-project/bench/Cargo.toml b/test-project/bench/Cargo.toml new file mode 100644 index 0000000..aad8546 --- /dev/null +++ b/test-project/bench/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "bench" +version = "0.1.0" +edition = "2021" + +[dev-dependencies] +criterion = "0.4" + +[[bench]] +name = "benchmark" +harness = false diff --git a/test-project/bench/benches/benchmark.rs b/test-project/bench/benches/benchmark.rs new file mode 100644 index 0000000..28481a8 --- /dev/null +++ b/test-project/bench/benches/benchmark.rs @@ -0,0 +1,16 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; + +fn fibonacci(n: u64) -> u64 { + match n { + 0 => 1, + 1 => 1, + n => fibonacci(n-1) + fibonacci(n-2), + } +} + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("fib 20", |b| b.iter(|| fibonacci(black_box(20)))); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/test-project/bench/lib.rs b/test-project/bench/lib.rs new file mode 100644 index 0000000..e69de29