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

Add separate PrivateIdentifier and SourceFile constructors #36844

Closed
wants to merge 1 commit into from

Conversation

Swatinem
Copy link
Contributor

This lowers the memory usage when compiling src/compiler
from 277M to 273M, so a modest ~1.5% win.

Same as #33431, this further splits Node from SourceFile, which reduces the size of Nodes from 160 bytes to 144

@Swatinem Swatinem requested a review from rbuckton February 17, 2020 22:53
@sandersn
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Feb 26, 2020

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

Update: The results are in!

@sandersn
Copy link
Member

PrivateIdentifiers are rare and there are none in src/compiler, so I bet most of the gain is from SourceFile. Probably a project with lots of files would do even better than then compiler codebase.

@sandersn sandersn added the For Backlog Bug PRs that fix a backlog bug label Feb 26, 2020
@sandersn sandersn requested a review from amcasey February 26, 2020 23:44
@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..36844

Metric master 36844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 333,999k (± 0.02%) 328,884k (± 0.02%) -5,115k (- 1.53%) 328,722k 329,045k
Parse Time 1.62s (± 0.57%) 1.62s (± 0.75%) -0.00s (- 0.12%) 1.58s 1.64s
Bind Time 0.89s (± 1.35%) 0.88s (± 0.34%) -0.01s (- 0.56%) 0.88s 0.89s
Check Time 4.70s (± 0.58%) 4.71s (± 0.46%) +0.01s (+ 0.26%) 4.68s 4.79s
Emit Time 5.24s (± 1.09%) 5.26s (± 0.66%) +0.02s (+ 0.40%) 5.19s 5.33s
Total Time 12.45s (± 0.72%) 12.47s (± 0.41%) +0.02s (+ 0.19%) 12.40s 12.64s
Monaco - node (v10.16.3, x64)
Memory used 335,204k (± 0.02%) 332,137k (± 0.01%) -3,067k (- 0.92%) 332,024k 332,213k
Parse Time 1.25s (± 0.52%) 1.23s (± 0.66%) -0.02s (- 1.52%) 1.22s 1.25s
Bind Time 0.77s (± 0.47%) 0.78s (± 0.63%) +0.01s (+ 1.29%) 0.77s 0.79s
Check Time 4.70s (± 0.31%) 4.71s (± 0.49%) +0.00s (+ 0.09%) 4.68s 4.77s
Emit Time 2.93s (± 0.97%) 2.91s (± 0.65%) -0.03s (- 0.95%) 2.87s 2.97s
Total Time 9.66s (± 0.46%) 9.63s (± 0.19%) -0.03s (- 0.30%) 9.60s 9.68s
TFS - node (v10.16.3, x64)
Memory used 299,386k (± 0.02%) 294,986k (± 0.01%) -4,400k (- 1.47%) 294,905k 295,064k
Parse Time 0.94s (± 0.66%) 0.94s (± 0.39%) -0.01s (- 0.53%) 0.93s 0.94s
Bind Time 0.74s (± 0.75%) 0.74s (± 0.45%) -0.00s (- 0.27%) 0.73s 0.75s
Check Time 4.26s (± 0.31%) 4.24s (± 0.44%) -0.02s (- 0.40%) 4.21s 4.29s
Emit Time 3.03s (± 0.38%) 3.02s (± 0.50%) -0.01s (- 0.46%) 2.98s 3.05s
Total Time 8.97s (± 0.11%) 8.94s (± 0.20%) -0.03s (- 0.36%) 8.90s 8.98s
Angular - node (v12.1.0, x64)
Memory used 309,651k (± 0.08%) 304,497k (± 0.08%) -5,154k (- 1.66%) 303,562k 304,837k
Parse Time 1.57s (± 0.72%) 1.57s (± 0.67%) +0.00s (+ 0.06%) 1.55s 1.59s
Bind Time 0.87s (± 0.79%) 0.86s (± 0.77%) -0.00s (- 0.35%) 0.85s 0.88s
Check Time 4.59s (± 0.49%) 4.61s (± 0.38%) +0.02s (+ 0.35%) 4.58s 4.65s
Emit Time 5.43s (± 1.15%) 5.43s (± 1.05%) -0.01s (- 0.15%) 5.33s 5.55s
Total Time 12.46s (± 0.62%) 12.47s (± 0.54%) +0.01s (+ 0.06%) 12.34s 12.62s
Monaco - node (v12.1.0, x64)
Memory used 315,078k (± 0.02%) 312,049k (± 0.01%) -3,029k (- 0.96%) 311,978k 312,137k
Parse Time 1.20s (± 0.83%) 1.20s (± 0.58%) -0.00s (- 0.08%) 1.18s 1.21s
Bind Time 0.74s (± 0.54%) 0.74s (± 0.87%) +0.00s (+ 0.13%) 0.73s 0.76s
Check Time 4.55s (± 0.49%) 4.55s (± 0.47%) -0.00s (- 0.00%) 4.50s 4.60s
Emit Time 2.94s (± 0.70%) 2.97s (± 0.78%) +0.03s (+ 1.16%) 2.90s 3.00s
Total Time 9.43s (± 0.35%) 9.46s (± 0.35%) +0.03s (+ 0.32%) 9.37s 9.53s
TFS - node (v12.1.0, x64)
Memory used 281,661k (± 0.02%) 277,333k (± 0.02%) -4,328k (- 1.54%) 277,200k 277,425k
Parse Time 0.92s (± 0.84%) 0.91s (± 0.74%) -0.01s (- 1.31%) 0.89s 0.92s
Bind Time 0.70s (± 1.14%) 0.71s (± 1.09%) +0.01s (+ 1.28%) 0.70s 0.73s
Check Time 4.16s (± 0.42%) 4.17s (± 0.38%) +0.00s (+ 0.07%) 4.13s 4.21s
Emit Time 3.03s (± 0.42%) 3.05s (± 0.47%) +0.02s (+ 0.66%) 3.02s 3.08s
Total Time 8.82s (± 0.34%) 8.84s (± 0.22%) +0.02s (+ 0.20%) 8.80s 8.90s
Angular - node (v8.9.0, x64)
Memory used 328,887k (± 0.01%) 323,875k (± 0.02%) -5,011k (- 1.52%) 323,742k 324,018k
Parse Time 2.10s (± 0.39%) 2.09s (± 0.69%) -0.01s (- 0.57%) 2.04s 2.12s
Bind Time 0.92s (± 0.83%) 0.93s (± 1.61%) +0.01s (+ 1.64%) 0.91s 0.98s
Check Time 5.45s (± 0.46%) 5.50s (± 0.53%) +0.05s (+ 0.92%) 5.45s 5.59s
Emit Time 6.19s (± 0.42%) 6.24s (± 0.48%) +0.05s (+ 0.89%) 6.19s 6.32s
Total Time 14.66s (± 0.31%) 14.77s (± 0.35%) +0.11s (+ 0.74%) 14.66s 14.89s
Monaco - node (v8.9.0, x64)
Memory used 333,477k (± 0.01%) 330,498k (± 0.02%) -2,979k (- 0.89%) 330,360k 330,662k
Parse Time 1.53s (± 0.26%) 1.54s (± 0.63%) +0.01s (+ 0.52%) 1.52s 1.56s
Bind Time 0.90s (± 1.82%) 0.83s (± 1.47%) -0.07s (- 7.36%) 0.81s 0.86s
Check Time 5.33s (± 0.55%) 5.57s (± 0.51%) +0.24s (+ 4.52%) 5.50s 5.65s
Emit Time 3.53s (± 0.49%) 3.56s (± 0.58%) +0.03s (+ 0.96%) 3.52s 3.62s
Total Time 11.29s (± 0.23%) 11.51s (± 0.32%) +0.22s (+ 1.94%) 11.42s 11.57s
TFS - node (v8.9.0, x64)
Memory used 298,770k (± 0.02%) 294,485k (± 0.02%) -4,286k (- 1.43%) 294,381k 294,578k
Parse Time 1.25s (± 0.36%) 1.24s (± 0.27%) -0.01s (- 0.72%) 1.24s 1.25s
Bind Time 0.75s (± 0.66%) 0.74s (± 0.80%) -0.00s (- 0.27%) 0.73s 0.76s
Check Time 4.79s (± 0.50%) 4.79s (± 0.62%) +0.00s (+ 0.02%) 4.72s 4.85s
Emit Time 3.37s (± 0.69%) 3.33s (± 1.84%) -0.04s (- 1.30%) 3.09s 3.40s
Total Time 10.16s (± 0.36%) 10.11s (± 0.62%) -0.05s (- 0.52%) 9.90s 10.22s
Angular - node (v8.9.0, x86)
Memory used 188,638k (± 0.02%) 186,074k (± 0.03%) -2,564k (- 1.36%) 185,999k 186,197k
Parse Time 2.05s (± 0.70%) 2.03s (± 0.29%) -0.02s (- 0.88%) 2.02s 2.05s
Bind Time 1.07s (± 0.52%) 1.07s (± 0.49%) -0.00s (- 0.28%) 1.06s 1.08s
Check Time 5.00s (± 0.41%) 4.99s (± 0.70%) -0.00s (- 0.10%) 4.93s 5.07s
Emit Time 6.14s (± 0.61%) 6.16s (± 0.63%) +0.02s (+ 0.36%) 6.08s 6.26s
Total Time 14.26s (± 0.35%) 14.26s (± 0.50%) -0.00s (- 0.01%) 14.13s 14.43s
Monaco - node (v8.9.0, x86)
Memory used 189,088k (± 0.02%) 187,626k (± 0.03%) -1,462k (- 0.77%) 187,540k 187,801k
Parse Time 1.58s (± 0.89%) 1.59s (± 0.78%) +0.01s (+ 0.44%) 1.56s 1.61s
Bind Time 0.77s (± 1.07%) 0.77s (± 0.72%) +0.01s (+ 0.65%) 0.76s 0.78s
Check Time 5.36s (± 1.38%) 5.53s (± 0.48%) +0.16s (+ 3.08%) 5.46s 5.58s
Emit Time 2.98s (± 3.37%) 2.88s (± 1.62%) -0.10s (- 3.49%) 2.82s 3.04s
Total Time 10.69s (± 0.71%) 10.76s (± 0.44%) +0.07s (+ 0.66%) 10.68s 10.87s
TFS - node (v8.9.0, x86)
Memory used 170,326k (± 0.03%) 168,183k (± 0.02%) -2,142k (- 1.26%) 168,045k 168,225k
Parse Time 1.27s (± 0.59%) 1.28s (± 0.58%) +0.01s (+ 0.47%) 1.27s 1.30s
Bind Time 0.72s (± 0.83%) 0.72s (± 1.54%) +0.01s (+ 1.26%) 0.71s 0.76s
Check Time 4.60s (± 0.48%) 4.59s (± 0.35%) -0.01s (- 0.24%) 4.55s 4.62s
Emit Time 2.95s (± 0.73%) 3.01s (± 2.01%) +0.06s (+ 1.97%) 2.93s 3.21s
Total Time 9.54s (± 0.40%) 9.60s (± 0.63%) +0.06s (+ 0.67%) 9.52s 9.79s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
Benchmark Name Iterations
Current 36844 10
Baseline master 10

@Swatinem
Copy link
Contributor Author

so I bet most of the gain is from SourceFile.

Actually the gains are from Node not being mashed together with SourceFile anymore :-)

@sandersn
Copy link
Member

I'd like @rbuckton to sign off on this before merging. When I showed it to him yesterday, he pointed out that it's probably overkill to give all Nodes their own constructors, but the top 10 would benefit. Things like BinaryExpression, PropertyAccessExpression, maybe ElementAccessExpression. I'll let him give the entire list.

@Swatinem
Copy link
Contributor Author

I also don’t think giving each node its own constructor is worth it. At least not now with the way that the API is structured.
What should give some more gains maybe is pre-defining all the properties that end up on some of the types. I don’t really know the compiler well enough to know which ones belong there.

@DanielRosenwasser
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 27, 2020

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

@DanielRosenwasser
Copy link
Member

I'll merge this in if the numbers look reasonable, otherwise there's no use in stalling this for generalizing it to other node types.

@Swatinem
Copy link
Contributor Author

src/compiler/utilities.ts(5570,14): error TS2540: Cannot assign to 'pos' because it is a read-only property.

I think this needs a rebase at least.

@Swatinem Swatinem force-pushed the more-node-constructors branch from 7228ef0 to 458e665 Compare August 27, 2020 21:19
@typescript-bot typescript-bot added For Uncommitted Bug PR for untriaged, rejected, closed or missing bug and removed For Backlog Bug PRs that fix a backlog bug labels Aug 27, 2020
@Swatinem
Copy link
Contributor Author

@DanielRosenwasser rebased, please try again

@DanielRosenwasser
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 27, 2020

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Comparison Report - master..36844

Metric master 36844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 344,439k (± 0.02%) 344,471k (± 0.02%) +32k (+ 0.01%) 344,314k 344,592k
Parse Time 1.99s (± 0.80%) 2.00s (± 0.55%) +0.01s (+ 0.60%) 1.99s 2.03s
Bind Time 0.82s (± 0.54%) 0.82s (± 0.49%) -0.00s (- 0.12%) 0.81s 0.83s
Check Time 4.76s (± 0.27%) 4.76s (± 0.31%) +0.01s (+ 0.13%) 4.73s 4.80s
Emit Time 5.18s (± 0.68%) 5.19s (± 0.67%) +0.02s (+ 0.35%) 5.11s 5.28s
Total Time 12.75s (± 0.37%) 12.78s (± 0.40%) +0.03s (+ 0.27%) 12.66s 12.93s
Monaco - node (v10.16.3, x64)
Memory used 339,281k (± 0.03%) 339,229k (± 0.04%) -52k (- 0.02%) 339,064k 339,454k
Parse Time 1.55s (± 0.47%) 1.55s (± 0.78%) +0.01s (+ 0.39%) 1.53s 1.59s
Bind Time 0.71s (± 1.19%) 0.71s (± 0.67%) +0.00s (+ 0.28%) 0.70s 0.72s
Check Time 4.95s (± 0.55%) 4.96s (± 0.76%) +0.01s (+ 0.26%) 4.89s 5.04s
Emit Time 2.74s (± 0.82%) 2.76s (± 0.94%) +0.02s (+ 0.80%) 2.72s 2.84s
Total Time 9.95s (± 0.45%) 9.99s (± 0.50%) +0.04s (+ 0.44%) 9.89s 10.14s
TFS - node (v10.16.3, x64)
Memory used 302,243k (± 0.02%) 302,280k (± 0.03%) +37k (+ 0.01%) 301,952k 302,448k
Parse Time 1.21s (± 0.78%) 1.21s (± 0.73%) +0.01s (+ 0.58%) 1.20s 1.24s
Bind Time 0.68s (± 0.89%) 0.67s (± 1.47%) -0.00s (- 0.44%) 0.64s 0.69s
Check Time 4.45s (± 0.44%) 4.47s (± 0.43%) +0.02s (+ 0.43%) 4.42s 4.50s
Emit Time 2.90s (± 1.13%) 2.88s (± 1.24%) -0.02s (- 0.55%) 2.81s 2.97s
Total Time 9.23s (± 0.46%) 9.23s (± 0.43%) +0.00s (+ 0.04%) 9.16s 9.36s
material-ui - node (v10.16.3, x64)
Memory used 460,811k (± 0.02%) 460,837k (± 0.01%) +26k (+ 0.01%) 460,723k 460,971k
Parse Time 1.95s (± 0.49%) 1.96s (± 0.74%) +0.01s (+ 0.72%) 1.93s 2.00s
Bind Time 0.66s (± 1.16%) 0.66s (± 1.46%) -0.00s (- 0.00%) 0.64s 0.68s
Check Time 13.46s (± 1.13%) 13.46s (± 0.55%) -0.00s (- 0.01%) 13.31s 13.60s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 16.07s (± 0.94%) 16.08s (± 0.49%) +0.01s (+ 0.06%) 15.90s 16.21s
Angular - node (v12.1.0, x64)
Memory used 321,730k (± 0.03%) 321,637k (± 0.03%) -92k (- 0.03%) 321,418k 321,772k
Parse Time 1.99s (± 0.70%) 1.99s (± 0.48%) +0.00s (+ 0.15%) 1.98s 2.02s
Bind Time 0.81s (± 1.11%) 0.81s (± 0.58%) +0.01s (+ 0.62%) 0.80s 0.82s
Check Time 4.67s (± 0.65%) 4.67s (± 0.48%) +0.00s (+ 0.09%) 4.64s 4.73s
Emit Time 5.34s (± 0.37%) 5.40s (± 0.47%) +0.06s (+ 1.22%) 5.36s 5.45s
Total Time 12.80s (± 0.32%) 12.88s (± 0.31%) +0.08s (+ 0.59%) 12.81s 12.99s
Monaco - node (v12.1.0, x64)
Memory used 321,606k (± 0.01%) 321,495k (± 0.02%) -111k (- 0.03%) 321,338k 321,647k
Parse Time 1.53s (± 0.65%) 1.53s (± 0.80%) +0.00s (+ 0.07%) 1.50s 1.56s
Bind Time 0.69s (± 1.08%) 0.69s (± 0.89%) -0.00s (- 0.29%) 0.68s 0.70s
Check Time 4.76s (± 0.57%) 4.76s (± 0.81%) -0.00s (- 0.06%) 4.68s 4.83s
Emit Time 2.80s (± 0.49%) 2.82s (± 0.53%) +0.02s (+ 0.82%) 2.78s 2.85s
Total Time 9.78s (± 0.45%) 9.80s (± 0.47%) +0.02s (+ 0.19%) 9.70s 9.88s
TFS - node (v12.1.0, x64)
Memory used 286,588k (± 0.02%) 286,569k (± 0.02%) -20k (- 0.01%) 286,430k 286,678k
Parse Time 1.22s (± 0.86%) 1.22s (± 0.56%) +0.00s (+ 0.08%) 1.21s 1.24s
Bind Time 0.64s (± 0.77%) 0.64s (± 0.81%) -0.00s (- 0.62%) 0.63s 0.65s
Check Time 4.36s (± 0.35%) 4.36s (± 0.42%) -0.01s (- 0.16%) 4.32s 4.40s
Emit Time 2.93s (± 0.78%) 2.96s (± 1.05%) +0.04s (+ 1.19%) 2.93s 3.07s
Total Time 9.16s (± 0.44%) 9.19s (± 0.51%) +0.03s (+ 0.28%) 9.10s 9.31s
material-ui - node (v12.1.0, x64)
Memory used 439,202k (± 0.05%) 438,952k (± 0.07%) -250k (- 0.06%) 438,161k 439,252k
Parse Time 1.98s (± 0.83%) 1.98s (± 0.81%) +0.00s (+ 0.05%) 1.94s 2.01s
Bind Time 0.63s (± 0.76%) 0.63s (± 0.71%) +0.00s (+ 0.80%) 0.62s 0.64s
Check Time 12.04s (± 1.21%) 12.11s (± 1.34%) +0.07s (+ 0.61%) 11.89s 12.62s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 14.64s (± 1.06%) 14.72s (± 1.08%) +0.08s (+ 0.55%) 14.47s 15.21s
Angular - node (v8.9.0, x64)
Memory used 341,022k (± 0.02%) 341,011k (± 0.01%) -11k (- 0.00%) 340,934k 341,090k
Parse Time 2.54s (± 0.49%) 2.54s (± 0.54%) +0.00s (+ 0.04%) 2.51s 2.57s
Bind Time 0.85s (± 0.52%) 0.86s (± 0.97%) +0.00s (+ 0.35%) 0.84s 0.88s
Check Time 5.41s (± 0.44%) 5.43s (± 0.42%) +0.02s (+ 0.39%) 5.36s 5.48s
Emit Time 6.06s (± 1.60%) 6.04s (± 1.78%) -0.02s (- 0.38%) 5.83s 6.35s
Total Time 14.86s (± 0.74%) 14.86s (± 0.87%) -0.00s (- 0.00%) 14.66s 15.24s
Monaco - node (v8.9.0, x64)
Memory used 340,628k (± 0.01%) 340,500k (± 0.01%) -127k (- 0.04%) 340,398k 340,619k
Parse Time 1.88s (± 0.32%) 1.87s (± 0.26%) -0.00s (- 0.11%) 1.86s 1.88s
Bind Time 0.89s (± 0.56%) 0.89s (± 0.56%) -0.00s (- 0.11%) 0.87s 0.89s
Check Time 5.49s (± 0.44%) 5.55s (± 0.95%) +0.06s (+ 1.02%) 5.46s 5.70s
Emit Time 3.23s (± 0.76%) 3.21s (± 0.60%) -0.02s (- 0.50%) 3.18s 3.28s
Total Time 11.48s (± 0.38%) 11.52s (± 0.46%) +0.03s (+ 0.30%) 11.42s 11.65s
TFS - node (v8.9.0, x64)
Memory used 303,879k (± 0.02%) 303,859k (± 0.01%) -20k (- 0.01%) 303,795k 303,972k
Parse Time 1.55s (± 0.37%) 1.55s (± 0.48%) -0.00s (- 0.00%) 1.54s 1.57s
Bind Time 0.67s (± 0.99%) 0.68s (± 0.59%) +0.01s (+ 0.89%) 0.67s 0.69s
Check Time 5.20s (± 0.51%) 5.21s (± 0.46%) +0.01s (+ 0.27%) 5.15s 5.27s
Emit Time 2.93s (± 0.67%) 2.94s (± 0.93%) +0.01s (+ 0.38%) 2.87s 2.98s
Total Time 10.35s (± 0.33%) 10.38s (± 0.41%) +0.03s (+ 0.27%) 10.28s 10.45s
material-ui - node (v8.9.0, x64)
Memory used 465,167k (± 0.01%) 465,166k (± 0.01%) -1k (- 0.00%) 465,037k 465,362k
Parse Time 2.39s (± 0.55%) 2.38s (± 0.52%) -0.01s (- 0.42%) 2.36s 2.41s
Bind Time 0.79s (± 1.28%) 0.78s (± 1.07%) -0.01s (- 1.27%) 0.76s 0.80s
Check Time 18.05s (± 0.74%) 18.06s (± 1.24%) +0.02s (+ 0.09%) 17.55s 18.50s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 21.23s (± 0.66%) 21.22s (± 1.11%) -0.00s (- 0.00%) 20.68s 21.71s
Angular - node (v8.9.0, x86)
Memory used 195,717k (± 0.02%) 195,612k (± 0.03%) -104k (- 0.05%) 195,528k 195,777k
Parse Time 2.45s (± 0.56%) 2.46s (± 0.74%) +0.01s (+ 0.24%) 2.44s 2.52s
Bind Time 0.99s (± 0.40%) 0.99s (± 0.73%) +0.00s (+ 0.30%) 0.98s 1.01s
Check Time 4.87s (± 0.33%) 4.91s (± 0.67%) +0.04s (+ 0.84%) 4.83s 5.00s
Emit Time 5.92s (± 0.36%) 5.99s (± 0.91%) +0.06s (+ 1.05%) 5.88s 6.11s
Total Time 14.24s (± 0.25%) 14.35s (± 0.55%) +0.11s (+ 0.77%) 14.21s 14.55s
Monaco - node (v8.9.0, x86)
Memory used 193,624k (± 0.01%) 193,514k (± 0.02%) -110k (- 0.06%) 193,433k 193,636k
Parse Time 1.91s (± 0.91%) 1.91s (± 1.29%) +0.01s (+ 0.42%) 1.88s 1.98s
Bind Time 0.70s (± 0.68%) 0.70s (± 1.06%) 0.00s ( 0.00%) 0.69s 0.72s
Check Time 5.54s (± 1.24%) 5.63s (± 0.72%) +0.09s (+ 1.59%) 5.54s 5.75s
Emit Time 2.71s (± 3.21%) 2.70s (± 1.04%) -0.01s (- 0.22%) 2.66s 2.78s
Total Time 10.85s (± 0.46%) 10.94s (± 0.63%) +0.09s (+ 0.80%) 10.79s 11.13s
TFS - node (v8.9.0, x86)
Memory used 173,833k (± 0.03%) 173,830k (± 0.03%) -3k (- 0.00%) 173,748k 173,969k
Parse Time 1.59s (± 1.22%) 1.58s (± 0.38%) -0.02s (- 0.94%) 1.57s 1.59s
Bind Time 0.64s (± 0.90%) 0.65s (± 1.71%) +0.00s (+ 0.62%) 0.64s 0.69s
Check Time 4.72s (± 0.64%) 4.72s (± 0.47%) -0.00s (- 0.06%) 4.67s 4.76s
Emit Time 2.80s (± 0.58%) 2.81s (± 1.00%) +0.01s (+ 0.50%) 2.72s 2.86s
Total Time 9.75s (± 0.45%) 9.76s (± 0.41%) +0.00s (+ 0.04%) 9.67s 9.82s
material-ui - node (v8.9.0, x86)
Memory used 263,394k (± 0.01%) 263,419k (± 0.02%) +25k (+ 0.01%) 263,326k 263,544k
Parse Time 2.44s (± 0.82%) 2.45s (± 0.96%) +0.01s (+ 0.33%) 2.41s 2.52s
Bind Time 0.68s (± 1.79%) 0.68s (± 1.28%) +0.00s (+ 0.44%) 0.66s 0.69s
Check Time 16.44s (± 0.97%) 16.66s (± 0.81%) +0.21s (+ 1.31%) 16.36s 16.98s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 19.56s (± 0.83%) 19.79s (± 0.73%) +0.23s (+ 1.16%) 19.49s 20.10s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-166-generic
Architecturex64
Available Memory16 GB
Available Memory1 GB
CPUs4 × Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
Hosts
  • node (v10.16.3, x64)
  • node (v12.1.0, x64)
  • node (v8.9.0, x64)
  • node (v8.9.0, x86)
Scenarios
  • Angular - node (v10.16.3, x64)
  • Angular - node (v12.1.0, x64)
  • Angular - node (v8.9.0, x64)
  • Angular - node (v8.9.0, x86)
  • Monaco - node (v10.16.3, x64)
  • Monaco - node (v12.1.0, x64)
  • Monaco - node (v8.9.0, x64)
  • Monaco - node (v8.9.0, x86)
  • TFS - node (v10.16.3, x64)
  • TFS - node (v12.1.0, x64)
  • TFS - node (v8.9.0, x64)
  • TFS - node (v8.9.0, x86)
  • material-ui - node (v10.16.3, x64)
  • material-ui - node (v12.1.0, x64)
  • material-ui - node (v8.9.0, x64)
  • material-ui - node (v8.9.0, x86)
Benchmark Name Iterations
Current 36844 10
Baseline master 10

This lowers the memory usage when compiling `src/compiler`
from **277M** to **273M**, so a modest ~1.5% win.
@rbuckton rbuckton force-pushed the more-node-constructors branch from 458e665 to 99b9eee Compare March 18, 2022 01:15
@typescript-bot
Copy link
Collaborator

This PR doesn't have any linked issues. Please open an issue that references this PR. From there we can discuss and prioritise.

@rbuckton
Copy link
Member

@typescript-bot perf test

@typescript-bot
Copy link
Collaborator

typescript-bot commented Mar 18, 2022

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

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 - main..36844

Metric main 36844 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 356,332k (± 0.02%) 356,378k (± 0.04%) +46k (+ 0.01%) 356,174k 356,664k
Parse Time 2.05s (± 0.46%) 2.05s (± 0.52%) +0.00s (+ 0.05%) 2.03s 2.08s
Bind Time 0.87s (± 1.28%) 0.86s (± 0.79%) -0.00s (- 0.12%) 0.85s 0.88s
Check Time 5.74s (± 0.22%) 5.76s (± 0.57%) +0.02s (+ 0.31%) 5.70s 5.85s
Emit Time 5.98s (± 0.54%) 6.02s (± 0.68%) +0.04s (+ 0.65%) 5.96s 6.16s
Total Time 14.64s (± 0.22%) 14.70s (± 0.38%) +0.06s (+ 0.40%) 14.57s 14.85s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,589k (± 0.02%) 205,578k (± 0.02%) -11k (- 0.01%) 205,466k 205,694k
Parse Time 0.85s (± 0.56%) 0.85s (± 0.61%) +0.00s (+ 0.24%) 0.84s 0.86s
Bind Time 0.52s (± 1.07%) 0.51s (± 0.93%) -0.00s (- 0.97%) 0.50s 0.52s
Check Time 7.95s (± 0.74%) 7.92s (± 0.44%) -0.03s (- 0.31%) 7.85s 8.00s
Emit Time 2.51s (± 0.44%) 2.49s (± 0.50%) -0.03s (- 1.07%) 2.45s 2.51s
Total Time 11.82s (± 0.52%) 11.77s (± 0.29%) -0.06s (- 0.48%) 11.68s 11.85s
Monaco - node (v10.16.3, x64)
Memory used 343,639k (± 0.02%) 343,525k (± 0.01%) -114k (- 0.03%) 343,458k 343,640k
Parse Time 1.57s (± 1.01%) 1.57s (± 0.53%) +0.00s (+ 0.25%) 1.56s 1.59s
Bind Time 0.76s (± 0.73%) 0.76s (± 0.99%) -0.00s (- 0.13%) 0.74s 0.78s
Check Time 5.70s (± 0.49%) 5.70s (± 0.44%) +0.00s (+ 0.07%) 5.62s 5.74s
Emit Time 3.23s (± 0.34%) 3.25s (± 0.51%) +0.02s (+ 0.77%) 3.22s 3.28s
Total Time 11.25s (± 0.37%) 11.28s (± 0.31%) +0.03s (+ 0.28%) 11.20s 11.35s
TFS - node (v10.16.3, x64)
Memory used 305,318k (± 0.02%) 305,254k (± 0.02%) -63k (- 0.02%) 305,146k 305,396k
Parse Time 1.28s (± 0.96%) 1.28s (± 0.39%) -0.01s (- 0.47%) 1.27s 1.29s
Bind Time 0.72s (± 0.90%) 0.71s (± 0.81%) -0.01s (- 0.70%) 0.70s 0.72s
Check Time 5.20s (± 0.29%) 5.20s (± 0.50%) +0.00s (+ 0.06%) 5.16s 5.28s
Emit Time 3.43s (± 0.60%) 3.46s (± 1.92%) +0.03s (+ 0.79%) 3.34s 3.62s
Total Time 10.63s (± 0.29%) 10.65s (± 0.75%) +0.02s (+ 0.18%) 10.54s 10.82s
material-ui - node (v10.16.3, x64)
Memory used 476,280k (± 0.01%) 476,275k (± 0.01%) -5k (- 0.00%) 476,181k 476,365k
Parse Time 1.82s (± 0.53%) 1.81s (± 0.49%) -0.00s (- 0.06%) 1.79s 1.83s
Bind Time 0.68s (± 0.91%) 0.68s (± 0.66%) -0.00s (- 0.44%) 0.67s 0.69s
Check Time 22.80s (± 0.53%) 22.85s (± 0.57%) +0.04s (+ 0.19%) 22.58s 23.14s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 25.30s (± 0.47%) 25.34s (± 0.52%) +0.04s (+ 0.15%) 25.06s 25.66s
xstate - node (v10.16.3, x64)
Memory used 571,797k (± 0.01%) 578,585k (± 1.73%) +6,788k (+ 1.19%) 571,667k 605,660k
Parse Time 2.57s (± 0.52%) 2.57s (± 0.38%) 0.00s ( 0.00%) 2.54s 2.59s
Bind Time 1.00s (± 0.36%) 1.00s (± 0.55%) -0.00s (- 0.20%) 0.99s 1.01s
Check Time 1.50s (± 0.25%) 1.51s (± 0.58%) +0.01s (+ 0.53%) 1.50s 1.54s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.14s (± 0.29%) 5.15s (± 0.35%) +0.01s (+ 0.21%) 5.11s 5.19s
Angular - node (v12.1.0, x64)
Memory used 334,152k (± 0.02%) 334,106k (± 0.02%) -46k (- 0.01%) 333,914k 334,184k
Parse Time 2.04s (± 0.73%) 2.04s (± 0.41%) -0.00s (- 0.10%) 2.02s 2.06s
Bind Time 0.83s (± 0.70%) 0.82s (± 0.73%) -0.00s (- 0.24%) 0.81s 0.84s
Check Time 5.57s (± 0.55%) 5.57s (± 0.44%) -0.00s (- 0.02%) 5.50s 5.63s
Emit Time 6.22s (± 0.60%) 6.28s (± 0.72%) +0.06s (+ 0.88%) 6.21s 6.40s
Total Time 14.67s (± 0.53%) 14.72s (± 0.42%) +0.05s (+ 0.37%) 14.60s 14.90s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,034k (± 0.14%) 193,093k (± 0.11%) +59k (+ 0.03%) 192,495k 193,414k
Parse Time 0.84s (± 0.77%) 0.84s (± 0.66%) 0.00s ( 0.00%) 0.83s 0.85s
Bind Time 0.53s (± 0.89%) 0.53s (± 0.63%) 0.00s ( 0.00%) 0.52s 0.54s
Check Time 7.37s (± 0.62%) 7.41s (± 0.54%) +0.04s (+ 0.50%) 7.34s 7.52s
Emit Time 2.53s (± 1.13%) 2.54s (± 0.94%) +0.01s (+ 0.32%) 2.49s 2.58s
Total Time 11.27s (± 0.60%) 11.31s (± 0.45%) +0.04s (+ 0.40%) 11.24s 11.47s
Monaco - node (v12.1.0, x64)
Memory used 326,544k (± 0.06%) 326,545k (± 0.02%) +1k (+ 0.00%) 326,388k 326,773k
Parse Time 1.54s (± 0.50%) 1.55s (± 0.79%) +0.01s (+ 0.71%) 1.52s 1.57s
Bind Time 0.75s (± 1.62%) 0.74s (± 0.63%) -0.01s (- 0.67%) 0.73s 0.75s
Check Time 5.53s (± 0.49%) 5.55s (± 0.50%) +0.02s (+ 0.33%) 5.49s 5.63s
Emit Time 3.24s (± 0.95%) 3.29s (± 0.85%) +0.05s (+ 1.39%) 3.23s 3.35s
Total Time 11.06s (± 0.42%) 11.13s (± 0.34%) +0.07s (+ 0.66%) 11.03s 11.23s
TFS - node (v12.1.0, x64)
Memory used 289,963k (± 0.01%) 289,968k (± 0.02%) +5k (+ 0.00%) 289,867k 290,086k
Parse Time 1.30s (± 0.87%) 1.29s (± 0.96%) -0.01s (- 0.46%) 1.27s 1.32s
Bind Time 0.70s (± 0.68%) 0.71s (± 1.06%) +0.00s (+ 0.57%) 0.70s 0.73s
Check Time 5.14s (± 0.60%) 5.11s (± 0.53%) -0.03s (- 0.55%) 5.06s 5.19s
Emit Time 3.48s (± 0.67%) 3.52s (± 0.87%) +0.04s (+ 1.03%) 3.47s 3.58s
Total Time 10.62s (± 0.39%) 10.62s (± 0.41%) +0.01s (+ 0.08%) 10.54s 10.74s
material-ui - node (v12.1.0, x64)
Memory used 455,280k (± 0.03%) 455,220k (± 0.09%) -60k (- 0.01%) 453,643k 455,472k
Parse Time 1.81s (± 0.59%) 1.81s (± 0.71%) +0.01s (+ 0.39%) 1.79s 1.85s
Bind Time 0.64s (± 0.90%) 0.64s (± 0.92%) +0.00s (+ 0.16%) 0.63s 0.66s
Check Time 20.33s (± 0.95%) 20.22s (± 0.64%) -0.11s (- 0.55%) 20.07s 20.55s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 22.78s (± 0.88%) 22.68s (± 0.63%) -0.10s (- 0.44%) 22.50s 23.06s
xstate - node (v12.1.0, x64)
Memory used 537,481k (± 0.02%) 537,536k (± 0.02%) +55k (+ 0.01%) 537,423k 537,722k
Parse Time 2.51s (± 0.78%) 2.52s (± 0.46%) +0.01s (+ 0.44%) 2.49s 2.55s
Bind Time 1.03s (± 0.85%) 1.04s (± 0.45%) +0.01s (+ 0.97%) 1.03s 1.05s
Check Time 1.46s (± 0.65%) 1.47s (± 0.51%) +0.01s (+ 0.41%) 1.46s 1.49s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.07s (± 0.59%) 5.10s (± 0.31%) +0.02s (+ 0.47%) 5.06s 5.13s
Angular - node (v14.15.1, x64)
Memory used 332,412k (± 0.01%) 332,407k (± 0.01%) -4k (- 0.00%) 332,359k 332,453k
Parse Time 2.03s (± 0.46%) 2.02s (± 0.52%) -0.01s (- 0.39%) 2.00s 2.05s
Bind Time 0.86s (± 0.58%) 0.87s (± 0.39%) +0.00s (+ 0.23%) 0.86s 0.87s
Check Time 5.58s (± 0.34%) 5.60s (± 0.41%) +0.02s (+ 0.29%) 5.56s 5.65s
Emit Time 6.28s (± 0.76%) 6.37s (± 0.89%) +0.10s (+ 1.56%) 6.29s 6.56s
Total Time 14.74s (± 0.36%) 14.86s (± 0.50%) +0.11s (+ 0.78%) 14.73s 15.05s
Compiler-Unions - node (v14.15.1, x64)
Memory used 193,528k (± 0.62%) 193,116k (± 0.65%) -411k (- 0.21%) 191,172k 195,217k
Parse Time 0.86s (± 0.78%) 0.85s (± 0.43%) -0.00s (- 0.35%) 0.85s 0.86s
Bind Time 0.56s (± 0.71%) 0.56s (± 0.72%) -0.00s (- 0.36%) 0.55s 0.57s
Check Time 7.46s (± 0.47%) 7.44s (± 0.39%) -0.02s (- 0.24%) 7.38s 7.50s
Emit Time 2.48s (± 0.69%) 2.51s (± 1.07%) +0.03s (+ 1.17%) 2.47s 2.58s
Total Time 11.36s (± 0.47%) 11.37s (± 0.43%) +0.01s (+ 0.07%) 11.28s 11.48s
Monaco - node (v14.15.1, x64)
Memory used 325,409k (± 0.01%) 325,292k (± 0.01%) -118k (- 0.04%) 325,256k 325,332k
Parse Time 1.58s (± 0.87%) 1.57s (± 0.53%) -0.00s (- 0.06%) 1.56s 1.59s
Bind Time 0.78s (± 1.67%) 0.78s (± 0.79%) -0.00s (- 0.26%) 0.77s 0.79s
Check Time 5.46s (± 0.49%) 5.49s (± 0.49%) +0.03s (+ 0.57%) 5.44s 5.56s
Emit Time 3.31s (± 0.66%) 3.29s (± 0.54%) -0.02s (- 0.48%) 3.27s 3.34s
Total Time 11.13s (± 0.30%) 11.14s (± 0.36%) +0.01s (+ 0.11%) 11.04s 11.26s
TFS - node (v14.15.1, x64)
Memory used 288,836k (± 0.01%) 288,883k (± 0.01%) +47k (+ 0.02%) 288,813k 288,927k
Parse Time 1.31s (± 1.71%) 1.32s (± 0.90%) +0.01s (+ 0.46%) 1.29s 1.35s
Bind Time 0.73s (± 0.91%) 0.74s (± 0.49%) +0.00s (+ 0.41%) 0.73s 0.74s
Check Time 5.12s (± 0.42%) 5.10s (± 0.53%) -0.01s (- 0.23%) 5.06s 5.17s
Emit Time 3.47s (± 2.00%) 3.47s (± 1.62%) +0.00s (+ 0.06%) 3.38s 3.57s
Total Time 10.63s (± 0.78%) 10.63s (± 0.59%) -0.01s (- 0.08%) 10.50s 10.73s
material-ui - node (v14.15.1, x64)
Memory used 453,525k (± 0.06%) 453,681k (± 0.03%) +156k (+ 0.03%) 453,074k 453,796k
Parse Time 1.85s (± 0.60%) 1.85s (± 0.43%) -0.01s (- 0.27%) 1.83s 1.87s
Bind Time 0.71s (± 0.82%) 0.70s (± 0.32%) -0.01s (- 1.13%) 0.69s 0.70s
Check Time 20.48s (± 0.76%) 20.39s (± 0.83%) -0.09s (- 0.46%) 20.11s 20.78s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 23.04s (± 0.69%) 22.94s (± 0.76%) -0.10s (- 0.45%) 22.65s 23.36s
xstate - node (v14.15.1, x64)
Memory used 535,209k (± 0.01%) 535,221k (± 0.00%) +12k (+ 0.00%) 535,156k 535,269k
Parse Time 2.56s (± 0.38%) 2.56s (± 0.33%) +0.00s (+ 0.08%) 2.55s 2.58s
Bind Time 1.14s (± 0.81%) 1.14s (± 0.77%) +0.00s (+ 0.09%) 1.12s 1.16s
Check Time 1.50s (± 0.63%) 1.50s (± 0.47%) -0.00s (- 0.20%) 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.31%) 5.28s (± 0.24%) -0.00s (- 0.06%) 5.26s 5.31s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory4 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 36844 10
Baseline main 10

Developer Information:

Download Benchmark

@rbuckton
Copy link
Member

This doesn't seem to have a consistent positive effect on compilation as memory usage and compilation time are mostly unchanged. I don't think this change is warranted at this time.

@rbuckton rbuckton closed this Mar 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For Uncommitted Bug PR for untriaged, rejected, closed or missing bug
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

5 participants