Commit baef6f3
authored
perf: reduce allocations in source-gen test building hot paths (#6228)
* perf: reduce allocations in source-gen test building hot paths
- TestBuilder streaming path: replace LINQ Where/Cast/FirstOrDefault
attribute lookup with a foreach, matching the non-streaming path
- TestBuilderPipeline: hoist ToAttributeDictionary() and the
TestClassInstanceFactory delegate out of the repeat loops in both
dynamic-test paths so iterations share one dictionary and closure
- DataSourceHelpers.UnwrapTupleWithTypes: write into a pre-sized array
instead of List<T> + ToArray (both former branches were identical)
- DataSourceHelpers.InvokeIfFunc: fetch GetType() once
* refactor: deduplicate attribute lookup and tuple copy loops
- Add internal FirstOfType<T> extension and use it at the three
identical first-ClassConstructorAttribute foreach sites
- Share the ITuple element copy loop between UnwrapTupleAot and
UnwrapTupleWithTypes via a private CopyTupleElements helper1 parent 53a249f commit baef6f3
4 files changed
Lines changed: 55 additions & 61 deletions
File tree
- TUnit.Core/Helpers
- TUnit.Engine
- Building
- Extensions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
| 27 | + | |
27 | 28 | | |
28 | 29 | | |
29 | 30 | | |
| |||
74 | 75 | | |
75 | 76 | | |
76 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
77 | 90 | | |
78 | 91 | | |
79 | 92 | | |
| |||
88 | 101 | | |
89 | 102 | | |
90 | 103 | | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
| 104 | + | |
98 | 105 | | |
99 | 106 | | |
100 | 107 | | |
| |||
426 | 433 | | |
427 | 434 | | |
428 | 435 | | |
429 | | - | |
430 | | - | |
431 | | - | |
432 | | - | |
433 | | - | |
434 | | - | |
435 | | - | |
436 | | - | |
437 | | - | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
444 | | - | |
445 | | - | |
446 | | - | |
447 | | - | |
448 | | - | |
449 | | - | |
450 | | - | |
451 | | - | |
452 | | - | |
| 436 | + | |
| 437 | + | |
453 | 438 | | |
454 | 439 | | |
455 | 440 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
| 176 | + | |
185 | 177 | | |
186 | 178 | | |
187 | 179 | | |
| |||
1605 | 1597 | | |
1606 | 1598 | | |
1607 | 1599 | | |
1608 | | - | |
1609 | | - | |
1610 | | - | |
1611 | | - | |
| 1600 | + | |
1612 | 1601 | | |
1613 | 1602 | | |
1614 | 1603 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| |||
56 | 57 | | |
57 | 58 | | |
58 | 59 | | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
| 60 | + | |
68 | 61 | | |
69 | 62 | | |
70 | 63 | | |
| |||
210 | 203 | | |
211 | 204 | | |
212 | 205 | | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
213 | 211 | | |
214 | 212 | | |
215 | 213 | | |
| |||
218 | 216 | | |
219 | 217 | | |
220 | 218 | | |
221 | | - | |
| 219 | + | |
222 | 220 | | |
223 | 221 | | |
224 | 222 | | |
| |||
239 | 237 | | |
240 | 238 | | |
241 | 239 | | |
242 | | - | |
243 | | - | |
244 | | - | |
245 | 240 | | |
246 | 241 | | |
247 | 242 | | |
| |||
259 | 254 | | |
260 | 255 | | |
261 | 256 | | |
262 | | - | |
| 257 | + | |
263 | 258 | | |
264 | 259 | | |
265 | 260 | | |
| |||
339 | 334 | | |
340 | 335 | | |
341 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
342 | 341 | | |
343 | 342 | | |
344 | 343 | | |
| |||
348 | 347 | | |
349 | 348 | | |
350 | 349 | | |
351 | | - | |
| 350 | + | |
352 | 351 | | |
353 | 352 | | |
354 | 353 | | |
| |||
385 | 384 | | |
386 | 385 | | |
387 | 386 | | |
388 | | - | |
| 387 | + | |
389 | 388 | | |
390 | 389 | | |
391 | 390 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
0 commit comments