-
Notifications
You must be signed in to change notification settings - Fork 229
Closed
Labels
Milestone
Description
Running Razor compiler source generator benchmarks on #8614 reveals significant performance drop in incremental compilation - see results below. Not sure what to do about that. The best for performance would be introducing a breaking change and disallow declaring types in components visible in other components (which feels like a niche use case). Otherwise, I think we have to re-run at least the declaration codegen on all components whenever any other component is nontrivially updated which hurts incremental performance.
Against main
Release_Nuget is version 7.0.0-preview.23220.3:
| Method | Job | BuildConfiguration | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Cold_Compilation | Baseline | Release_Nuget | 414.2 ms | 3.47 ms | 2.90 ms | 1.00 | 0.00 | 5000.0000 | 2000.0000 | 123.98 MB | 1.00 |
| Cold_Compilation | Current | Release | 499.8 ms | 8.27 ms | 6.45 ms | 1.21 | 0.02 | 6000.0000 | 2000.0000 | 158.77 MB | 1.28 |
| Method | Job | BuildConfiguration | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Razor_Add_Independent | Baseline | Release_Nuget | 5.403 ms | 0.0619 ms | 0.0579 ms | 1.00 | 0.00 | 46.8750 | 15.6250 | 1420.84 KB | 1.00 |
| Razor_Add_Independent | Current | Release | 236.974 ms | 3.3371 ms | 3.1215 ms | 43.86 | 0.70 | 3000.0000 | 1000.0000 | 77066.77 KB | 54.24 |
| Razor_Edit_Independent | Baseline | Release_Nuget | 4.463 ms | 0.0443 ms | 0.0393 ms | 1.00 | 0.00 | 54.6875 | 23.4375 | 1448.6 KB | 1.00 |
| Razor_Edit_Independent | Current | Release | 236.156 ms | 4.6105 ms | 4.5281 ms | 52.97 | 1.14 | 3000.0000 | 1000.0000 | 76217.38 KB | 52.61 |
| Razor_Remove_Independent | Baseline | Release_Nuget | 1.678 ms | 0.0251 ms | 0.0235 ms | 1.00 | 0.00 | 15.6250 | 3.9063 | 393.82 KB | 1.00 |
| Razor_Remove_Independent | Current | Release | 229.719 ms | 2.3080 ms | 1.9273 ms | 137.10 | 2.09 | 3000.0000 | 1000.0000 | 74589.75 KB | 189.40 |
| Razor_Edit_DependentIgnorable | Baseline | Release_Nuget | 3.392 ms | 0.0572 ms | 0.0535 ms | 1.00 | 0.00 | 39.0625 | 15.6250 | 1079.27 KB | 1.00 |
| Razor_Edit_DependentIgnorable | Current | Release | 3.405 ms | 0.0673 ms | 0.0691 ms | 1.00 | 0.03 | 39.0625 | 15.6250 | 1070.99 KB | 0.99 |
| Razor_Edit_Dependent | Baseline | Release_Nuget | 6.347 ms | 0.0962 ms | 0.0899 ms | 1.00 | 0.00 | 62.5000 | 15.6250 | 1618.46 KB | 1.00 |
| Razor_Edit_Dependent | Current | Release | 239.355 ms | 3.0092 ms | 2.6676 ms | 37.74 | 0.51 | 3000.0000 | 1000.0000 | 76289.7 KB | 47.14 |
| Razor_Remove_Dependent | Baseline | Release_Nuget | 1.605 ms | 0.0080 ms | 0.0063 ms | 1.00 | 0.00 | 15.6250 | 3.9063 | 393.83 KB | 1.00 |
| Razor_Remove_Dependent | Current | Release | 236.776 ms | 4.3496 ms | 3.6321 ms | 147.15 | 2.04 | 3000.0000 | 1000.0000 | 74560.55 KB | 189.32 |
Against older version
Release_Nuget is (currently the default) version 7.0.0-preview.5.22528.1:
| Method | Job | BuildConfiguration | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Cold_Compilation | Baseline | Release_Nuget | 312.8 ms | 6.11 ms | 7.95 ms | 1.00 | 0.00 | 4000.0000 | 1000.0000 | 105.7 MB | 1.00 |
| Cold_Compilation | Current | Release | 513.1 ms | 4.79 ms | 4.24 ms | 1.64 | 0.04 | 6000.0000 | 2000.0000 | 166.58 MB | 1.58 |
| Method | Job | BuildConfiguration | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Razor_Add_Independent | Baseline | Release_Nuget | 109.603 ms | 0.4651 ms | 0.3884 ms | 1.00 | 0.00 | 1333.3333 | 333.3333 | 40862.68 KB | 1.00 |
| Razor_Add_Independent | Current | Release | 233.335 ms | 3.3526 ms | 3.1360 ms | 2.13 | 0.03 | 3000.0000 | 1000.0000 | 77063.71 KB | 1.89 |
| Razor_Edit_Independent | Baseline | Release_Nuget | 11.020 ms | 0.1788 ms | 0.1672 ms | 1.00 | 0.00 | 140.6250 | 31.2500 | 3761.98 KB | 1.00 |
| Razor_Edit_Independent | Current | Release | 227.030 ms | 1.7724 ms | 1.5712 ms | 20.61 | 0.37 | 3000.0000 | 1000.0000 | 76209.41 KB | 20.26 |
| Razor_Remove_Independent | Baseline | Release_Nuget | 107.552 ms | 1.2908 ms | 1.0778 ms | 1.00 | 0.00 | 1333.3333 | 333.3333 | 39871.72 KB | 1.00 |
| Razor_Remove_Independent | Current | Release | 235.619 ms | 4.5596 ms | 9.4163 ms | 2.20 | 0.08 | 3000.0000 | 1000.0000 | 74564.09 KB | 1.87 |
| Razor_Edit_DependentIgnorable | Baseline | Release_Nuget | 2.503 ms | 0.0282 ms | 0.0264 ms | 1.00 | 0.00 | 35.1563 | 11.7188 | 915.28 KB | 1.00 |
| Razor_Edit_DependentIgnorable | Current | Release | 3.305 ms | 0.0202 ms | 0.0169 ms | 1.32 | 0.02 | 39.0625 | 15.6250 | 1076.15 KB | 1.18 |
| Razor_Edit_Dependent | Baseline | Release_Nuget | 110.511 ms | 1.7171 ms | 1.6061 ms | 1.00 | 0.00 | 1333.3333 | 333.3333 | 40566.99 KB | 1.00 |
| Razor_Edit_Dependent | Current | Release | 231.464 ms | 2.7982 ms | 2.6174 ms | 2.09 | 0.03 | 3000.0000 | 1000.0000 | 76335.98 KB | 1.88 |
| Razor_Remove_Dependent | Baseline | Release_Nuget | 106.997 ms | 0.3375 ms | 0.2635 ms | 1.00 | 0.00 | 1500.0000 | 250.0000 | 39753.2 KB | 1.00 |
| Razor_Remove_Dependent | Current | Release | 227.821 ms | 2.2253 ms | 1.9727 ms | 2.13 | 0.02 | 3000.0000 | 1000.0000 | 74568.98 KB | 1.88 |