Skip to content

Conversation

@sharkdp
Copy link
Contributor

@sharkdp sharkdp commented Jun 26, 2025

Summary

Avoid the construction of the DeclaredTypeBuilder if there is just one declared type.

@sharkdp sharkdp added the performance Potential performance improvement label Jun 26, 2025
@sharkdp sharkdp requested a review from dcreager as a code owner June 26, 2025 10:30
@sharkdp sharkdp added ty Multi-file analysis & type inference internal An internal refactor or improvement labels Jun 26, 2025
@github-actions
Copy link
Contributor

mypy_primer results

No ecosystem changes detected ✅

@AlexWaygood
Copy link
Member

@sharkdp
Copy link
Contributor Author

sharkdp commented Jun 26, 2025

some nice speedups of 1-2% on our benchmarks there: https://codspeed.io/astral-sh/ruff/branches/david%2Fprevent-builder-construction?runnerMode=Instrumentation

Nice! Good call, @carljm.

@sharkdp sharkdp merged commit c0beb34 into main Jun 26, 2025
61 of 62 checks passed
@sharkdp sharkdp deleted the david/prevent-builder-construction branch June 26, 2025 11:00
@MichaReiser
Copy link
Member

are you saying I should see if my UnionBuilder::from_elements optimization shows a perf win now

@sharkdp
Copy link
Contributor Author

sharkdp commented Jun 26, 2025

are you saying I should see if my UnionBuilder::from_elements optimization shows a perf win now

Notice that the builder here is not a pure UnionBuilder. Not sure what your optimization was about, but it's unlikely to translate to DeclaredTypeBuilder, I think. I used "union builder" in the title because this is a wrapper around UnionBuilder.

@MichaReiser
Copy link
Member

It was this #16218

dcreager added a commit that referenced this pull request Jun 26, 2025
* main:
  [ty] Add regression-benchmark for attribute-assignment hang (#18957)
  [ty] Format conflicting types as an enumeration (#18956)
  [ty] Prevent union builder construction for just one declaration (#18954)
  [ty] Infer nonlocal types as unions of all reachable bindings (#18750)
  [`pyflakes`] Mark `F504`/`F522`/`F523` autofix as unsafe if there's a call with side effect (#18839)
  [`playground`] Add ruff logo docs link to Header.tsx (#18947)
  [ty] Reduce the overwhelming complexity of `TypeInferenceBuilder::infer_call_expression` (#18943)
  [ty] Add subdiagnostic about empty bodies in more cases (#18942)
  [ty] Move search path resolution to `Options::to_program_settings` (#18937)
  [`flake8-errmsg`] Extend `EM101` to support byte strings (#18867)
  Move big rule implementations (#18931)
  [`pylint`] Allow fix with comments and document performance implications (`PLW3301`) (#18936)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal An internal refactor or improvement performance Potential performance improvement ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants