ruff/crates/ruff_benchmark/benches
Carl Meyer 5a115e750d
[red-knot] make large-union benchmark slow again (#17418)
## Summary

Now that we've made the large-unions benchmark fast, let's make it slow
again!

This adds a following operation (checking `len`) on the large union,
which is slow, even though building the large union is now fast. (This
is also observed in a real-world code sample.) It's slow because for
every element of the union, we fetch its `__len__` method and check it
for compatibility with `Sized`.

We can make this fast by extending the grouped-types approach, as
discussed in https://github.com/astral-sh/ruff/pull/17403, so that we
can do this `__len__` operation (which is identical for every literal
string) just once for all literal strings, instead of once per literal
string type in the union.

Until we do that, we can make this acceptably fast again for now by
setting a lowish limit on union size, which we can increase in the
future when we make it fast. This is what I'll do in the next PR.

## Test Plan

`cargo bench --bench red_knot`
2025-04-16 14:05:42 +00:00
..
formatter.rs Pass ParserOptions to the parser (#16220) 2025-02-19 10:50:50 -05:00
lexer.rs [ci]: Fixup codspeed upgrade (#16790) 2025-03-17 09:14:22 +01:00
linter.rs Server: Allow FixAll action in presence of version-specific syntax errors (#16848) 2025-03-20 05:09:14 -05:00
parser.rs [ci]: Fixup codspeed upgrade (#16790) 2025-03-17 09:14:22 +01:00
red_knot.rs [red-knot] make large-union benchmark slow again (#17418) 2025-04-16 14:05:42 +00:00