mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-04 02:38:25 +00:00
Refactor top llvm-lines entry (#5147)
## Summary This refactors the top entry in terms of llvm lines, `RuleCodePrefix::iter()`. It's only used for generating the schema and the clap completion so no effect on performance. I've confirmed with ``` CARGO_TARGET_DIR=target-llvm-lines RUSTFLAGS="-Csymbol-mangling-version=v0" cargo llvm-lines -p ruff --lib | head -n 20 ``` that this indeed remove the method from the list of heaviest symbols in terms of llvm-lines Before: ``` Lines Copies Function name ----- ------ ------------- 1768469 40538 (TOTAL) 10391 (0.6%, 0.6%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::RuleCodePrefix>::iter 8250 (0.5%, 1.1%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule>::noqa_code 7427 (0.4%, 1.5%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::checkers::ast::Checker as ruff_python_ast[c4c9eadfa5741dd4]::visitor::Visitor>::visit_stmt 6536 (0.4%, 1.8%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:spanned::SpannedDeserializer<toml_edit[de4ca26332d39787]:🇩🇪:value::ValueDeserializer>> 6536 (0.4%, 2.2%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:table::TableMapAccess> 6533 (0.4%, 2.6%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:datetime::DatetimeDeserializer> 5727 (0.3%, 2.9%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::checkers::ast::Checker as ruff_python_ast[c4c9eadfa5741dd4]::visitor::Visitor>::visit_expr 4453 (0.3%, 3.2%) 1 (0.0%, 0.0%) ruff[fa0f2e8ef07114da]::flake8_to_ruff::converter::convert 3790 (0.2%, 3.4%) 1 (0.0%, 0.0%) <&ruff[fa0f2e8ef07114da]::registry::Linter as core[da82827a87f140f9]::iter::traits::collect::IntoIterator>::into_iter 3416 (0.2%, 3.6%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::registry::Linter>::code_for_rule 3187 (0.2%, 3.7%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule as core[da82827a87f140f9]::fmt::Debug>::fmt 3185 (0.2%, 3.9%) 1 (0.0%, 0.0%) <&str as core[da82827a87f140f9]::convert::From<&ruff[fa0f2e8ef07114da]::codes::Rule>>::from 3185 (0.2%, 4.1%) 1 (0.0%, 0.0%) <&str as core[da82827a87f140f9]::convert::From<ruff[fa0f2e8ef07114da]::codes::Rule>>::from 3185 (0.2%, 4.3%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule as core[da82827a87f140f9]::convert::AsRef<str>>::as_ref 3183 (0.2%, 4.5%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::RuleIter>::get 2718 (0.2%, 4.6%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_seq::<toml_edit[de4ca26332d39787]:🇩🇪:array::ArraySeqAccess> 2706 (0.2%, 4.8%) 1 (0.0%, 0.0%) <&ruff[fa0f2e8ef07114da]::codes::Pylint as core[da82827a87f140f9]::iter::traits::collect::IntoIterator>::into_iter ``` After: ``` Lines Copies Function name ----- ------ ------------- 1763380 40806 (TOTAL) 8250 (0.5%, 0.5%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule>::noqa_code 7427 (0.4%, 0.9%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::checkers::ast::Checker as ruff_python_ast[c4c9eadfa5741dd4]::visitor::Visitor>::visit_stmt 6536 (0.4%, 1.3%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:spanned::SpannedDeserializer<toml_edit[de4ca26332d39787]:🇩🇪:value::ValueDeserializer>> 6536 (0.4%, 1.6%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:table::TableMapAccess> 6533 (0.4%, 2.0%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:datetime::DatetimeDeserializer> 5727 (0.3%, 2.3%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::checkers::ast::Checker as ruff_python_ast[c4c9eadfa5741dd4]::visitor::Visitor>::visit_expr 4453 (0.3%, 2.6%) 1 (0.0%, 0.0%) ruff[fa0f2e8ef07114da]::flake8_to_ruff::converter::convert 3790 (0.2%, 2.8%) 1 (0.0%, 0.0%) <&ruff[fa0f2e8ef07114da]::registry::Linter as core[da82827a87f140f9]::iter::traits::collect::IntoIterator>::into_iter 3416 (0.2%, 3.0%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::registry::Linter>::code_for_rule 3187 (0.2%, 3.2%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule as core[da82827a87f140f9]::fmt::Debug>::fmt 3185 (0.2%, 3.3%) 1 (0.0%, 0.0%) <&str as core[da82827a87f140f9]::convert::From<&ruff[fa0f2e8ef07114da]::codes::Rule>>::from 3185 (0.2%, 3.5%) 1 (0.0%, 0.0%) <&str as core[da82827a87f140f9]::convert::From<ruff[fa0f2e8ef07114da]::codes::Rule>>::from 3185 (0.2%, 3.7%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::Rule as core[da82827a87f140f9]::convert::AsRef<str>>::as_ref 3183 (0.2%, 3.9%) 1 (0.0%, 0.0%) <ruff[fa0f2e8ef07114da]::codes::RuleIter>::get 2718 (0.2%, 4.0%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::settings::options::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_seq::<toml_edit[de4ca26332d39787]:🇩🇪:array::ArraySeqAccess> 2706 (0.2%, 4.2%) 1 (0.0%, 0.0%) <&ruff[fa0f2e8ef07114da]::codes::Pylint as core[da82827a87f140f9]::iter::traits::collect::IntoIterator>::into_iter 2573 (0.1%, 4.3%) 1 (0.0%, 0.0%) <<ruff[fa0f2e8ef07114da]::rules::isort::settings::Options as serde[1a28808d63625aed]:🇩🇪:Deserialize>::deserialize::__Visitor as serde[1a28808d63625aed]:🇩🇪:Visitor>::visit_map::<toml_edit[de4ca26332d39787]:🇩🇪:spanned::SpannedDeserializer<toml_edit[de4ca26332d39787]:🇩🇪:value::ValueDeserializer>> ``` I didn't measure the effect on binary size this time. ## Testing `cargo test` which uses this to generate the schema didn't change
This commit is contained in:
parent
653a0ebf2d
commit
763d38cafb
1 changed files with 7 additions and 5 deletions
|
@ -178,8 +178,7 @@ pub(crate) fn map_codes(func: &ItemFn) -> syn::Result<TokenStream> {
|
|||
let rule_to_code = generate_rule_to_code(&linter_to_rules);
|
||||
output.extend(rule_to_code);
|
||||
|
||||
let iter = generate_iter_impl(&linter_to_rules, &all_codes);
|
||||
output.extend(iter);
|
||||
output.extend(generate_iter_impl(&linter_to_rules, &linter_idents));
|
||||
|
||||
Ok(output)
|
||||
}
|
||||
|
@ -326,7 +325,7 @@ See also https://github.com/astral-sh/ruff/issues/2186.
|
|||
/// Implement `impl IntoIterator for &Linter` and `RuleCodePrefix::iter()`
|
||||
fn generate_iter_impl(
|
||||
linter_to_rules: &BTreeMap<Ident, BTreeMap<String, Rule>>,
|
||||
all_codes: &[TokenStream],
|
||||
linter_idents: &[&Ident],
|
||||
) -> TokenStream {
|
||||
let mut linter_into_iter_match_arms = quote!();
|
||||
for (linter, map) in linter_to_rules {
|
||||
|
@ -352,8 +351,11 @@ fn generate_iter_impl(
|
|||
}
|
||||
|
||||
impl RuleCodePrefix {
|
||||
pub fn iter() -> ::std::vec::IntoIter<RuleCodePrefix> {
|
||||
vec![ #(#all_codes,)* ].into_iter()
|
||||
pub fn iter() -> impl Iterator<Item = RuleCodePrefix> {
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
std::iter::empty()
|
||||
#(.chain(#linter_idents::iter().map(|x| Self::#linter_idents(x))))*
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue