Skip to content

Arguably improve declaration emit in two ways: #48491

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

Closed
wants to merge 8 commits into from

Conversation

andrewbranch
Copy link
Member

@andrewbranch andrewbranch commented Mar 30, 2022

  1. Allow type annotations existing on optional parameters in the TS source to be reused in declaration emit even if they’re not written as a union with undefined.
  2. Resolve type aliases in lookupSymbolChain to avoid writing an ImportType for a type annotation when you could use a reference to a local type alias instead. This also changes a bunch of symbol baselines to add qualification of members of object type literals assigned to type aliases. The same kind of change appears in a few quick info tests, which makes the display of type alias members more similar to interface members.

Fixes #47849

(I think the repro contains multiple unrelated bugs, but this fixes the one I discussed in the issue. Will check the other and open a new bug if needed.)

Note: Change (2) is enough to fix #47849 alone, so we can back (1) back out if people have objections, but personally I like that some unnecessary characters are dropped from type display.

@typescript-bot typescript-bot added Author: Team For Milestone Bug PRs that fix a bug with a specific milestone labels Mar 30, 2022
@andrewbranch
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Mar 30, 2022

Heya @andrewbranch, I've started to run the perf test suite on this PR at 0652347. You can monitor the build here.

Update: The results are in!

@andrewbranch andrewbranch marked this pull request as draft March 30, 2022 22:55
@andrewbranch andrewbranch changed the title Reuse type nodes from optional parameters and properties even when not written as a union with undefined Reuse type nodes from optional parameters even when not written as a union with undefined Mar 30, 2022
@typescript-bot
Copy link
Collaborator

@andrewbranch
The results of the perf run you requested are in!

Here they are:

Comparison Report - main..48491

Metric main 48491 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 356,665k (± 0.01%) 356,672k (± 0.02%) +7k (+ 0.00%) 356,510k 356,855k
Parse Time 2.06s (± 0.48%) 2.05s (± 0.40%) -0.00s (- 0.19%) 2.04s 2.07s
Bind Time 0.86s (± 0.75%) 0.87s (± 1.72%) +0.00s (+ 0.58%) 0.84s 0.92s
Check Time 5.80s (± 0.34%) 5.81s (± 0.40%) +0.02s (+ 0.28%) 5.76s 5.87s
Emit Time 5.97s (± 0.55%) 5.98s (± 0.50%) +0.01s (+ 0.10%) 5.93s 6.08s
Total Time 14.69s (± 0.35%) 14.72s (± 0.37%) +0.03s (+ 0.19%) 14.64s 14.92s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,779k (± 0.02%) 205,834k (± 0.03%) +55k (+ 0.03%) 205,707k 205,975k
Parse Time 0.84s (± 0.71%) 0.85s (± 0.58%) +0.01s (+ 1.07%) 0.84s 0.86s
Bind Time 0.52s (± 2.02%) 0.52s (± 0.66%) -0.00s (- 0.58%) 0.51s 0.52s
Check Time 7.98s (± 0.54%) 7.97s (± 0.46%) -0.02s (- 0.19%) 7.90s 8.07s
Emit Time 2.50s (± 0.86%) 2.49s (± 1.14%) -0.01s (- 0.32%) 2.43s 2.55s
Total Time 11.84s (± 0.45%) 11.82s (± 0.50%) -0.02s (- 0.14%) 11.72s 11.99s
Monaco - node (v10.16.3, x64)
Memory used 343,603k (± 0.02%) 343,615k (± 0.02%) +13k (+ 0.00%) 343,453k 343,731k
Parse Time 1.57s (± 0.71%) 1.58s (± 0.53%) +0.00s (+ 0.00%) 1.56s 1.60s
Bind Time 0.76s (± 0.65%) 0.76s (± 0.63%) +0.00s (+ 0.13%) 0.75s 0.77s
Check Time 5.77s (± 0.65%) 5.79s (± 0.23%) +0.01s (+ 0.24%) 5.76s 5.82s
Emit Time 3.23s (± 0.58%) 3.21s (± 0.67%) -0.02s (- 0.46%) 3.15s 3.27s
Total Time 11.33s (± 0.35%) 11.33s (± 0.24%) -0.00s (- 0.04%) 11.25s 11.38s
TFS - node (v10.16.3, x64)
Memory used 305,342k (± 0.02%) 305,290k (± 0.02%) -53k (- 0.02%) 305,152k 305,418k
Parse Time 1.28s (± 0.29%) 1.28s (± 0.43%) +0.00s (+ 0.16%) 1.27s 1.29s
Bind Time 0.72s (± 0.86%) 0.71s (± 0.70%) -0.01s (- 0.83%) 0.71s 0.73s
Check Time 5.25s (± 0.46%) 5.24s (± 0.61%) -0.01s (- 0.17%) 5.14s 5.29s
Emit Time 3.44s (± 1.62%) 3.43s (± 1.54%) -0.01s (- 0.20%) 3.31s 3.58s
Total Time 10.69s (± 0.60%) 10.67s (± 0.74%) -0.02s (- 0.16%) 10.44s 10.85s
material-ui - node (v10.16.3, x64)
Memory used 469,842k (± 0.02%) 469,820k (± 0.01%) -22k (- 0.00%) 469,702k 469,973k
Parse Time 1.82s (± 0.55%) 1.81s (± 0.56%) -0.00s (- 0.11%) 1.80s 1.84s
Bind Time 0.68s (± 1.58%) 0.68s (± 0.98%) -0.00s (- 0.15%) 0.67s 0.69s
Check Time 14.22s (± 0.19%) 14.41s (± 0.72%) +0.18s (+ 1.28%) 14.19s 14.64s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.72s (± 0.19%) 16.90s (± 0.64%) +0.18s (+ 1.05%) 16.67s 17.13s
xstate - node (v10.16.3, x64)
Memory used 570,726k (± 0.01%) 570,768k (± 0.02%) +41k (+ 0.01%) 570,480k 570,955k
Parse Time 2.58s (± 0.40%) 2.59s (± 0.31%) +0.01s (+ 0.35%) 2.57s 2.60s
Bind Time 1.01s (± 0.29%) 1.01s (± 0.72%) +0.00s (+ 0.40%) 1.00s 1.03s
Check Time 1.52s (± 0.53%) 1.52s (± 0.58%) +0.01s (+ 0.33%) 1.51s 1.55s
Emit Time 0.07s (± 0.00%) 0.07s (± 4.13%) +0.00s (+ 2.86%) 0.07s 0.08s
Total Time 5.17s (± 0.25%) 5.19s (± 0.36%) +0.02s (+ 0.35%) 5.15s 5.24s
Angular - node (v12.1.0, x64)
Memory used 334,545k (± 0.02%) 334,499k (± 0.02%) -46k (- 0.01%) 334,408k 334,677k
Parse Time 2.04s (± 0.76%) 2.08s (± 0.53%) +0.04s (+ 1.81%) 2.05s 2.09s
Bind Time 0.83s (± 0.69%) 0.83s (± 0.87%) +0.00s (+ 0.24%) 0.82s 0.85s
Check Time 5.63s (± 0.52%) 5.65s (± 0.51%) +0.01s (+ 0.25%) 5.59s 5.73s
Emit Time 6.21s (± 0.60%) 6.25s (± 0.66%) +0.04s (+ 0.73%) 6.19s 6.35s
Total Time 14.71s (± 0.46%) 14.81s (± 0.41%) +0.09s (+ 0.64%) 14.71s 15.00s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,227k (± 0.11%) 193,271k (± 0.11%) +44k (+ 0.02%) 192,603k 193,506k
Parse Time 0.84s (± 1.22%) 0.84s (± 0.71%) +0.01s (+ 0.72%) 0.84s 0.86s
Bind Time 0.53s (± 1.27%) 0.53s (± 1.11%) 0.00s ( 0.00%) 0.52s 0.55s
Check Time 7.45s (± 0.49%) 7.43s (± 0.75%) -0.02s (- 0.20%) 7.37s 7.56s
Emit Time 2.51s (± 0.86%) 2.55s (± 1.53%) +0.03s (+ 1.31%) 2.46s 2.65s
Total Time 11.34s (± 0.33%) 11.36s (± 0.49%) +0.02s (+ 0.19%) 11.24s 11.53s
Monaco - node (v12.1.0, x64)
Memory used 326,450k (± 0.11%) 326,665k (± 0.01%) +216k (+ 0.07%) 326,554k 326,777k
Parse Time 1.54s (± 0.57%) 1.54s (± 0.75%) +0.00s (+ 0.26%) 1.52s 1.57s
Bind Time 0.74s (± 0.88%) 0.74s (± 0.67%) +0.01s (+ 0.95%) 0.74s 0.76s
Check Time 5.61s (± 0.36%) 5.62s (± 0.41%) +0.01s (+ 0.18%) 5.56s 5.67s
Emit Time 3.27s (± 0.96%) 3.25s (± 0.49%) -0.01s (- 0.43%) 3.22s 3.29s
Total Time 11.15s (± 0.31%) 11.16s (± 0.25%) +0.01s (+ 0.07%) 11.10s 11.25s
TFS - node (v12.1.0, x64)
Memory used 289,950k (± 0.04%) 289,947k (± 0.02%) -4k (- 0.00%) 289,835k 290,054k
Parse Time 1.29s (± 0.89%) 1.30s (± 0.99%) +0.01s (+ 0.77%) 1.27s 1.33s
Bind Time 0.71s (± 1.51%) 0.71s (± 0.96%) -0.01s (- 0.70%) 0.69s 0.72s
Check Time 5.17s (± 0.59%) 5.18s (± 0.37%) +0.01s (+ 0.19%) 5.15s 5.23s
Emit Time 3.48s (± 0.77%) 3.47s (± 0.87%) -0.01s (- 0.23%) 3.42s 3.56s
Total Time 10.65s (± 0.39%) 10.66s (± 0.39%) +0.01s (+ 0.05%) 10.57s 10.78s
material-ui - node (v12.1.0, x64)
Memory used 448,692k (± 0.08%) 448,941k (± 0.01%) +249k (+ 0.06%) 448,862k 449,102k
Parse Time 1.81s (± 0.49%) 1.82s (± 0.52%) +0.00s (+ 0.17%) 1.79s 1.84s
Bind Time 0.65s (± 0.58%) 0.64s (± 0.56%) -0.00s (- 0.16%) 0.64s 0.65s
Check Time 12.89s (± 0.57%) 12.94s (± 0.61%) +0.05s (+ 0.40%) 12.76s 13.08s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.35s (± 0.46%) 15.40s (± 0.52%) +0.05s (+ 0.34%) 15.23s 15.56s
xstate - node (v12.1.0, x64)
Memory used 536,353k (± 0.02%) 536,387k (± 0.01%) +34k (+ 0.01%) 536,172k 536,529k
Parse Time 2.53s (± 0.34%) 2.54s (± 0.54%) +0.01s (+ 0.40%) 2.51s 2.57s
Bind Time 1.03s (± 0.56%) 1.04s (± 0.67%) +0.01s (+ 0.87%) 1.03s 1.06s
Check Time 1.46s (± 0.39%) 1.47s (± 0.72%) +0.01s (+ 0.48%) 1.44s 1.49s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.09s (± 0.25%) 5.11s (± 0.40%) +0.03s (+ 0.51%) 5.07s 5.16s
Angular - node (v14.15.1, x64)
Memory used 332,781k (± 0.01%) 332,790k (± 0.01%) +9k (+ 0.00%) 332,733k 332,837k
Parse Time 2.03s (± 0.64%) 2.03s (± 0.32%) +0.00s (+ 0.10%) 2.02s 2.04s
Bind Time 0.87s (± 0.64%) 0.87s (± 0.71%) +0.00s (+ 0.35%) 0.86s 0.89s
Check Time 5.62s (± 0.60%) 5.64s (± 0.35%) +0.02s (+ 0.41%) 5.59s 5.68s
Emit Time 6.29s (± 0.70%) 6.29s (± 0.59%) -0.01s (- 0.14%) 6.18s 6.36s
Total Time 14.80s (± 0.54%) 14.82s (± 0.32%) +0.02s (+ 0.15%) 14.68s 14.91s
Compiler-Unions - node (v14.15.1, x64)
Memory used 194,320k (± 0.56%) 193,369k (± 0.61%) -951k (- 0.49%) 192,016k 195,344k
Parse Time 0.86s (± 0.55%) 0.85s (± 0.58%) -0.00s (- 0.23%) 0.85s 0.87s
Bind Time 0.56s (± 0.84%) 0.56s (± 0.93%) +0.00s (+ 0.18%) 0.55s 0.57s
Check Time 7.54s (± 0.52%) 7.59s (± 0.75%) +0.05s (+ 0.64%) 7.43s 7.72s
Emit Time 2.50s (± 0.72%) 2.50s (± 1.04%) +0.01s (+ 0.28%) 2.45s 2.59s
Total Time 11.45s (± 0.43%) 11.51s (± 0.59%) +0.06s (+ 0.50%) 11.34s 11.65s
Monaco - node (v14.15.1, x64)
Memory used 325,411k (± 0.01%) 325,397k (± 0.00%) -14k (- 0.00%) 325,360k 325,419k
Parse Time 1.58s (± 0.51%) 1.58s (± 0.61%) +0.00s (+ 0.19%) 1.56s 1.61s
Bind Time 0.78s (± 1.11%) 0.78s (± 0.57%) 0.00s ( 0.00%) 0.77s 0.79s
Check Time 5.53s (± 0.71%) 5.52s (± 0.37%) -0.01s (- 0.22%) 5.48s 5.56s
Emit Time 3.33s (± 0.83%) 3.29s (± 0.62%) -0.04s (- 1.11%) 3.26s 3.37s
Total Time 11.22s (± 0.53%) 11.17s (± 0.28%) -0.04s (- 0.39%) 11.12s 11.24s
TFS - node (v14.15.1, x64)
Memory used 288,914k (± 0.01%) 288,905k (± 0.01%) -9k (- 0.00%) 288,864k 288,951k
Parse Time 1.32s (± 1.09%) 1.33s (± 0.94%) +0.01s (+ 0.61%) 1.30s 1.35s
Bind Time 0.73s (± 0.96%) 0.73s (± 1.11%) -0.00s (- 0.14%) 0.71s 0.75s
Check Time 5.16s (± 0.39%) 5.16s (± 0.52%) +0.00s (+ 0.08%) 5.11s 5.24s
Emit Time 3.55s (± 1.85%) 3.49s (± 1.68%) -0.06s (- 1.58%) 3.40s 3.64s
Total Time 10.75s (± 0.71%) 10.71s (± 0.66%) -0.04s (- 0.38%) 10.53s 10.80s
material-ui - node (v14.15.1, x64)
Memory used 447,194k (± 0.06%) 447,297k (± 0.00%) +103k (+ 0.02%) 447,242k 447,337k
Parse Time 1.86s (± 0.74%) 1.88s (± 0.53%) +0.02s (+ 1.08%) 1.86s 1.91s
Bind Time 0.71s (± 0.82%) 0.71s (± 1.82%) 0.00s ( 0.00%) 0.69s 0.75s
Check Time 13.05s (± 1.04%) 13.09s (± 0.68%) +0.04s (+ 0.32%) 12.93s 13.36s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.62s (± 0.85%) 15.68s (± 0.61%) +0.06s (+ 0.38%) 15.50s 15.95s
xstate - node (v14.15.1, x64)
Memory used 534,098k (± 0.00%) 534,090k (± 0.00%) -8k (- 0.00%) 534,050k 534,139k
Parse Time 2.57s (± 0.51%) 2.58s (± 0.39%) +0.01s (+ 0.31%) 2.56s 2.60s
Bind Time 1.14s (± 0.82%) 1.14s (± 0.66%) +0.01s (+ 0.53%) 1.13s 1.16s
Check Time 1.50s (± 0.48%) 1.51s (± 0.57%) +0.01s (+ 0.40%) 1.49s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.29s (± 0.35%) 5.30s (± 0.19%) +0.02s (+ 0.32%) 5.28s 5.32s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory3 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 48491 10
Baseline main 10

Developer Information:

Download Benchmark

@@ -1,7 +1,7 @@
=== tests/cases/compiler/DeclarationErrorsNoEmitOnError.ts ===
type T = { x : number }
>T : Symbol(T, Decl(DeclarationErrorsNoEmitOnError.ts, 0, 0))
>x : Symbol(x, Decl(DeclarationErrorsNoEmitOnError.ts, 0, 10))
>x : Symbol(T.x, Decl(DeclarationErrorsNoEmitOnError.ts, 0, 10))
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I saw 100+ baselines changed, I thought I had done something horribly wrong, but... this seems like an improvement?

@andrewbranch andrewbranch changed the title Reuse type nodes from optional parameters even when not written as a union with undefined Arguably improve declaration emit in two ways: Mar 30, 2022
@@ -138,7 +138,7 @@ function test4(
>x : number

arg4: ((a?: {x: number}, b?: {x: number}) => number) | ((a?: {y: number}) => number),
>arg4 : ((a?: { x: number; } | undefined, b?: { x: number; } | undefined) => number) | ((a?: { y: number; } | undefined) => number)
>arg4 : ((a?: { x: number;}, b?: { x: number;}) => number) | ((a?: { y: number;}) => number)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a little annoying but I guess it’s a general problem with reusing type annotation nodes, not specific to this change 🤔

@andrewbranch
Copy link
Member Author

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Mar 31, 2022

Heya @andrewbranch, I've started to run the perf test suite on this PR at c95d76f. You can monitor the build here.

Update: The results are in!

@typescript-bot
Copy link
Collaborator

@andrewbranch
The results of the perf run you requested are in!

Here they are:

Comparison Report - main..48491

Metric main 48491 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 356,669k (± 0.02%) 356,751k (± 0.02%) +82k (+ 0.02%) 356,614k 357,026k
Parse Time 2.05s (± 0.43%) 2.05s (± 0.67%) 0.00s ( 0.00%) 2.02s 2.09s
Bind Time 0.86s (± 1.09%) 0.86s (± 1.41%) -0.00s (- 0.23%) 0.84s 0.90s
Check Time 5.82s (± 0.42%) 5.78s (± 0.55%) -0.03s (- 0.55%) 5.73s 5.86s
Emit Time 5.99s (± 0.39%) 6.01s (± 1.04%) +0.02s (+ 0.37%) 5.94s 6.25s
Total Time 14.72s (± 0.27%) 14.71s (± 0.48%) -0.01s (- 0.09%) 14.58s 14.93s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,840k (± 0.03%) 205,789k (± 0.03%) -51k (- 0.02%) 205,695k 205,973k
Parse Time 0.85s (± 0.98%) 0.85s (± 0.99%) +0.00s (+ 0.35%) 0.82s 0.86s
Bind Time 0.52s (± 1.35%) 0.52s (± 1.15%) -0.00s (- 0.58%) 0.50s 0.53s
Check Time 7.97s (± 0.67%) 7.90s (± 0.55%) -0.07s (- 0.90%) 7.78s 8.01s
Emit Time 2.49s (± 1.11%) 2.50s (± 1.11%) +0.01s (+ 0.40%) 2.45s 2.56s
Total Time 11.82s (± 0.61%) 11.76s (± 0.44%) -0.06s (- 0.52%) 11.65s 11.87s
Monaco - node (v10.16.3, x64)
Memory used 343,612k (± 0.01%) 343,656k (± 0.01%) +44k (+ 0.01%) 343,545k 343,765k
Parse Time 1.57s (± 0.74%) 1.57s (± 0.59%) +0.01s (+ 0.38%) 1.55s 1.59s
Bind Time 0.76s (± 0.78%) 0.76s (± 0.73%) -0.01s (- 0.79%) 0.75s 0.77s
Check Time 5.75s (± 0.45%) 5.77s (± 0.47%) +0.02s (+ 0.37%) 5.70s 5.81s
Emit Time 3.24s (± 0.28%) 3.24s (± 0.54%) -0.00s (- 0.09%) 3.21s 3.28s
Total Time 11.32s (± 0.20%) 11.34s (± 0.24%) +0.02s (+ 0.14%) 11.27s 11.39s
TFS - node (v10.16.3, x64)
Memory used 305,331k (± 0.02%) 305,323k (± 0.02%) -9k (- 0.00%) 305,213k 305,403k
Parse Time 1.28s (± 0.59%) 1.28s (± 0.93%) -0.00s (- 0.23%) 1.26s 1.32s
Bind Time 0.72s (± 1.11%) 0.72s (± 0.69%) -0.00s (- 0.28%) 0.71s 0.73s
Check Time 5.26s (± 0.56%) 5.23s (± 0.50%) -0.03s (- 0.51%) 5.17s 5.29s
Emit Time 3.44s (± 1.62%) 3.42s (± 1.13%) -0.02s (- 0.61%) 3.33s 3.51s
Total Time 10.70s (± 0.65%) 10.65s (± 0.49%) -0.06s (- 0.52%) 10.54s 10.76s
material-ui - node (v10.16.3, x64)
Memory used 469,867k (± 0.01%) 470,287k (± 0.01%) +421k (+ 0.09%) 470,118k 470,449k
Parse Time 1.82s (± 0.55%) 1.82s (± 0.55%) -0.01s (- 0.44%) 1.79s 1.83s
Bind Time 0.68s (± 1.01%) 0.67s (± 0.88%) -0.00s (- 0.30%) 0.66s 0.69s
Check Time 14.28s (± 0.51%) 14.36s (± 0.35%) +0.08s (+ 0.57%) 14.21s 14.47s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.78s (± 0.49%) 16.85s (± 0.32%) +0.07s (+ 0.42%) 16.69s 16.96s
xstate - node (v10.16.3, x64)
Memory used 574,080k (± 1.26%) 574,030k (± 1.25%) -50k (- 0.01%) 570,642k 602,915k
Parse Time 2.57s (± 0.26%) 2.58s (± 0.32%) +0.01s (+ 0.39%) 2.57s 2.61s
Bind Time 1.01s (± 0.44%) 1.01s (± 0.33%) +0.00s (+ 0.20%) 1.00s 1.02s
Check Time 1.52s (± 0.33%) 1.52s (± 0.29%) -0.01s (- 0.46%) 1.51s 1.53s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.18s (± 0.25%) 5.18s (± 0.22%) +0.00s (+ 0.00%) 5.16s 5.21s
Angular - node (v12.1.0, x64)
Memory used 334,487k (± 0.02%) 334,597k (± 0.02%) +110k (+ 0.03%) 334,507k 334,782k
Parse Time 2.06s (± 0.97%) 2.04s (± 0.63%) -0.01s (- 0.63%) 2.02s 2.08s
Bind Time 0.83s (± 0.78%) 0.83s (± 0.94%) +0.00s (+ 0.12%) 0.82s 0.85s
Check Time 5.62s (± 0.32%) 5.65s (± 0.40%) +0.03s (+ 0.48%) 5.58s 5.70s
Emit Time 6.23s (± 0.92%) 6.25s (± 0.52%) +0.02s (+ 0.31%) 6.17s 6.32s
Total Time 14.73s (± 0.40%) 14.77s (± 0.30%) +0.04s (+ 0.25%) 14.66s 14.85s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,203k (± 0.10%) 193,070k (± 0.15%) -133k (- 0.07%) 192,519k 193,555k
Parse Time 0.84s (± 0.66%) 0.85s (± 1.11%) +0.01s (+ 0.59%) 0.82s 0.87s
Bind Time 0.54s (± 0.74%) 0.53s (± 0.98%) -0.01s (- 1.48%) 0.52s 0.54s
Check Time 7.45s (± 0.39%) 7.41s (± 0.46%) -0.04s (- 0.48%) 7.34s 7.50s
Emit Time 2.54s (± 1.89%) 2.55s (± 1.52%) +0.00s (+ 0.16%) 2.44s 2.63s
Total Time 11.37s (± 0.63%) 11.34s (± 0.58%) -0.03s (- 0.29%) 11.15s 11.47s
Monaco - node (v12.1.0, x64)
Memory used 326,630k (± 0.05%) 326,607k (± 0.02%) -23k (- 0.01%) 326,454k 326,784k
Parse Time 1.56s (± 1.17%) 1.55s (± 0.53%) -0.01s (- 0.64%) 1.53s 1.57s
Bind Time 0.74s (± 0.78%) 0.74s (± 0.65%) -0.01s (- 0.81%) 0.73s 0.75s
Check Time 5.62s (± 0.50%) 5.60s (± 0.27%) -0.01s (- 0.21%) 5.56s 5.64s
Emit Time 3.27s (± 0.78%) 3.24s (± 0.82%) -0.03s (- 0.92%) 3.20s 3.32s
Total Time 11.18s (± 0.48%) 11.12s (± 0.31%) -0.06s (- 0.50%) 11.08s 11.22s
TFS - node (v12.1.0, x64)
Memory used 289,984k (± 0.02%) 290,008k (± 0.03%) +24k (+ 0.01%) 289,846k 290,154k
Parse Time 1.30s (± 0.63%) 1.29s (± 0.70%) -0.01s (- 1.00%) 1.28s 1.31s
Bind Time 0.70s (± 0.97%) 0.70s (± 0.82%) -0.01s (- 0.71%) 0.69s 0.71s
Check Time 5.19s (± 0.27%) 5.18s (± 0.63%) -0.01s (- 0.21%) 5.12s 5.25s
Emit Time 3.47s (± 0.60%) 3.47s (± 0.89%) -0.00s (- 0.12%) 3.40s 3.56s
Total Time 10.67s (± 0.26%) 10.64s (± 0.53%) -0.03s (- 0.32%) 10.53s 10.80s
material-ui - node (v12.1.0, x64)
Memory used 448,764k (± 0.07%) 449,297k (± 0.01%) +534k (+ 0.12%) 449,127k 449,405k
Parse Time 1.81s (± 0.58%) 1.82s (± 0.41%) +0.00s (+ 0.22%) 1.80s 1.83s
Bind Time 0.65s (± 0.53%) 0.65s (± 0.62%) +0.00s (+ 0.31%) 0.64s 0.66s
Check Time 12.92s (± 0.59%) 12.94s (± 0.47%) +0.01s (+ 0.09%) 12.86s 13.12s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.38s (± 0.47%) 15.40s (± 0.39%) +0.02s (+ 0.14%) 15.32s 15.57s
xstate - node (v12.1.0, x64)
Memory used 536,389k (± 0.02%) 539,522k (± 1.30%) +3,133k (+ 0.58%) 536,260k 567,801k
Parse Time 2.52s (± 0.50%) 2.52s (± 0.53%) -0.00s (- 0.12%) 2.49s 2.55s
Bind Time 1.03s (± 0.54%) 1.03s (± 0.33%) -0.00s (- 0.48%) 1.02s 1.03s
Check Time 1.47s (± 0.53%) 1.46s (± 0.55%) -0.01s (- 0.48%) 1.44s 1.48s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.10s (± 0.30%) 5.08s (± 0.35%) -0.01s (- 0.27%) 5.04s 5.12s
Angular - node (v14.15.1, x64)
Memory used 332,810k (± 0.01%) 332,990k (± 0.01%) +180k (+ 0.05%) 332,935k 333,020k
Parse Time 2.02s (± 0.74%) 2.03s (± 0.76%) +0.01s (+ 0.35%) 2.01s 2.08s
Bind Time 0.87s (± 0.71%) 0.87s (± 0.60%) -0.00s (- 0.23%) 0.86s 0.88s
Check Time 5.63s (± 0.47%) 5.61s (± 0.38%) -0.02s (- 0.30%) 5.56s 5.66s
Emit Time 6.33s (± 0.88%) 6.30s (± 0.90%) -0.03s (- 0.51%) 6.20s 6.45s
Total Time 14.85s (± 0.47%) 14.80s (± 0.47%) -0.05s (- 0.31%) 14.66s 14.93s
Compiler-Unions - node (v14.15.1, x64)
Memory used 194,326k (± 0.56%) 194,981k (± 0.37%) +655k (+ 0.34%) 192,062k 195,339k
Parse Time 0.86s (± 0.55%) 0.85s (± 0.70%) -0.01s (- 0.70%) 0.84s 0.87s
Bind Time 0.56s (± 0.80%) 0.56s (± 0.85%) -0.00s (- 0.18%) 0.55s 0.57s
Check Time 7.57s (± 0.54%) 7.48s (± 0.41%) -0.09s (- 1.20%) 7.42s 7.55s
Emit Time 2.51s (± 1.53%) 2.50s (± 0.78%) -0.01s (- 0.40%) 2.45s 2.53s
Total Time 11.50s (± 0.47%) 11.39s (± 0.31%) -0.11s (- 0.95%) 11.31s 11.47s
Monaco - node (v14.15.1, x64)
Memory used 325,412k (± 0.00%) 325,402k (± 0.01%) -10k (- 0.00%) 325,348k 325,433k
Parse Time 1.57s (± 0.89%) 1.57s (± 0.62%) +0.00s (+ 0.06%) 1.55s 1.60s
Bind Time 0.78s (± 0.86%) 0.78s (± 0.64%) -0.00s (- 0.26%) 0.77s 0.79s
Check Time 5.54s (± 0.68%) 5.51s (± 0.39%) -0.03s (- 0.52%) 5.46s 5.55s
Emit Time 3.33s (± 0.86%) 3.31s (± 0.71%) -0.02s (- 0.60%) 3.27s 3.38s
Total Time 11.22s (± 0.53%) 11.17s (± 0.39%) -0.05s (- 0.45%) 11.08s 11.27s
TFS - node (v14.15.1, x64)
Memory used 288,913k (± 0.01%) 288,923k (± 0.01%) +10k (+ 0.00%) 288,881k 288,967k
Parse Time 1.31s (± 1.20%) 1.32s (± 1.18%) +0.01s (+ 0.92%) 1.29s 1.36s
Bind Time 0.75s (± 2.85%) 0.73s (± 0.85%) -0.02s (- 2.67%) 0.72s 0.74s
Check Time 5.17s (± 0.34%) 5.19s (± 0.54%) +0.01s (+ 0.25%) 5.12s 5.24s
Emit Time 3.53s (± 2.04%) 3.51s (± 1.78%) -0.02s (- 0.59%) 3.39s 3.64s
Total Time 10.77s (± 0.80%) 10.74s (± 0.71%) -0.02s (- 0.22%) 10.55s 10.92s
material-ui - node (v14.15.1, x64)
Memory used 447,278k (± 0.00%) 447,600k (± 0.01%) +321k (+ 0.07%) 447,548k 447,692k
Parse Time 1.86s (± 0.73%) 1.86s (± 0.40%) +0.00s (+ 0.05%) 1.85s 1.88s
Bind Time 0.71s (± 1.90%) 0.70s (± 0.88%) -0.01s (- 1.41%) 0.69s 0.71s
Check Time 12.97s (± 0.50%) 13.08s (± 0.62%) +0.11s (+ 0.82%) 12.96s 13.32s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.54s (± 0.48%) 15.64s (± 0.50%) +0.10s (+ 0.62%) 15.53s 15.88s
xstate - node (v14.15.1, x64)
Memory used 534,110k (± 0.00%) 534,107k (± 0.00%) -3k (- 0.00%) 534,057k 534,164k
Parse Time 2.57s (± 0.47%) 2.58s (± 0.52%) +0.00s (+ 0.04%) 2.55s 2.60s
Bind Time 1.13s (± 0.44%) 1.14s (± 0.85%) +0.00s (+ 0.35%) 1.12s 1.16s
Check Time 1.51s (± 0.44%) 1.50s (± 0.37%) -0.00s (- 0.33%) 1.49s 1.52s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.29s (± 0.27%) 5.29s (± 0.38%) -0.00s (- 0.02%) 5.25s 5.33s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory3 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v14.15.1, x64)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v14.15.1, x64)
  • Compiler-Unions - node (v10.16.3, x64)
  • Compiler-Unions - node (v12.1.0, x64)
  • Compiler-Unions - node (v14.15.1, x64)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v14.15.1, x64)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v14.15.1, x64)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v14.15.1, x64)
  • xstate - node (v10.16.3, x64)
  • xstate - node (v12.1.0, x64)
  • xstate - node (v14.15.1, x64)
Benchmark Name Iterations
Current 48491 10
Baseline main 10

Developer Information:

Download Benchmark

@andrewbranch
Copy link
Member Author

I’m a little concerned that this will substitute an equivalent type alias in declaration emit kind of randomly. Perhaps this should be applied in a more limited way, like only when the alternative is an ImportType? I feel like similar conversation came up when first discussing Smarter Type Alias Preservation in 4.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team For Milestone Bug PRs that fix a bug with a specific milestone
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Declaration emit adds unnecessary import types
2 participants