Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move class property transformation into new transformer file #30467

Merged
merged 1 commit into from
Jun 6, 2019

Conversation

joeywatts
Copy link
Contributor

@joeywatts joeywatts commented Mar 18, 2019

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.

@weswigham
Copy link
Member

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.

@joeywatts
Copy link
Contributor Author

@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.

@mheiber
Copy link
Contributor

mheiber commented Apr 3, 2019

ping @weswigham @rbuckton @DanielRosenwasser @RyanCavanaugh would you be up for taking another look? This PR will unblock related work.

src/compiler/transformers/classProperties.ts Outdated Show resolved Hide resolved
src/compiler/transformers/classProperties.ts Outdated Show resolved Hide resolved
src/compiler/transformers/classProperties.ts Outdated Show resolved Hide resolved
src/compiler/binder.ts Outdated Show resolved Hide resolved
@rbuckton
Copy link
Member

rbuckton commented May 7, 2019

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.

@joeywatts
Copy link
Contributor Author

@rbuckton I renamed the transformer using the "class fields" terminology. Think we're ready for another pass!

@rbuckton
Copy link
Member

rbuckton commented May 8, 2019

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 8, 2019

Heya @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.

@rbuckton
Copy link
Member

rbuckton commented May 8, 2019

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.

Signed-off-by: Joseph Watts <jwatts43@bloomberg.net>
@joeywatts joeywatts force-pushed the move-class-property-transform branch from d7022a9 to 9777fb9 Compare May 9, 2019 01:34
@joeywatts
Copy link
Contributor Author

@rbuckton I've squashed the changes down to 1 commit and rebased on top of latest master.

@rbuckton
Copy link
Member

rbuckton commented May 9, 2019

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented May 9, 2019

Heya @rbuckton, I've started to run the perf test suite on this PR at 9777fb9. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@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 Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × 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

@rbuckton
Copy link
Member

rbuckton commented May 9, 2019

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%).

@joeywatts
Copy link
Contributor Author

@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.

@rbuckton
Copy link
Member

@joeywatts I'll look into it over the next few days to see if there's something specific to Monaco on node@8.9.0 that could be causing a problem.

@joeywatts
Copy link
Contributor Author

@rbuckton were you able to see if there's anything specific to Monaco and node@8.9.0? Also, is it possible to run these performance tests locally?

@rbuckton
Copy link
Member

rbuckton commented Jun 6, 2019

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jun 6, 2019

Heya @rbuckton, I've started to run the perf test suite on this PR at 9777fb9. You can monitor the build here. It should now contribute to this PR's status checks.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@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 Namets-ci-ubuntu
Platformlinux 4.4.0-142-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × 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

@rbuckton
Copy link
Member

rbuckton commented Jun 6, 2019

Monaco for node@8.9.0 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.

@rbuckton rbuckton merged commit 3139cf2 into microsoft:master Jun 6, 2019
@rbuckton
Copy link
Member

rbuckton commented Jun 6, 2019

Thanks for the amazing work so far :)

@ahejlsberg
Copy link
Member

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.

@mheiber
Copy link
Contributor

mheiber commented Jun 7, 2019

Reverted in #31807 - see that ticket for what the breakages were

@mheiber
Copy link
Contributor

mheiber commented Jun 7, 2019

@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.

@andrewbranch
Copy link
Member

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 @weswigham who has been working on build automation stuff lately—thoughts?

@weswigham
Copy link
Member

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?

@andrewbranch
Copy link
Member

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.

@rbuckton
Copy link
Member

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.

rbuckton added a commit that referenced this pull request Jun 10, 2019
rbuckton added a commit that referenced this pull request Jun 17, 2019
* Revert "Revert "Move class property transformation into new transformer. (#30467)""

This reverts commit 53467ae.

* Fix emit issues
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants