Repository navigation
Commit 654dcfa
committed
Avoid allocating normalized types on interning cache hits
Union and intersection normalization creates temporary lists even when
an equivalent type already exists. Mapping and narrowing repeat this
work throughout checking, producing unnecessary garbage. Reentrant,
bounded workspaces let canonicalization reuse that storage while
published types and subtype-reduction caches retain independently owned
constituents.
Fresh parse, bind, and check of the compiler fixture (six samples):
│ before │ after │
│ B/op │ B/op vs base │
CheckFreshProgram-20 303.0Mi 277.2Mi -8.51% (p=0.002 n=6)
│ before │ after │
│ allocs/op │ allocs/op vs base │
CheckFreshProgram-20 1.393M 1.139M -18.26% (p=0.002 n=6)
VS Code src: identical diagnostics and compiler counts, 31.01M to 28.52M
allocations. One fixed-work instruction sample fell from 344.57B to
324.08B; timing is noisy and not evidence of a reliable wall-time gain.
Retained memory was effectively unchanged at 5.38 GiB.1 parent 2a39414 commit 654dcfa
4 files changed
Lines changed: 211 additions & 19 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
681 | 681 | | |
682 | 682 | | |
683 | 683 | | |
| 684 | + | |
| 685 | + | |
684 | 686 | | |
685 | 687 | | |
686 | 688 | | |
| |||
25751 | 25753 | | |
25752 | 25754 | | |
25753 | 25755 | | |
25754 | | - | |
| 25756 | + | |
25755 | 25757 | | |
25756 | 25758 | | |
25757 | 25759 | | |
25758 | 25760 | | |
25759 | 25761 | | |
25760 | | - | |
| 25762 | + | |
25761 | 25763 | | |
25762 | 25764 | | |
25763 | 25765 | | |
| |||
26138 | 26140 | | |
26139 | 26141 | | |
26140 | 26142 | | |
26141 | | - | |
| 26143 | + | |
| 26144 | + | |
| 26145 | + | |
| 26146 | + | |
| 26147 | + | |
| 26148 | + | |
| 26149 | + | |
26142 | 26150 | | |
26143 | | - | |
| 26151 | + | |
26144 | 26152 | | |
26145 | 26153 | | |
26146 | 26154 | | |
26147 | 26155 | | |
26148 | 26156 | | |
26149 | 26157 | | |
26150 | | - | |
| 26158 | + | |
26151 | 26159 | | |
| 26160 | + | |
| 26161 | + | |
| 26162 | + | |
26152 | 26163 | | |
26153 | | - | |
| 26164 | + | |
26154 | 26165 | | |
26155 | 26166 | | |
26156 | 26167 | | |
26157 | 26168 | | |
| 26169 | + | |
26158 | 26170 | | |
26159 | 26171 | | |
26160 | 26172 | | |
26161 | | - | |
| 26173 | + | |
26162 | 26174 | | |
26163 | 26175 | | |
26164 | 26176 | | |
| |||
26215 | 26227 | | |
26216 | 26228 | | |
26217 | 26229 | | |
26218 | | - | |
| 26230 | + | |
| 26231 | + | |
| 26232 | + | |
| 26233 | + | |
26219 | 26234 | | |
26220 | 26235 | | |
26221 | 26236 | | |
| |||
26322 | 26337 | | |
26323 | 26338 | | |
26324 | 26339 | | |
26325 | | - | |
26326 | | - | |
| 26340 | + | |
26327 | 26341 | | |
26328 | 26342 | | |
26329 | 26343 | | |
| |||
26581 | 26595 | | |
26582 | 26596 | | |
26583 | 26597 | | |
26584 | | - | |
26585 | | - | |
| 26598 | + | |
| 26599 | + | |
| 26600 | + | |
26586 | 26601 | | |
26587 | 26602 | | |
26588 | 26603 | | |
| |||
26618 | 26633 | | |
26619 | 26634 | | |
26620 | 26635 | | |
26621 | | - | |
26622 | | - | |
26623 | | - | |
26624 | | - | |
| 26636 | + | |
| 26637 | + | |
| 26638 | + | |
| 26639 | + | |
26625 | 26640 | | |
26626 | 26641 | | |
26627 | 26642 | | |
| |||
27171 | 27186 | | |
27172 | 27187 | | |
27173 | 27188 | | |
27174 | | - | |
| 27189 | + | |
| 27190 | + | |
| 27191 | + | |
| 27192 | + | |
| 27193 | + | |
27175 | 27194 | | |
27176 | 27195 | | |
27177 | 27196 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
165 | | - | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
166 | 168 | | |
167 | 169 | | |
168 | 170 | | |
| |||
171 | 173 | | |
172 | 174 | | |
173 | 175 | | |
174 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
175 | 179 | | |
176 | 180 | | |
177 | 181 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
140 | 141 | | |
141 | 142 | | |
142 | 143 | | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
881 | 881 | | |
882 | 882 | | |
883 | 883 | | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
884 | 922 | | |
885 | 923 | | |
886 | 924 | | |
| |||
0 commit comments