GeezerVison is showing github.com — Move class property transformation into new transformer file by joeywatts · Pull Request #30467 · microsoft/TypeScript
Conversation
This is a step towards addressing #12212. In this PR, the transformation of class properties is moved to a new transformer file. This transformer is currently always executed after the TypeScript transformer to preserve the existing output as much as possible (there are compatibility issues with putting this behind a target language condition, see #27644). It will be easy to put this transformation behind a language version check in the future.
There were a couple of notable choices made here.
Choice: preserve difference in emit between class expression vs. class declaration
- static property assignments and computed property name expressions in class expressions are transpiled using comma expressions
- static property assignments and computed property name expressions in class declarations are transpiled using statements after the class body
This PR preserves this behavior, at the expense of some complication here since decorated class declarations are converted into class expressions by the TypeScript transformer and class properties are now transformed after this has already occurred.
Choice: when there is at least one parameter property, move all property initializers to the constructor body
We had to do this to preserve the evaluation order of the initializers. This choice makes no difference to current behavior of the compiler, because the class property transform is unconditionally applied in transformer.ts. So now all property initializers end up in the constructor body anyway.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
slikts, mihailik, and styfle reacted with thumbs up emoji
Neuroboy23, mheiber, robpalme, trotyl, and styfle reacted with hooray emoji
All reactions
-
👍
3 reactions
-
🎉
5 reactions
Choice: preserve difference in emit between class expression vs. class declaration
IIRC this is actually required to get the execution order of computed names right, since all computed names need to execute after the declaration, but before any following expressions.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Wesley Wigham (@weswigham) Yep. Should update this comment, the complication comes into play with a decorated class declaration, which gets converted into a class expression by the TypeScript transformer. This results in the expressions for computed property names and static properties to be emitted in a comma expression rather than as separate statements after the decorated class.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Apr 9, 2019
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
|
I would recommend that the new transformer be named classFields.ts not classProperties.ts, since it is transforming away a feature known as "class fields", and "properties" is a very overloaded term in ECMAScript.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Ron Buckton (@rbuckton) I renamed the transformer using the "class fields" terminology. Think we're ready for another pass!
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Heya Ron Buckton (@rbuckton), I've started to run the perf test suite on this PR at d7022a9. You can monitor the build here. It should now contribute to this PR's status checks.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
The perf tests show a regression (and failed to post the perf results back to the PR), but it may be that your copy of master is out of date. We recently fixed a performance regression in the binder. Can you either merge or rebase master and I'll have the bot run the perf tests again? I want to verify that this change does not dramatically impact compiler performance.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Ron Buckton (@rbuckton)
The results of the perf run you requested are in!
Here they are:
Comparison Report - master..30467
| Metric |
master |
30467 |
Delta |
Best |
Worst |
| Angular - node (v12.1.0, x64) |
| Memory used |
313,251k (± 0.02%) |
313,345k (± 0.01%) |
+95k (+ 0.03%) |
313,239k |
313,430k |
| Parse Time |
1.39s (± 0.47%) |
1.39s (± 0.90%) |
-0.00s (- 0.07%) |
1.37s |
1.42s |
| Bind Time |
0.73s (± 0.47%) |
0.73s (± 0.96%) |
+0.00s (+ 0.28%) |
0.72s |
0.75s |
| Check Time |
3.95s (± 0.39%) |
3.98s (± 0.56%) |
+0.03s (+ 0.79%) |
3.93s |
4.03s |
| Emit Time |
5.13s (± 0.70%) |
5.26s (± 0.77%) |
+0.13s (+ 2.53%) |
5.17s |
5.34s |
| Total Time |
11.20s (± 0.38%) |
11.36s (± 0.41%) |
+0.16s (+ 1.46%) |
11.26s |
11.45s |
| Monaco - node (v12.1.0, x64) |
| Memory used |
342,116k (± 0.02%) |
342,111k (± 0.01%) |
-5k (- 0.00%) |
342,018k |
342,220k |
| Parse Time |
1.18s (± 0.62%) |
1.18s (± 0.75%) |
+0.00s (+ 0.25%) |
1.17s |
1.20s |
| Bind Time |
0.67s (± 0.86%) |
0.67s (± 0.73%) |
+0.00s (+ 0.15%) |
0.67s |
0.69s |
| Check Time |
4.09s (± 0.60%) |
4.08s (± 0.54%) |
-0.01s (- 0.24%) |
4.02s |
4.11s |
| Emit Time |
2.78s (± 0.68%) |
2.85s (± 0.61%) |
+0.07s (+ 2.37%) |
2.82s |
2.90s |
| Total Time |
8.72s (± 0.40%) |
8.78s (± 0.40%) |
+0.06s (+ 0.67%) |
8.70s |
8.85s |
| TFS - node (v12.1.0, x64) |
| Memory used |
299,052k (± 0.02%) |
299,088k (± 0.01%) |
+37k (+ 0.01%) |
299,024k |
299,177k |
| Parse Time |
0.91s (± 0.54%) |
0.91s (± 0.89%) |
-0.00s (- 0.44%) |
0.89s |
0.93s |
| Bind Time |
0.62s (± 0.84%) |
0.62s (± 0.36%) |
-0.00s (- 0.32%) |
0.61s |
0.62s |
| Check Time |
3.65s (± 0.62%) |
3.64s (± 0.58%) |
-0.01s (- 0.30%) |
3.60s |
3.68s |
| Emit Time |
2.87s (± 0.66%) |
2.95s (± 0.44%) |
+0.09s (+ 2.97%) |
2.93s |
2.99s |
| Total Time |
8.05s (± 0.38%) |
8.12s (± 0.35%) |
+0.07s (+ 0.88%) |
8.06s |
8.19s |
| Angular - node (v8.9.0, x64) |
| Memory used |
330,777k (± 0.01%) |
330,966k (± 0.02%) |
+189k (+ 0.06%) |
330,814k |
331,080k |
| Parse Time |
1.77s (± 0.60%) |
1.77s (± 0.38%) |
0.00s ( 0.00%) |
1.76s |
1.79s |
| Bind Time |
0.79s (± 0.56%) |
0.79s (± 0.84%) |
+0.00s (+ 0.13%) |
0.78s |
0.81s |
| Check Time |
4.69s (± 1.41%) |
4.69s (± 1.65%) |
-0.00s (- 0.02%) |
4.56s |
4.84s |
| Emit Time |
5.80s (± 2.40%) |
6.03s (± 2.94%) |
+0.23s (+ 3.96%) |
5.69s |
6.37s |
| Total Time |
13.06s (± 0.88%) |
13.29s (± 0.93%) |
+0.23s (+ 1.77%) |
12.99s |
13.59s |
| Monaco - node (v8.9.0, x64) |
| Memory used |
358,886k (± 0.01%) |
359,070k (± 0.02%) |
+184k (+ 0.05%) |
358,954k |
359,304k |
| Parse Time |
1.43s (± 0.25%) |
1.43s (± 0.39%) |
-0.00s (- 0.14%) |
1.42s |
1.44s |
| Bind Time |
0.88s (± 1.73%) |
0.90s (± 1.97%) |
+0.02s (+ 2.04%) |
0.87s |
0.93s |
| Check Time |
4.97s (± 1.55%) |
4.91s (± 1.86%) |
-0.07s (- 1.39%) |
4.75s |
5.05s |
| Emit Time |
2.93s (± 5.62%) |
3.20s (± 6.76%) |
+0.27s (+ 9.14%) |
2.87s |
3.52s |
| Total Time |
10.23s (± 1.14%) |
10.44s (± 1.42%) |
+0.21s (+ 2.04%) |
10.19s |
10.66s |
| TFS - node (v8.9.0, x64) |
| Memory used |
314,218k (± 0.02%) |
314,336k (± 0.01%) |
+118k (+ 0.04%) |
314,230k |
314,406k |
| Parse Time |
1.14s (± 0.71%) |
1.13s (± 0.55%) |
-0.01s (- 0.96%) |
1.12s |
1.14s |
| Bind Time |
0.67s (± 1.00%) |
0.67s (± 0.71%) |
+0.00s (+ 0.00%) |
0.66s |
0.68s |
| Check Time |
4.23s (± 0.79%) |
4.25s (± 0.71%) |
+0.02s (+ 0.38%) |
4.21s |
4.33s |
| Emit Time |
3.13s (± 1.13%) |
3.23s (± 0.68%) |
+0.10s (+ 3.10%) |
3.19s |
3.29s |
| Total Time |
9.17s (± 0.65%) |
9.27s (± 0.61%) |
+0.11s (+ 1.18%) |
9.19s |
9.45s |
| Angular - node (v8.9.0, x86) |
| Memory used |
187,405k (± 0.02%) |
187,550k (± 0.03%) |
+145k (+ 0.08%) |
187,483k |
187,719k |
| Parse Time |
1.74s (± 0.84%) |
1.73s (± 0.58%) |
-0.01s (- 0.46%) |
1.71s |
1.76s |
| Bind Time |
0.93s (± 1.14%) |
0.94s (± 1.12%) |
+0.00s (+ 0.21%) |
0.91s |
0.96s |
| Check Time |
4.34s (± 0.46%) |
4.34s (± 0.48%) |
-0.01s (- 0.14%) |
4.30s |
4.38s |
| Emit Time |
5.66s (± 0.93%) |
5.71s (± 1.11%) |
+0.05s (+ 0.90%) |
5.55s |
5.83s |
| Total Time |
12.67s (± 0.48%) |
12.71s (± 0.63%) |
+0.04s (+ 0.30%) |
12.49s |
12.82s |
| Monaco - node (v8.9.0, x86) |
| Memory used |
200,214k (± 0.02%) |
200,372k (± 0.01%) |
+158k (+ 0.08%) |
200,293k |
200,425k |
| Parse Time |
1.49s (± 0.49%) |
1.48s (± 0.46%) |
-0.01s (- 0.54%) |
1.47s |
1.50s |
| Bind Time |
0.71s (± 0.87%) |
0.72s (± 1.53%) |
+0.01s (+ 1.27%) |
0.71s |
0.76s |
| Check Time |
4.66s (± 0.61%) |
4.65s (± 0.49%) |
-0.02s (- 0.34%) |
4.58s |
4.70s |
| Emit Time |
3.09s (± 1.03%) |
3.17s (± 1.22%) |
+0.07s (+ 2.36%) |
3.07s |
3.29s |
| Total Time |
9.96s (± 0.51%) |
10.01s (± 0.40%) |
+0.05s (+ 0.55%) |
9.92s |
10.12s |
| TFS - node (v8.9.0, x86) |
| Memory used |
176,240k (± 0.02%) |
176,400k (± 0.02%) |
+161k (+ 0.09%) |
176,352k |
176,518k |
| Parse Time |
1.19s (± 0.84%) |
1.19s (± 0.69%) |
+0.00s (+ 0.42%) |
1.18s |
1.22s |
| Bind Time |
0.63s (± 0.88%) |
0.64s (± 1.48%) |
+0.01s (+ 0.79%) |
0.62s |
0.67s |
| Check Time |
4.07s (± 0.58%) |
4.09s (± 0.66%) |
+0.01s (+ 0.34%) |
4.02s |
4.16s |
| Emit Time |
2.78s (± 0.82%) |
2.85s (± 0.61%) |
+0.06s (+ 2.23%) |
2.80s |
2.88s |
| Total Time |
8.68s (± 0.38%) |
8.77s (± 0.46%) |
+0.09s (+ 1.01%) |
8.68s |
8.88s |
| Angular - node (v9.0.0, x64) |
| Memory used |
330,468k (± 0.02%) |
330,661k (± 0.02%) |
+193k (+ 0.06%) |
330,530k |
330,792k |
| Parse Time |
1.62s (± 0.62%) |
1.63s (± 0.56%) |
+0.01s (+ 0.37%) |
1.61s |
1.65s |
| Bind Time |
0.74s (± 1.20%) |
0.74s (± 1.10%) |
-0.00s (- 0.27%) |
0.73s |
0.77s |
| Check Time |
4.32s (± 0.43%) |
4.31s (± 0.80%) |
-0.01s (- 0.23%) |
4.25s |
4.38s |
| Emit Time |
5.73s (± 1.75%) |
5.89s (± 1.40%) |
+0.16s (+ 2.86%) |
5.75s |
6.04s |
| Total Time |
12.42s (± 0.89%) |
12.58s (± 0.38%) |
+0.16s (+ 1.26%) |
12.47s |
12.69s |
| Monaco - node (v9.0.0, x64) |
| Memory used |
358,662k (± 0.03%) |
358,939k (± 0.03%) |
+277k (+ 0.08%) |
358,680k |
359,071k |
| Parse Time |
1.28s (± 0.41%) |
1.28s (± 0.38%) |
+0.00s (+ 0.23%) |
1.27s |
1.29s |
| Bind Time |
0.85s (± 0.70%) |
0.85s (± 0.94%) |
-0.00s (- 0.35%) |
0.84s |
0.87s |
| Check Time |
4.69s (± 0.62%) |
4.67s (± 0.46%) |
-0.02s (- 0.45%) |
4.63s |
4.72s |
| Emit Time |
3.31s (± 0.32%) |
3.38s (± 0.52%) |
+0.06s (+ 1.93%) |
3.34s |
3.41s |
| Total Time |
10.14s (± 0.38%) |
10.18s (± 0.34%) |
+0.04s (+ 0.38%) |
10.10s |
10.23s |
| TFS - node (v9.0.0, x64) |
| Memory used |
314,053k (± 0.01%) |
314,149k (± 0.01%) |
+96k (+ 0.03%) |
314,099k |
314,287k |
| Parse Time |
1.01s (± 0.52%) |
1.01s (± 0.75%) |
-0.00s (- 0.30%) |
0.99s |
1.03s |
| Bind Time |
0.61s (± 0.78%) |
0.61s (± 0.78%) |
0.00s ( 0.00%) |
0.60s |
0.62s |
| Check Time |
4.14s (± 0.61%) |
4.15s (± 0.80%) |
+0.00s (+ 0.12%) |
4.10s |
4.22s |
| Emit Time |
3.09s (± 1.41%) |
3.13s (± 1.93%) |
+0.04s (+ 1.36%) |
2.95s |
3.25s |
| Total Time |
8.86s (± 0.51%) |
8.90s (± 0.82%) |
+0.04s (+ 0.50%) |
8.68s |
9.10s |
| Angular - node (v9.0.0, x86) |
| Memory used |
187,514k (± 0.02%) |
187,728k (± 0.03%) |
+214k (+ 0.11%) |
187,631k |
187,875k |
| Parse Time |
1.54s (± 0.82%) |
1.53s (± 0.76%) |
-0.00s (- 0.32%) |
1.51s |
1.55s |
| Bind Time |
0.86s (± 0.88%) |
0.86s (± 0.88%) |
+0.01s (+ 0.93%) |
0.85s |
0.88s |
| Check Time |
4.00s (± 0.51%) |
4.03s (± 0.76%) |
+0.03s (+ 0.75%) |
3.98s |
4.11s |
| Emit Time |
5.35s (± 0.73%) |
5.47s (± 0.55%) |
+0.11s (+ 2.11%) |
5.40s |
5.54s |
| Total Time |
11.75s (± 0.48%) |
11.90s (± 0.28%) |
+0.15s (+ 1.26%) |
11.84s |
11.98s |
| Monaco - node (v9.0.0, x86) |
| Memory used |
200,233k (± 0.03%) |
200,369k (± 0.02%) |
+136k (+ 0.07%) |
200,298k |
200,446k |
| Parse Time |
1.31s (± 0.46%) |
1.30s (± 0.50%) |
-0.00s (- 0.23%) |
1.29s |
1.32s |
| Bind Time |
0.64s (± 0.53%) |
0.64s (± 0.92%) |
+0.01s (+ 1.10%) |
0.63s |
0.65s |
| Check Time |
4.49s (± 0.43%) |
4.48s (± 0.54%) |
-0.01s (- 0.33%) |
4.42s |
4.53s |
| Emit Time |
3.00s (± 0.65%) |
3.09s (± 0.41%) |
+0.09s (+ 3.07%) |
3.07s |
3.12s |
| Total Time |
9.43s (± 0.32%) |
9.52s (± 0.30%) |
+0.09s (+ 0.90%) |
9.44s |
9.57s |
| TFS - node (v9.0.0, x86) |
| Memory used |
176,338k (± 0.02%) |
176,401k (± 0.02%) |
+63k (+ 0.04%) |
176,321k |
176,471k |
| Parse Time |
1.03s (± 0.85%) |
1.03s (± 0.73%) |
-0.00s (- 0.29%) |
1.01s |
1.04s |
| Bind Time |
0.57s (± 0.52%) |
0.58s (± 1.45%) |
+0.01s (+ 1.57%) |
0.57s |
0.61s |
| Check Time |
3.94s (± 0.42%) |
3.95s (± 0.77%) |
+0.01s (+ 0.30%) |
3.89s |
4.01s |
| Emit Time |
2.72s (± 1.15%) |
2.77s (± 1.03%) |
+0.06s (+ 2.10%) |
2.72s |
2.85s |
| Total Time |
8.26s (± 0.47%) |
8.33s (± 0.67%) |
+0.07s (+ 0.88%) |
8.21s |
8.43s |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 4.4.0-142-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 1 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Hosts
- node (v12.1.0, x64)
- node (v8.9.0, x64)
- node (v8.9.0, x86)
- node (v9.0.0, x64)
- node (v9.0.0, x86)
Scenarios
- Angular - node (v12.1.0, x64)
- Angular - node (v8.9.0, x64)
- Angular - node (v8.9.0, x86)
- Angular - node (v9.0.0, x64)
- Angular - node (v9.0.0, x86)
- Monaco - node (v12.1.0, x64)
- Monaco - node (v8.9.0, x64)
- Monaco - node (v8.9.0, x86)
- Monaco - node (v9.0.0, x64)
- Monaco - node (v9.0.0, x86)
- TFS - node (v12.1.0, x64)
- TFS - node (v8.9.0, x64)
- TFS - node (v8.9.0, x86)
- TFS - node (v9.0.0, x64)
- TFS - node (v9.0.0, x86)
| Benchmark |
Name |
Iterations |
| Current |
30467 |
10 |
| Baseline |
master |
10 |
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
In general the performance seems acceptable. The only outlier is Monaco - node (v8.9.0, x64), with a 9.4% increase in emit time, though it also seems to have a very unstable emit time (± 6.76%).
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Ron Buckton (@rbuckton) does this indicate a performance issue or do you think it could be a flaky test run? I wonder why the variation in runtime is much higher than the other ones.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Ron Buckton (@rbuckton)
The results of the perf run you requested are in!
Here they are:
Comparison Report - master..30467
| Metric |
master |
30467 |
Delta |
Best |
Worst |
| Angular - node (v12.1.0, x64) |
| Memory used |
315,360k (± 0.02%) |
313,324k (± 0.03%) |
-2,036k (- 0.65%) |
313,144k |
313,600k |
| Parse Time |
1.38s (± 0.51%) |
1.38s (± 0.67%) |
+0.00s (+ 0.07%) |
1.36s |
1.40s |
| Bind Time |
0.73s (± 0.83%) |
0.72s (± 0.51%) |
-0.00s (- 0.00%) |
0.72s |
0.73s |
| Check Time |
4.11s (± 0.56%) |
3.97s (± 0.49%) |
-0.14s (- 3.45%) |
3.93s |
4.02s |
| Emit Time |
5.12s (± 0.56%) |
5.22s (± 0.83%) |
+0.10s (+ 1.89%) |
5.13s |
5.31s |
| Total Time |
11.34s (± 0.41%) |
11.29s (± 0.48%) |
-0.05s (- 0.41%) |
11.18s |
11.40s |
| Monaco - node (v12.1.0, x64) |
| Memory used |
343,919k (± 0.01%) |
342,148k (± 0.01%) |
-1,771k (- 0.51%) |
342,039k |
342,242k |
| Parse Time |
1.17s (± 0.76%) |
1.17s (± 0.72%) |
-0.00s (- 0.43%) |
1.15s |
1.19s |
| Bind Time |
0.67s (± 1.47%) |
0.67s (± 0.86%) |
-0.00s (- 0.30%) |
0.66s |
0.68s |
| Check Time |
4.18s (± 0.56%) |
4.05s (± 0.55%) |
-0.13s (- 3.16%) |
4.01s |
4.12s |
| Emit Time |
2.79s (± 0.93%) |
2.84s (± 0.67%) |
+0.05s (+ 1.61%) |
2.80s |
2.88s |
| Total Time |
8.82s (± 0.40%) |
8.72s (± 0.40%) |
-0.09s (- 1.05%) |
8.66s |
8.83s |
| TFS - node (v12.1.0, x64) |
| Memory used |
300,926k (± 0.02%) |
299,118k (± 0.02%) |
-1,808k (- 0.60%) |
298,997k |
299,291k |
| Parse Time |
0.91s (± 1.00%) |
0.90s (± 0.72%) |
-0.01s (- 0.77%) |
0.89s |
0.92s |
| Bind Time |
0.62s (± 0.84%) |
0.61s (± 0.60%) |
-0.01s (- 0.97%) |
0.61s |
0.62s |
| Check Time |
3.75s (± 0.66%) |
3.64s (± 0.63%) |
-0.11s (- 2.96%) |
3.58s |
3.71s |
| Emit Time |
2.86s (± 0.83%) |
2.93s (± 0.59%) |
+0.07s (+ 2.55%) |
2.90s |
2.99s |
| Total Time |
8.13s (± 0.60%) |
8.08s (± 0.45%) |
-0.05s (- 0.59%) |
8.03s |
8.22s |
| Angular - node (v8.9.0, x64) |
| Memory used |
333,373k (± 0.02%) |
330,959k (± 0.02%) |
-2,415k (- 0.72%) |
330,848k |
331,060k |
| Parse Time |
1.78s (± 0.37%) |
1.78s (± 0.41%) |
-0.00s (- 0.11%) |
1.76s |
1.80s |
| Bind Time |
0.79s (± 1.29%) |
0.79s (± 0.95%) |
+0.00s (+ 0.25%) |
0.77s |
0.80s |
| Check Time |
4.74s (± 1.12%) |
4.67s (± 1.93%) |
-0.08s (- 1.62%) |
4.51s |
4.83s |
| Emit Time |
5.93s (± 2.71%) |
6.00s (± 2.46%) |
+0.07s (+ 1.16%) |
5.63s |
6.33s |
| Total Time |
13.24s (± 0.93%) |
13.24s (± 0.93%) |
-0.00s (- 0.03%) |
12.92s |
13.44s |
| Monaco - node (v8.9.0, x64) |
| Memory used |
361,110k (± 0.02%) |
359,189k (± 0.02%) |
-1,921k (- 0.53%) |
358,954k |
359,336k |
| Parse Time |
1.43s (± 0.33%) |
1.43s (± 0.36%) |
+0.00s (+ 0.28%) |
1.42s |
1.44s |
| Bind Time |
0.90s (± 2.35%) |
0.92s (± 1.32%) |
+0.02s (+ 2.12%) |
0.87s |
0.93s |
| Check Time |
5.04s (± 1.93%) |
4.80s (± 1.22%) |
-0.24s (- 4.71%) |
4.73s |
5.02s |
| Emit Time |
3.11s (± 6.80%) |
3.44s (± 3.92%) |
+0.33s (+10.68%) |
2.90s |
3.54s |
| Total Time |
10.47s (± 1.32%) |
10.59s (± 0.89%) |
+0.12s (+ 1.16%) |
10.22s |
10.68s |
| TFS - node (v8.9.0, x64) |
| Memory used |
316,442k (± 0.01%) |
314,340k (± 0.01%) |
-2,103k (- 0.66%) |
314,252k |
314,432k |
| Parse Time |
1.13s (± 0.71%) |
1.13s (± 0.57%) |
0.00s ( 0.00%) |
1.12s |
1.15s |
| Bind Time |
0.66s (± 0.79%) |
0.67s (± 0.74%) |
+0.01s (+ 1.06%) |
0.66s |
0.68s |
| Check Time |
4.35s (± 0.55%) |
4.22s (± 0.44%) |
-0.13s (- 3.01%) |
4.18s |
4.25s |
| Emit Time |
3.13s (± 0.60%) |
3.20s (± 0.61%) |
+0.07s (+ 2.33%) |
3.15s |
3.23s |
| Total Time |
9.27s (± 0.32%) |
9.22s (± 0.40%) |
-0.05s (- 0.57%) |
9.12s |
9.28s |
| Angular - node (v8.9.0, x86) |
| Memory used |
188,890k (± 0.02%) |
187,536k (± 0.02%) |
-1,354k (- 0.72%) |
187,471k |
187,604k |
| Parse Time |
1.73s (± 0.69%) |
1.71s (± 0.59%) |
-0.02s (- 0.92%) |
1.70s |
1.74s |
| Bind Time |
0.94s (± 1.12%) |
0.93s (± 0.83%) |
-0.01s (- 0.85%) |
0.91s |
0.94s |
| Check Time |
4.42s (± 0.39%) |
4.31s (± 0.56%) |
-0.11s (- 2.51%) |
4.26s |
4.37s |
| Emit Time |
5.65s (± 1.07%) |
5.71s (± 1.28%) |
+0.05s (+ 0.94%) |
5.53s |
5.88s |
| Total Time |
12.74s (± 0.54%) |
12.66s (± 0.63%) |
-0.08s (- 0.64%) |
12.47s |
12.81s |
| Monaco - node (v8.9.0, x86) |
| Memory used |
201,450k (± 0.02%) |
200,405k (± 0.02%) |
-1,046k (- 0.52%) |
200,308k |
200,493k |
| Parse Time |
1.49s (± 0.49%) |
1.48s (± 0.50%) |
-0.00s (- 0.34%) |
1.47s |
1.50s |
| Bind Time |
0.71s (± 0.67%) |
0.71s (± 1.02%) |
-0.00s (- 0.14%) |
0.70s |
0.73s |
| Check Time |
4.77s (± 0.53%) |
4.66s (± 0.59%) |
-0.11s (- 2.37%) |
4.59s |
4.73s |
| Emit Time |
3.11s (± 1.04%) |
3.17s (± 0.64%) |
+0.06s (+ 2.06%) |
3.13s |
3.22s |
| Total Time |
10.08s (± 0.34%) |
10.03s (± 0.45%) |
-0.05s (- 0.54%) |
9.94s |
10.13s |
| TFS - node (v8.9.0, x86) |
| Memory used |
177,572k (± 0.02%) |
176,368k (± 0.01%) |
-1,205k (- 0.68%) |
176,293k |
176,426k |
| Parse Time |
1.19s (± 0.75%) |
1.18s (± 0.70%) |
-0.00s (- 0.17%) |
1.17s |
1.20s |
| Bind Time |
0.63s (± 0.58%) |
0.64s (± 1.05%) |
+0.01s (+ 1.76%) |
0.62s |
0.65s |
| Check Time |
4.15s (± 0.49%) |
4.09s (± 0.52%) |
-0.05s (- 1.30%) |
4.05s |
4.13s |
| Emit Time |
2.77s (± 0.95%) |
2.84s (± 1.06%) |
+0.07s (+ 2.63%) |
2.81s |
2.95s |
| Total Time |
8.73s (± 0.36%) |
8.75s (± 0.41%) |
+0.03s (+ 0.31%) |
8.70s |
8.84s |
| Angular - node (v9.0.0, x64) |
| Memory used |
333,291k (± 0.02%) |
330,582k (± 0.02%) |
-2,709k (- 0.81%) |
330,358k |
330,726k |
| Parse Time |
1.63s (± 0.47%) |
1.62s (± 0.60%) |
-0.01s (- 0.37%) |
1.60s |
1.64s |
| Bind Time |
0.74s (± 0.70%) |
0.74s (± 0.67%) |
-0.00s (- 0.41%) |
0.73s |
0.75s |
| Check Time |
4.44s (± 1.24%) |
4.32s (± 0.65%) |
-0.12s (- 2.68%) |
4.27s |
4.38s |
| Emit Time |
5.65s (± 1.61%) |
5.96s (± 1.31%) |
+0.30s (+ 5.32%) |
5.73s |
6.03s |
| Total Time |
12.46s (± 0.54%) |
12.64s (± 0.78%) |
+0.18s (+ 1.42%) |
12.33s |
12.77s |
| Monaco - node (v9.0.0, x64) |
| Memory used |
360,914k (± 0.01%) |
358,963k (± 0.01%) |
-1,952k (- 0.54%) |
358,887k |
359,074k |
| Parse Time |
1.28s (± 0.27%) |
1.28s (± 0.47%) |
-0.01s (- 0.55%) |
1.26s |
1.29s |
| Bind Time |
0.86s (± 0.70%) |
0.85s (± 0.61%) |
-0.01s (- 0.70%) |
0.84s |
0.86s |
| Check Time |
4.78s (± 0.47%) |
4.68s (± 0.35%) |
-0.10s (- 2.13%) |
4.64s |
4.70s |
| Emit Time |
3.27s (± 0.44%) |
3.38s (± 0.44%) |
+0.10s (+ 3.15%) |
3.34s |
3.40s |
| Total Time |
10.19s (± 0.35%) |
10.18s (± 0.22%) |
-0.01s (- 0.08%) |
10.12s |
10.22s |
| TFS - node (v9.0.0, x64) |
| Memory used |
316,273k (± 0.01%) |
314,192k (± 0.02%) |
-2,081k (- 0.66%) |
314,040k |
314,307k |
| Parse Time |
1.00s (± 0.73%) |
1.00s (± 0.58%) |
-0.00s (- 0.20%) |
0.99s |
1.01s |
| Bind Time |
0.61s (± 0.85%) |
0.61s (± 0.59%) |
+0.00s (+ 0.49%) |
0.61s |
0.62s |
| Check Time |
4.33s (± 1.67%) |
4.18s (± 1.58%) |
-0.14s (- 3.31%) |
4.10s |
4.38s |
| Emit Time |
3.03s (± 2.80%) |
3.10s (± 2.62%) |
+0.07s (+ 2.34%) |
2.91s |
3.21s |
| Total Time |
8.97s (± 0.47%) |
8.90s (± 0.64%) |
-0.07s (- 0.78%) |
8.69s |
8.98s |
| Angular - node (v9.0.0, x86) |
| Memory used |
189,125k (± 0.02%) |
187,670k (± 0.01%) |
-1,455k (- 0.77%) |
187,611k |
187,726k |
| Parse Time |
1.54s (± 1.14%) |
1.53s (± 0.81%) |
-0.01s (- 0.71%) |
1.51s |
1.57s |
| Bind Time |
0.87s (± 0.89%) |
0.87s (± 1.10%) |
-0.00s (- 0.57%) |
0.84s |
0.88s |
| Check Time |
4.15s (± 0.41%) |
4.01s (± 0.85%) |
-0.13s (- 3.25%) |
3.96s |
4.12s |
| Emit Time |
5.38s (± 0.50%) |
5.47s (± 1.01%) |
+0.10s (+ 1.84%) |
5.40s |
5.67s |
| Total Time |
11.94s (± 0.41%) |
11.89s (± 0.72%) |
-0.05s (- 0.44%) |
11.73s |
12.09s |
| Monaco - node (v9.0.0, x86) |
| Memory used |
201,433k (± 0.02%) |
200,398k (± 0.02%) |
-1,035k (- 0.51%) |
200,327k |
200,458k |
| Parse Time |
1.31s (± 0.98%) |
1.30s (± 0.68%) |
-0.01s (- 0.53%) |
1.29s |
1.33s |
| Bind Time |
0.63s (± 0.57%) |
0.64s (± 0.81%) |
+0.01s (+ 0.79%) |
0.63s |
0.65s |
| Check Time |
4.60s (± 0.45%) |
4.47s (± 0.36%) |
-0.13s (- 2.80%) |
4.45s |
4.51s |
| Emit Time |
3.01s (± 0.60%) |
3.08s (± 0.27%) |
+0.08s (+ 2.63%) |
3.07s |
3.11s |
| Total Time |
9.55s (± 0.35%) |
9.50s (± 0.21%) |
-0.05s (- 0.53%) |
9.46s |
9.54s |
| TFS - node (v9.0.0, x86) |
| Memory used |
177,625k (± 0.03%) |
176,413k (± 0.02%) |
-1,212k (- 0.68%) |
176,359k |
176,502k |
| Parse Time |
1.02s (± 0.81%) |
1.02s (± 1.09%) |
0.00s ( 0.00%) |
1.00s |
1.04s |
| Bind Time |
0.58s (± 1.18%) |
0.57s (± 0.59%) |
-0.00s (- 0.52%) |
0.57s |
0.58s |
| Check Time |
4.02s (± 0.53%) |
3.93s (± 0.62%) |
-0.09s (- 2.21%) |
3.87s |
3.99s |
| Emit Time |
2.70s (± 0.91%) |
2.79s (± 0.83%) |
+0.08s (+ 3.15%) |
2.73s |
2.84s |
| Total Time |
8.33s (± 0.33%) |
8.32s (± 0.47%) |
-0.01s (- 0.11%) |
8.25s |
8.45s |
System
| Machine Name | ts-ci-ubuntu |
| Platform | linux 4.4.0-142-generic |
| Architecture | x64 |
| Available Memory | 16 GB |
| Available Memory | 1 GB |
| CPUs | 4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz |
Hosts
- node (v12.1.0, x64)
- node (v8.9.0, x64)
- node (v8.9.0, x86)
- node (v9.0.0, x64)
- node (v9.0.0, x86)
Scenarios
- Angular - node (v12.1.0, x64)
- Angular - node (v8.9.0, x64)
- Angular - node (v8.9.0, x86)
- Angular - node (v9.0.0, x64)
- Angular - node (v9.0.0, x86)
- Monaco - node (v12.1.0, x64)
- Monaco - node (v8.9.0, x64)
- Monaco - node (v8.9.0, x86)
- Monaco - node (v9.0.0, x64)
- Monaco - node (v9.0.0, x86)
- TFS - node (v12.1.0, x64)
- TFS - node (v8.9.0, x64)
- TFS - node (v8.9.0, x86)
- TFS - node (v9.0.0, x64)
- TFS - node (v9.0.0, x86)
| Benchmark |
Name |
Iterations |
| Current |
30467 |
10 |
| Baseline |
master |
10 |
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Monaco for [email protected] x64 is still a bit slower than master, but it looks like its within the margin of error. I would argue that its not significant enough of a difference. the 9.4% delta from before was obviously a fluke.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Thanks for the amazing work so far :)
|
robpalme reacted with thumbs up emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
We had to revert the PR because of numerous breaks in the RWC test suites. We can give it another go once we have the issues fixed.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Reverted in #31807 - see that ticket for what the breakages were
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
Anders Hejlsberg (@ahejlsberg) thanks for the update and sorry for the trouble!
Is there a way to trigger RWC tests to run next time? Hoping to not break things again.
I couldn't get them running locally, tried gulp submodule update --init && gulp runtests --light=false --ru=rwc .
Happy to help with the fix if we can.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jun 7, 2019
|
The RWC tests rely on the presence of a manually-cloned internal repo. (I believe it contains Microsoft-internal code, which is the reason details are sparse in the build logs—I only just learned this yesterday, so I’m not 100% sure of the details.) It can be triggered by commanding typescript-bot to “test this.”
Maybe we can automatically trigger some extended test suites for PRs that are above some threshold of changed lines. /cc Wesley Wigham (@weswigham) who has been working on build automation stuff lately—thoughts?
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Maybe we can automatically trigger some extended test suites for PRs that are above some threshold of changed lines.
Eh, history has shown that some of the shortest changes can have the most real world impact. We really should just be trying it pre-merge on every PR, it's just a bit overkill to run it on every commit, and there's not really a PR state corresponding to "done and ready to merge".
I could set up a bot command that corresponds to a bulky "run all the extended tests and if they pass, merge" (or a label, but that's not much different) - but that's just a shortcut for the commands we usually already run (and I'd rather still have merges finally merged by humans, as a rule). So.... Eh?
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
there's not really a PR state corresponding to "done and ready to merge".
Approved by a team member is an imperfect proxy, but might be better than nothing. At the same time, we’re a small enough team that I would buy the argument that the rate of return on automating the last 1% of something that's already 99% automated is pretty small.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
I looked into this on Friday and a little bit over the weekend and tracked down what was causing the problem. I will post a revised PR on Monday.
|
joeywatts reacted with thumbs up emoji
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jun 10, 2019
Reviewers
1 more reviewer
Reviewers whose approvals may not affect merge requirements
Uh oh!
There was an error while loading. Please reload this page.
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
|