Change summary
.github/workflows/compare_perf.yml | 18 +++++++++--
tooling/xtask/src/tasks/workflows/compare_perf.rs | 24 ++++++++++++----
2 files changed, 32 insertions(+), 10 deletions(-)
Detailed changes
@@ -14,7 +14,7 @@ on:
type: string
jobs:
run_perf:
- runs-on: namespace-profile-2x4-ubuntu-2404
+ runs-on: namespace-profile-16x32-ubuntu-2204
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -23,11 +23,21 @@ jobs:
- name: compare_perf::run_perf::echo_inputs
run: echo ${{ inputs.base }} ${{ inputs.head }}
shell: bash -euxo pipefail {0}
- - name: compare_perf::run_perf::create_results
- run: mkdir -p target; echo 'Perf is *much* better now' > target/results.md
+ - name: git checkout ${{ inputs.base }}
+ run: git checkout {ref_name}
+ - name: compare_perf::run_perf::cargo_perf_test
+ run: cargo perf-test -p gpui -- --json=${{ inputs.base }}
+ shell: bash -euxo pipefail {0}
+ - name: git checkout ${{ inputs.head }}
+ run: git checkout {ref_name}
+ - name: compare_perf::run_perf::cargo_perf_test
+ run: cargo perf-test -p gpui -- --json=${{ inputs.head }}
+ shell: bash -euxo pipefail {0}
+ - name: compare_perf::run_perf::compare_runs
+ run: cargo perf-compare ${{ inputs.base }} ${{ inputs.head }} --save=results.md
shell: bash -euxo pipefail {0}
- name: '@actions/upload-artifact results.md'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
with:
name: results.md
- path: target/results.md
+ path: results.md
@@ -6,7 +6,6 @@ use crate::tasks::workflows::{
vars::Input,
};
-/// Generates the danger.yml workflow
pub fn compare_perf() -> Workflow {
let head = Input::string("head", None);
let base = Input::string("base", None);
@@ -25,16 +24,29 @@ pub fn run_perf(base: &Input, head: &Input) -> NamedJob {
named::bash(&format!("echo {} {}", base.var(), head.var()))
}
- fn create_results() -> Step<Run> {
- named::bash("mkdir -p target; echo 'Perf is *much* better now' > target/results.md")
+ fn cargo_perf_test(ref_name: String) -> Step<Run> {
+ named::bash(&format!("cargo perf-test -p gpui -- --json={ref_name}"))
+ }
+
+ fn git_checkout(ref_name: String) -> Step<Run> {
+ Step::new(&format!("git checkout {ref_name}")).run("git checkout {ref_name}")
+ }
+
+ fn compare_runs(head: String, base: String) -> Step<Run> {
+ // TODO: this should really be swapped...
+ named::bash(&format!("cargo perf-compare {base} {head} --save=results.md"))
}
named::job(
Job::default()
- .runs_on(runners::LINUX_SMALL)
+ .runs_on(runners::LINUX_DEFAULT)
.add_step(steps::checkout_repo())
.add_step(echo_inputs(base, head))
- .add_step(create_results())
- .add_step(upload_artifact("results.md", "target/results.md")),
+ .add_step(git_checkout(base.var()))
+ .add_step(cargo_perf_test(base.var()))
+ .add_step(git_checkout(head.var()))
+ .add_step(cargo_perf_test(head.var()))
+ .add_step(compare_runs(head.var(), base.var()))
+ .add_step(upload_artifact("results.md", "results.md")),
)
}