diff --git a/.github/workflows/jmeter-benchmarking.yaml b/.github/workflows/jmeter-benchmarking.yaml index bede762c2d..de7019fd04 100644 --- a/.github/workflows/jmeter-benchmarking.yaml +++ b/.github/workflows/jmeter-benchmarking.yaml @@ -1,6 +1,8 @@ -name: Minimal setup +name: JMH Benchmark + on: push: + pull_request: branches: - main @@ -8,37 +10,28 @@ jobs: benchmark: runs-on: ubuntu-latest steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Set up JDK + uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '11' + + - name: Run JMH Benchmark + run: | + javac Benchmark.java && java -jar target/benchmarks.jar + + - name: Save Benchmark Results + run: | + cp path/to/generated/benchmark-results.json benchmark-results.json + + - name: Display Benchmark Results + run: cat benchmark-results.json + - name: Continuous Benchmark uses: benchmark-action/github-action-benchmark@v1.18.0 - -# jobs: -# benchmark: -# name: Performance regression check -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v2 -# - uses: actions/setup-go@v4 -# with: -# go-version: "stable" -# # Run benchmark with `go test -bench` and stores the output to a file -# - name: Run benchmark -# run: go mod init && go test -bench 'BenchmarkFib' | 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: benchmark-action/github-action-benchmark@v1 -# with: -# # What benchmark tool the output.txt came from -# tool: 'go' -# # 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 -# # Upload the updated cache file for the next job by actions/cache + with: + tool: jmh + output-file-path: benchmark-results.json \ No newline at end of file diff --git a/Benchmark.java b/Benchmark.java new file mode 100644 index 0000000000..17e44ecb56 --- /dev/null +++ b/Benchmark.java @@ -0,0 +1,21 @@ +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Warmup; + +@State(Scope.Benchmark) +public class Benchmark { + + @Setup + public void setup() { + } + + @Benchmark + @Warmup(iterations = 3) + @Measurement(iterations = 5) + public void benchmarkMethod() { + // benchmarked code + } +}