diff options
| author | bors <bors@rust-lang.org> | 2023-07-02 15:48:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-07-02 15:48:50 +0000 |
| commit | ea4ca225fb3b22ea8c7dbc0cde87b29f003d85e6 (patch) | |
| tree | 2d3fae90bdc94a4e9fda3e6cfeb703046685e152 /tests | |
| parent | 83d0682d5e40efebc6e06510a7012b8fd01b6c51 (diff) | |
| parent | 57923c3720fad870b1edeed1dbe74f990b431288 (diff) | |
| download | rust-ea4ca225fb3b22ea8c7dbc0cde87b29f003d85e6.tar.gz rust-ea4ca225fb3b22ea8c7dbc0cde87b29f003d85e6.zip | |
Auto merge of #10920 - blyxyas:speedtest, r=llogiq
Add `SPEEDTEST` In the `master` branch, we currently don't have any way to test the performance of a single lint in changes. This PR adds `SPEEDTEST`, the environment variable which lets you do a speed test on a lint / category of tests with various configuration options. Maybe we should merge this with `lintcheck` :thinking: See the book page for more information. changelog:none
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/compile-test.rs | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/tests/compile-test.rs b/tests/compile-test.rs index dce6f2fc272..d37151b19b6 100644 --- a/tests/compile-test.rs +++ b/tests/compile-test.rs @@ -217,12 +217,45 @@ fn main() { } set_var("CLIPPY_DISABLE_DOCS_LINKS", "true"); - run_ui(); - run_ui_toml(); - run_ui_cargo(); - run_internal_tests(); - rustfix_coverage_known_exceptions_accuracy(); - ui_cargo_toml_metadata(); + // The SPEEDTEST_* env variables can be used to check Clippy's performance on your PR. It runs the + // affected test 1000 times and gets the average. + if let Ok(speedtest) = std::env::var("SPEEDTEST") { + println!("----------- STARTING SPEEDTEST -----------"); + let f = match speedtest.as_str() { + "ui" => run_ui as fn(), + "cargo" => run_ui_cargo as fn(), + "toml" => run_ui_toml as fn(), + "internal" => run_internal_tests as fn(), + "rustfix-coverage-known-exceptions-accuracy" => rustfix_coverage_known_exceptions_accuracy as fn(), + "ui-cargo-toml-metadata" => ui_cargo_toml_metadata as fn(), + + _ => panic!("unknown speedtest: {speedtest} || accepted speedtests are: [ui, cargo, toml, internal]"), + }; + + let iterations; + if let Ok(iterations_str) = std::env::var("SPEEDTEST_ITERATIONS") { + iterations = iterations_str + .parse::<u64>() + .unwrap_or_else(|_| panic!("Couldn't parse `{iterations_str}`, please use a valid u64")); + } else { + iterations = 1000; + } + + let mut sum = 0; + for _ in 0..iterations { + let start = std::time::Instant::now(); + f(); + sum += start.elapsed().as_millis(); + } + println!("average {} time: {} millis.", speedtest.to_uppercase(), sum / 1000); + } else { + run_ui(); + run_ui_toml(); + run_ui_cargo(); + run_internal_tests(); + rustfix_coverage_known_exceptions_accuracy(); + ui_cargo_toml_metadata(); + } } const RUSTFIX_COVERAGE_KNOWN_EXCEPTIONS: &[&str] = &[ |
