astral-sh
ruff
BlogDocsChangelog

Performance History

Latest Results

[ty] Fix goto-declaration on the RHS of `from module import submodule` (#22042)
main
3 minutes ago
[ty] Small union builder nits
micha/union-builder-simplify
9 minutes ago
support rendering `__doc__` on hover
gankra/dunder-doc
1 hour ago
Make `analyze_single_pattern_predicate` a `#[salsa::tracked]` function (#22045) ## Summary We had a report of a blowup with the following snippet: ```python from enum import StrEnum class BigEnum(StrEnum): VALUE_01 = "VALUE_01" VALUE_02 = "VALUE_02" VALUE_03 = "VALUE_03" VALUE_04 = "VALUE_04" VALUE_05 = "VALUE_05" VALUE_06 = "VALUE_06" VALUE_07 = "VALUE_07" VALUE_08 = "VALUE_08" VALUE_09 = "VALUE_09" VALUE_10 = "VALUE_10" VALUE_11 = "VALUE_11" VALUE_12 = "VALUE_12" VALUE_13 = "VALUE_13" VALUE_14 = "VALUE_14" VALUE_15 = "VALUE_15" VALUE_16 = "VALUE_16" VALUE_17 = "VALUE_17" VALUE_18 = "VALUE_18" VALUE_19 = "VALUE_19" VALUE_20 = "VALUE_20" VALUE_21 = "VALUE_21" VALUE_22 = "VALUE_22" VALUE_23 = "VALUE_23" VALUE_24 = "VALUE_24" VALUE_25 = "VALUE_25" VALUE_26 = "VALUE_26" VALUE_27 = "VALUE_27" VALUE_28 = "VALUE_28" VALUE_29 = "VALUE_29" VALUE_30 = "VALUE_30" VALUE_31 = "VALUE_31" VALUE_32 = "VALUE_32" VALUE_33 = "VALUE_33" VALUE_34 = "VALUE_34" VALUE_35 = "VALUE_35" VALUE_36 = "VALUE_36" VALUE_37 = "VALUE_37" VALUE_38 = "VALUE_38" VALUE_39 = "VALUE_39" VALUE_40 = "VALUE_40" VALUE_41 = "VALUE_41" VALUE_42 = "VALUE_42" VALUE_43 = "VALUE_43" VALUE_44 = "VALUE_44" VALUE_45 = "VALUE_45" VALUE_46 = "VALUE_46" VALUE_47 = "VALUE_47" VALUE_48 = "VALUE_48" VALUE_49 = "VALUE_49" VALUE_50 = "VALUE_50" VALUE_51 = "VALUE_51" VALUE_52 = "VALUE_52" VALUE_53 = "VALUE_53" VALUE_54 = "VALUE_54" VALUE_55 = "VALUE_55" VALUE_56 = "VALUE_56" VALUE_57 = "VALUE_57" VALUE_58 = "VALUE_58" VALUE_59 = "VALUE_59" VALUE_60 = "VALUE_60" VALUE_61 = "VALUE_61" VALUE_62 = "VALUE_62" VALUE_63 = "VALUE_63" VALUE_64 = "VALUE_64" VALUE_65 = "VALUE_65" VALUE_66 = "VALUE_66" VALUE_67 = "VALUE_67" VALUE_68 = "VALUE_68" VALUE_69 = "VALUE_69" VALUE_70 = "VALUE_70" VALUE_71 = "VALUE_71" VALUE_72 = "VALUE_72" VALUE_73 = "VALUE_73" VALUE_74 = "VALUE_74" VALUE_75 = "VALUE_75" VALUE_76 = "VALUE_76" VALUE_77 = "VALUE_77" VALUE_78 = "VALUE_78" VALUE_79 = "VALUE_79" VALUE_80 = "VALUE_80" VALUE_81 = "VALUE_81" VALUE_82 = "VALUE_82" VALUE_83 = "VALUE_83" VALUE_84 = "VALUE_84" VALUE_85 = "VALUE_85" VALUE_86 = "VALUE_86" VALUE_87 = "VALUE_87" VALUE_88 = "VALUE_88" VALUE_89 = "VALUE_89" VALUE_90 = "VALUE_90" VALUE_91 = "VALUE_91" VALUE_92 = "VALUE_92" VALUE_93 = "VALUE_93" VALUE_94 = "VALUE_94" VALUE_95 = "VALUE_95" VALUE_96 = "VALUE_96" VALUE_97 = "VALUE_97" VALUE_98 = "VALUE_98" VALUE_99 = "VALUE_99" def get_info(self) -> tuple[str, int]: match self: case BigEnum.VALUE_01: return self.value, 1 case BigEnum.VALUE_02: return self.value, 2 case BigEnum.VALUE_03: return self.value, 3 case BigEnum.VALUE_04: return self.value, 4 case BigEnum.VALUE_05: return self.value, 5 case BigEnum.VALUE_06: return self.value, 6 case BigEnum.VALUE_07: return self.value, 7 case BigEnum.VALUE_08: return self.value, 8 case BigEnum.VALUE_09: return self.value, 9 case BigEnum.VALUE_10: return self.value, 10 case BigEnum.VALUE_11: return self.value, 11 case BigEnum.VALUE_12: return self.value, 12 case BigEnum.VALUE_13: return self.value, 13 case BigEnum.VALUE_14: return self.value, 14 case BigEnum.VALUE_15: return self.value, 15 case BigEnum.VALUE_16: return self.value, 16 case BigEnum.VALUE_17: return self.value, 17 case BigEnum.VALUE_18: return self.value, 18 case BigEnum.VALUE_19: return self.value, 19 case BigEnum.VALUE_20: return self.value, 20 case BigEnum.VALUE_21: return self.value, 21 case BigEnum.VALUE_22: return self.value, 22 case BigEnum.VALUE_23: return self.value, 23 case BigEnum.VALUE_24: return self.value, 24 case BigEnum.VALUE_25: return self.value, 25 case BigEnum.VALUE_26: return self.value, 26 case BigEnum.VALUE_27: return self.value, 27 case BigEnum.VALUE_28: return self.value, 28 case BigEnum.VALUE_29: return self.value, 29 case BigEnum.VALUE_30: return self.value, 30 case BigEnum.VALUE_31: return self.value, 31 case BigEnum.VALUE_32: return self.value, 32 case BigEnum.VALUE_33: return self.value, 33 case BigEnum.VALUE_34: return self.value, 34 case BigEnum.VALUE_35: return self.value, 35 case BigEnum.VALUE_36: return self.value, 36 case BigEnum.VALUE_37: return self.value, 37 case BigEnum.VALUE_38: return self.value, 38 case BigEnum.VALUE_39: return self.value, 39 case BigEnum.VALUE_40: return self.value, 40 case BigEnum.VALUE_41: return self.value, 41 case BigEnum.VALUE_42: return self.value, 42 case BigEnum.VALUE_43: return self.value, 43 case BigEnum.VALUE_44: return self.value, 44 case BigEnum.VALUE_45: return self.value, 45 case BigEnum.VALUE_46: return self.value, 46 case BigEnum.VALUE_47: return self.value, 47 case BigEnum.VALUE_48: return self.value, 48 case BigEnum.VALUE_49: return self.value, 49 case BigEnum.VALUE_50: return self.value, 50 case BigEnum.VALUE_51: return self.value, 51 case BigEnum.VALUE_52: return self.value, 52 case BigEnum.VALUE_53: return self.value, 53 case BigEnum.VALUE_54: return self.value, 54 case BigEnum.VALUE_55: return self.value, 55 case BigEnum.VALUE_56: return self.value, 56 case BigEnum.VALUE_57: return self.value, 57 case BigEnum.VALUE_58: return self.value, 58 case BigEnum.VALUE_59: return self.value, 59 case BigEnum.VALUE_60: return self.value, 60 case BigEnum.VALUE_61: return self.value, 61 case BigEnum.VALUE_62: return self.value, 62 case BigEnum.VALUE_63: return self.value, 63 case BigEnum.VALUE_64: return self.value, 64 case BigEnum.VALUE_65: return self.value, 65 case BigEnum.VALUE_66: return self.value, 66 case BigEnum.VALUE_67: return self.value, 67 case BigEnum.VALUE_68: return self.value, 68 case BigEnum.VALUE_69: return self.value, 69 case BigEnum.VALUE_70: return self.value, 70 case BigEnum.VALUE_71: return self.value, 71 case BigEnum.VALUE_72: return self.value, 72 case BigEnum.VALUE_73: return self.value, 73 case BigEnum.VALUE_74: return self.value, 74 case BigEnum.VALUE_75: return self.value, 75 case BigEnum.VALUE_76: return self.value, 76 case BigEnum.VALUE_77: return self.value, 77 case BigEnum.VALUE_78: return self.value, 78 case BigEnum.VALUE_79: return self.value, 79 case BigEnum.VALUE_80: return self.value, 80 case BigEnum.VALUE_81: return self.value, 81 case BigEnum.VALUE_82: return self.value, 82 case BigEnum.VALUE_83: return self.value, 83 case BigEnum.VALUE_84: return self.value, 84 case BigEnum.VALUE_85: return self.value, 85 case BigEnum.VALUE_86: return self.value, 86 case BigEnum.VALUE_87: return self.value, 87 case BigEnum.VALUE_88: return self.value, 88 case BigEnum.VALUE_89: return self.value, 89 case BigEnum.VALUE_90: return self.value, 90 case BigEnum.VALUE_91: return self.value, 91 case BigEnum.VALUE_92: return self.value, 92 case BigEnum.VALUE_93: return self.value, 93 case BigEnum.VALUE_94: return self.value, 94 case BigEnum.VALUE_95: return self.value, 95 case BigEnum.VALUE_96: return self.value, 96 case BigEnum.VALUE_97: return self.value, 97 case BigEnum.VALUE_98: return self.value, 98 case BigEnum.VALUE_99: return self.value, 99 ``` On my machine, memoizing the computation brings us from 70s to 0.6s.
main
4 hours ago
LATER: new test
dcreager/generic-horn-clauses
5 hours ago
Add heap size
charlie/mem
5 hours ago
clean up
ibraheem/bidi-subtyping2
5 hours ago
Fix docs
amy/unmatched-suppressions
5 hours ago

Active Branches

[ty] Support rendering `__doc__` on hover
last run
1 hour ago
#22047
CodSpeed Performance Gauge
0%
#22043
CodSpeed Performance Gauge
-13%
#21930
CodSpeed Performance Gauge
-15%
© 2025 CodSpeed Technology
Home Terms Privacy Docs