Commit d772e48
committed
turbo-tasks: task-storage memory wins
* Migrate Arc<CachedTaskType> to triomphe::Arc via CachedTaskTypeArc newtype.
Saves one usize per allocation (no weak count) and avoids the weak-count
CAS in drop_slow.
* Niche-encode cell_dependencies / cell_dependents elements as a CellDependency
enum that reuses the niche on ValueTypeId (NonZero<u16>) for the variant
tag. Element size drops from 32 B to 24 B; LazyField from 56 B to 48 B.
* Replace TaskStorage::lazy: Vec<LazyField> with a custom 16 B TinyVec
(u8 len + u8 cap, the schema's max field count is well under 255).
Drops size_of::<TaskStorage>() from 136 B to 128 B. The included
micro-benchmarks show TinyVec push is 11-32% faster than Vec across
realistic sizes and iter is neutral.
* Add CellDependency::into_parts() and use it in iter_cell_dependents /
iter_cell_dependencies hot loops to avoid checking the enum discriminant
twice via back-to-back cell_ref() + key() calls.
Cumulative MaxRSS reduction is ~2.9% on a representative Next.js build
(measured on a real project, 15 runs each side, t=-13.7 vs canary).1 parent ec0279c commit d772e48
13 files changed
Lines changed: 990 additions & 90 deletions
File tree
- turbopack/crates
- turbo-tasks-backend/src
- backend
- operation
- turbo-tasks-macros/src/derive
- turbo-tasks
- benches
- src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | | - | |
| 37 | + | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
74 | | - | |
| 73 | + | |
| 74 | + | |
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| |||
785 | 785 | | |
786 | 786 | | |
787 | 787 | | |
788 | | - | |
| 788 | + | |
| 789 | + | |
789 | 790 | | |
790 | 791 | | |
791 | 792 | | |
| |||
797 | 798 | | |
798 | 799 | | |
799 | 800 | | |
800 | | - | |
801 | | - | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
802 | 804 | | |
803 | 805 | | |
804 | 806 | | |
| |||
1526 | 1528 | | |
1527 | 1529 | | |
1528 | 1530 | | |
1529 | | - | |
| 1531 | + | |
1530 | 1532 | | |
1531 | 1533 | | |
1532 | 1534 | | |
| |||
1757 | 1759 | | |
1758 | 1760 | | |
1759 | 1761 | | |
1760 | | - | |
| 1762 | + | |
1761 | 1763 | | |
1762 | 1764 | | |
1763 | 1765 | | |
| |||
2197 | 2199 | | |
2198 | 2200 | | |
2199 | 2201 | | |
2200 | | - | |
| 2202 | + | |
2201 | 2203 | | |
2202 | 2204 | | |
2203 | 2205 | | |
| |||
2236 | 2238 | | |
2237 | 2239 | | |
2238 | 2240 | | |
2239 | | - | |
| 2241 | + | |
2240 | 2242 | | |
2241 | 2243 | | |
2242 | 2244 | | |
| |||
Lines changed: 20 additions & 15 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| |||
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
170 | | - | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
176 | 177 | | |
177 | 178 | | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
183 | 184 | | |
184 | | - | |
| 185 | + | |
185 | 186 | | |
186 | 187 | | |
187 | 188 | | |
188 | 189 | | |
189 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
190 | 195 | | |
191 | 196 | | |
192 | 197 | | |
| |||
Lines changed: 10 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | | - | |
| 106 | + | |
| 107 | + | |
107 | 108 | | |
108 | 109 | | |
109 | 110 | | |
110 | 111 | | |
111 | 112 | | |
112 | 113 | | |
113 | 114 | | |
114 | | - | |
| 115 | + | |
115 | 116 | | |
116 | 117 | | |
117 | 118 | | |
| |||
606 | 607 | | |
607 | 608 | | |
608 | 609 | | |
609 | | - | |
| 610 | + | |
610 | 611 | | |
611 | 612 | | |
612 | 613 | | |
| |||
985 | 986 | | |
986 | 987 | | |
987 | 988 | | |
988 | | - | |
| 989 | + | |
989 | 990 | | |
990 | 991 | | |
991 | 992 | | |
| |||
1032 | 1033 | | |
1033 | 1034 | | |
1034 | 1035 | | |
1035 | | - | |
| 1036 | + | |
1036 | 1037 | | |
1037 | 1038 | | |
1038 | 1039 | | |
1039 | 1040 | | |
1040 | 1041 | | |
1041 | 1042 | | |
1042 | | - | |
| 1043 | + | |
1043 | 1044 | | |
1044 | 1045 | | |
1045 | 1046 | | |
| |||
1056 | 1057 | | |
1057 | 1058 | | |
1058 | 1059 | | |
1059 | | - | |
| 1060 | + | |
1060 | 1061 | | |
1061 | 1062 | | |
1062 | 1063 | | |
| |||
1398 | 1399 | | |
1399 | 1400 | | |
1400 | 1401 | | |
1401 | | - | |
| 1402 | + | |
1402 | 1403 | | |
1403 | 1404 | | |
1404 | 1405 | | |
| |||
Lines changed: 22 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
151 | 158 | | |
152 | 159 | | |
153 | 160 | | |
| |||
276 | 283 | | |
277 | 284 | | |
278 | 285 | | |
279 | | - | |
| 286 | + | |
| 287 | + | |
280 | 288 | | |
281 | 289 | | |
282 | 290 | | |
283 | 291 | | |
284 | 292 | | |
285 | 293 | | |
286 | | - | |
| 294 | + | |
287 | 295 | | |
288 | 296 | | |
289 | 297 | | |
| |||
Lines changed: 4 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
183 | 183 | | |
184 | 184 | | |
185 | 185 | | |
186 | | - | |
| 186 | + | |
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
| |||
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | | - | |
| 256 | + | |
257 | 257 | | |
258 | 258 | | |
259 | 259 | | |
| |||
516 | 516 | | |
517 | 517 | | |
518 | 518 | | |
519 | | - | |
| 519 | + | |
520 | 520 | | |
521 | 521 | | |
522 | 522 | | |
| |||
0 commit comments