diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index a49b90d1..aa4eda25 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -36,6 +36,8 @@ jobs: with: profile: minimal components: rustfmt, clippy + # Make sure to use cached compilation objects if they exist. + - uses: Swatinem/rust-cache@v2 - name: Check code format uses: actions-rs/cargo@v1 with: diff --git a/.github/workflows/tpch.yaml b/.github/workflows/tpch.yaml new file mode 100644 index 00000000..f921cc6a --- /dev/null +++ b/.github/workflows/tpch.yaml @@ -0,0 +1,51 @@ +name: Rust TPC-H Benchmarks + +# Do NOT run this workflow on pull request since this workflow has permission to modify contents. +on: + push: + branches: + - main + - continuous-bench-attempt + +permissions: + # deployments permission to deploy GitHub pages website + deployments: write + # contents permission to update benchmark contents in gh-pages branch + contents: write + +jobs: + benchmark: + name: Run Rust benchmark example + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + # Setup Rust. + - run: rustup toolchain install stable --profile minimal --no-self-update + + # Make sure to use cached compilation objects if they exist. + - uses: Swatinem/rust-cache@v2 + + # Run the benchmark and store the result in `output.txt`. + - name: Run benchmark + run: cargo bench --bench planner_bench tpch/ -- --output-format bencher | tee output.txt + + # Run the `github-action-benchmark` action. + - name: Store benchmark result + uses: benchmark-action/github-action-benchmark@v1 + with: + name: TPC-H Planning and Execution Benchmark + tool: "cargo" + output-file-path: output.txt + gh-pages-branch: gh-pages + github-token: ${{ secrets.GITHUB_TOKEN }} + # Automatically push the results to the GitHub pages branch. + auto-push: true + # Show alert with commit comment on detecting possible performance regression. + alert-threshold: "125%" + summary-always: true + comment-on-alert: true + fail-on-alert: true + alert-comment-cc-users: "@connortsui20" + # Push to dedicated benchmark result repository. + # gh-repository: "github.com/cmu-db/optd-benchmark" # TODO NOT WORKING diff --git a/optd-core/src/cascades/optimizer.rs b/optd-core/src/cascades/optimizer.rs index d1b66607..e971343b 100644 --- a/optd-core/src/cascades/optimizer.rs +++ b/optd-core/src/cascades/optimizer.rs @@ -261,10 +261,10 @@ impl> CascadesOptimizer { let plan_space = self.memo.estimated_plan_space(); if let Some(partial_explore_space) = self.prop.partial_explore_space { if plan_space - plan_space_begin > partial_explore_space { - println!( - "plan space size budget used, not applying logical rules any more. current plan space: {}", - plan_space - ); + // println!( + // "plan space size budget used, not applying logical rules any more. current plan space: {}", + // plan_space + // ); self.ctx.budget_used = true; if self.prop.panic_on_budget { panic!("plan space size budget used");