From b54aa1b8b24cb21e10702e58f895b1e22ebe4937 Mon Sep 17 00:00:00 2001 From: klensy Date: Tue, 16 Jan 2024 14:45:22 +0300 Subject: [PATCH] tidy: wrap regexes with lazy_static yes, once_cell better, but ... this reduces from ==31349== Total: 1,365,199,543 bytes in 4,774,213 blocks ==31349== At t-gmax: 10,975,708 bytes in 66,093 blocks ==31349== At t-end: 2,880,947 bytes in 12,332 blocks ==31349== Reads: 5,210,008,956 bytes ==31349== Writes: 1,280,920,127 bytes to ==47796== Total: 821,467,407 bytes in 3,955,595 blocks ==47796== At t-gmax: 10,976,209 bytes in 66,100 blocks ==47796== At t-end: 2,944,016 bytes in 12,490 blocks ==47796== Reads: 4,788,959,023 bytes ==47796== Writes: 975,493,639 bytes --- Cargo.lock | 1 + src/tools/miropt-test-tools/Cargo.toml | 1 + src/tools/miropt-test-tools/src/lib.rs | 9 +++++++-- src/tools/tidy/src/style.rs | 6 ++++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f85d523fc1bcc..fcda95a7dc6c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2493,6 +2493,7 @@ dependencies = [ name = "miropt-test-tools" version = "0.1.0" dependencies = [ + "lazy_static", "regex", ] diff --git a/src/tools/miropt-test-tools/Cargo.toml b/src/tools/miropt-test-tools/Cargo.toml index 8589a44cf1bab..91c2643e39c39 100644 --- a/src/tools/miropt-test-tools/Cargo.toml +++ b/src/tools/miropt-test-tools/Cargo.toml @@ -5,3 +5,4 @@ edition = "2021" [dependencies] regex = "1.0" +lazy_static = "1" diff --git a/src/tools/miropt-test-tools/src/lib.rs b/src/tools/miropt-test-tools/src/lib.rs index cae96f593199e..5790608f481a0 100644 --- a/src/tools/miropt-test-tools/src/lib.rs +++ b/src/tools/miropt-test-tools/src/lib.rs @@ -1,6 +1,8 @@ use std::fs; use std::path::Path; +use regex::Regex; + pub struct MiroptTestFile { pub expected_file: std::path::PathBuf, pub from_file: String, @@ -98,8 +100,11 @@ pub fn files_for_miropt_test( from_file = format!("{}.{}.mir", test_name, first_pass); to_file = Some(second_file); } else { - let ext_re = regex::Regex::new(r#"(\.(mir|dot|html))$"#).unwrap(); - let cap = ext_re + lazy_static::lazy_static! { + static ref EXT_RE: Regex = Regex::new(r#"(\.(mir|dot|html))$"#).unwrap(); + } + + let cap = EXT_RE .captures_iter(test_name) .next() .expect("test_name has an invalid extension"); diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index 8b0e80a94b0b3..bb5a796f19e2b 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -127,8 +127,10 @@ fn should_ignore(line: &str) -> bool { // Matches test annotations like `//~ ERROR text`. // This mirrors the regex in src/tools/compiletest/src/runtest.rs, please // update both if either are changed. - let re = Regex::new("\\s*//(\\[.*\\])?~.*").unwrap(); - re.is_match(line) || ANNOTATIONS_TO_IGNORE.iter().any(|a| line.contains(a)) + lazy_static::lazy_static! { + static ref ANNOTATION_RE: Regex = Regex::new("\\s*//(\\[.*\\])?~.*").unwrap(); + } + ANNOTATION_RE.is_match(line) || ANNOTATIONS_TO_IGNORE.iter().any(|a| line.contains(a)) } /// Returns `true` if `line` is allowed to be longer than the normal limit.