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

Added some Type type predicates internally #50010

Conversation

JoshuaKGoldberg
Copy link
Contributor

@JoshuaKGoldberg JoshuaKGoldberg commented Jul 22, 2022

Adds some type predicates with names like is*Type and uses them in a bunch of them internally. Note that while the diff shows slightly increased number of lines, the total number of characters in checker.ts+utilities.ts goes from 3198453 to 3190463 (-7990).

Fixes #50005.

Throwing this up as a draft for reference. I'd be interested to see the results of a perf run...

@typescript-bot typescript-bot added the For Uncommitted Bug PR for untriaged, rejected, closed or missing bug label Jul 22, 2022
@jakebailey
Copy link
Member

When you get this to build, I'll happily do a perf run; I've been wanting to introduce these helpers for a while too.

@jakebailey

This comment was marked as outdated.

@typescript-bot

This comment was marked as outdated.

@typescript-bot

This comment was marked as outdated.

@jakebailey
Copy link
Member

Ah, I should have waited for tests to pass before running perf, oops.

@JoshuaKGoldberg
Copy link
Contributor Author

Yup, sorry for the false starts @jakebailey - it's ready now! 😄

Copy link
Member

@jakebailey jakebailey left a comment

Choose a reason for hiding this comment

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

@typescript-bot perf test this

Using a review comment was probably too clever and the bot didn't like it.

}
else {
Debug.fail("Unhandled type " + Debug.formatTypeFlags(type.flags));
Debug.fail("Unhandled type " + Debug.formatTypeFlags((type as unknown as Type).flags));
Copy link
Member

Choose a reason for hiding this comment

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

Why is this cast required? What is type here? never?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, it's never. I did a quick search for the error message in the issue tracker and couldn't find anything.

@@ -5326,7 +5326,7 @@ namespace ts {
const typeId = type.id;
const isConstructorObject = getObjectFlags(type) & ObjectFlags.Anonymous && type.symbol && type.symbol.flags & SymbolFlags.Class;
const id = getObjectFlags(type) & ObjectFlags.Reference && (type as TypeReference).node ? "N" + getNodeId((type as TypeReference).node!) :
Copy link
Member

Choose a reason for hiding this comment

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

No isTypeReference? Or did that cause problems? (Or, is this PR just not exhaustive?)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's just non-exhaustive.

@jakebailey
Copy link
Member

@typescript-bot perf test this

@jakebailey
Copy link
Member

Or, it just won't run.

return !!(type.flags & TypeFlags.Union);
}

export function isUnionOrIntersectionType(type: Type): type is IntersectionType | UnionType {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I also just found the isUnionOrIntersection member of TypeObject. Is that preferred, or...?

Copy link
Member

Choose a reason for hiding this comment

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

Is that the one that's only available in services?

Copy link
Contributor Author

@JoshuaKGoldberg JoshuaKGoldberg Jul 24, 2022

Choose a reason for hiding this comment

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

Yes, that. I'm wondering if, if this PR's added predicates exist, those member predicates might not be needed anymore?

@jakebailey
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Jul 24, 2022

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 360,144k (± 0.02%) 360,224k (± 0.02%) +80k (+ 0.02%) 360,095k 360,442k
Parse Time 2.09s (± 0.37%) 2.11s (± 0.62%) +0.02s (+ 0.96%) 2.08s 2.13s
Bind Time 0.89s (± 0.91%) 0.90s (± 0.78%) +0.01s (+ 0.67%) 0.89s 0.92s
Check Time 6.00s (± 0.47%) 6.19s (± 0.68%) +0.19s (+ 3.20%) 6.09s 6.31s
Emit Time 6.14s (± 0.74%) 6.20s (± 0.46%) +0.06s (+ 1.04%) 6.12s 6.24s
Total Time 15.12s (± 0.36%) 15.41s (± 0.45%) +0.28s (+ 1.88%) 15.19s 15.53s
Compiler-Unions - node (v10.16.3, x64)
Memory used 206,982k (± 0.03%) 207,057k (± 0.03%) +75k (+ 0.04%) 206,838k 207,179k
Parse Time 0.83s (± 1.33%) 0.84s (± 0.66%) +0.01s (+ 0.84%) 0.83s 0.85s
Bind Time 0.53s (± 1.45%) 0.53s (± 1.53%) +0.01s (+ 1.52%) 0.52s 0.55s
Check Time 7.15s (± 0.36%) 7.61s (± 0.45%) +0.46s (+ 6.40%) 7.51s 7.68s
Emit Time 2.52s (± 1.05%) 2.52s (± 0.69%) +0.00s (+ 0.16%) 2.48s 2.56s
Total Time 11.04s (± 0.30%) 11.51s (± 0.30%) +0.48s (+ 4.31%) 11.45s 11.59s
Monaco - node (v10.16.3, x64)
Memory used 343,910k (± 0.02%) 343,999k (± 0.02%) +89k (+ 0.03%) 343,850k 344,107k
Parse Time 1.60s (± 0.63%) 1.62s (± 0.59%) +0.02s (+ 1.32%) 1.60s 1.63s
Bind Time 0.75s (± 0.49%) 0.76s (± 0.81%) +0.00s (+ 0.53%) 0.75s 0.77s
Check Time 5.99s (± 0.44%) 6.21s (± 0.58%) +0.22s (+ 3.70%) 6.15s 6.28s
Emit Time 3.26s (± 0.65%) 3.29s (± 0.55%) +0.03s (+ 0.92%) 3.26s 3.34s
Total Time 11.61s (± 0.35%) 11.88s (± 0.43%) +0.28s (+ 2.38%) 11.79s 12.00s
TFS - node (v10.16.3, x64)
Memory used 305,113k (± 0.01%) 305,221k (± 0.02%) +107k (+ 0.04%) 305,087k 305,388k
Parse Time 1.28s (± 0.35%) 1.29s (± 0.64%) +0.02s (+ 1.25%) 1.27s 1.31s
Bind Time 0.72s (± 0.56%) 0.72s (± 0.68%) +0.01s (+ 0.70%) 0.71s 0.73s
Check Time 5.44s (± 0.72%) 5.60s (± 0.43%) +0.16s (+ 2.94%) 5.56s 5.67s
Emit Time 3.46s (± 1.12%) 3.46s (± 1.14%) +0.00s (+ 0.03%) 3.40s 3.57s
Total Time 10.89s (± 0.64%) 11.07s (± 0.45%) +0.18s (+ 1.66%) 10.95s 11.21s
material-ui - node (v10.16.3, x64)
Memory used 469,392k (± 0.02%) 469,428k (± 0.01%) +36k (+ 0.01%) 469,337k 469,548k
Parse Time 1.83s (± 0.67%) 1.84s (± 0.63%) +0.01s (+ 0.66%) 1.82s 1.87s
Bind Time 0.69s (± 1.25%) 0.70s (± 1.87%) +0.00s (+ 0.43%) 0.66s 0.71s
Check Time 14.48s (± 0.59%) 15.64s (± 0.66%) +1.16s (+ 8.04%) 15.37s 15.88s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.00s (± 0.52%) 18.18s (± 0.57%) +1.18s (+ 6.94%) 17.90s 18.41s
xstate - node (v10.16.3, x64)
Memory used 578,061k (± 0.01%) 578,187k (± 0.02%) +127k (+ 0.02%) 578,074k 578,424k
Parse Time 2.60s (± 0.39%) 2.62s (± 0.32%) +0.02s (+ 0.61%) 2.61s 2.65s
Bind Time 1.03s (± 1.03%) 1.03s (± 1.25%) +0.01s (+ 0.68%) 1.01s 1.07s
Check Time 1.57s (± 0.73%) 1.62s (± 0.79%) +0.05s (+ 3.32%) 1.59s 1.65s
Emit Time 0.07s (± 0.00%) 0.07s (± 3.14%) +0.00s (+ 1.43%) 0.07s 0.08s
Total Time 5.26s (± 0.42%) 5.34s (± 0.28%) +0.08s (+ 1.56%) 5.31s 5.38s
Angular - node (v12.1.0, x64)
Memory used 337,689k (± 0.02%) 337,803k (± 0.02%) +114k (+ 0.03%) 337,558k 337,919k
Parse Time 2.09s (± 0.64%) 2.10s (± 0.67%) +0.01s (+ 0.33%) 2.07s 2.13s
Bind Time 0.85s (± 0.47%) 0.86s (± 0.75%) +0.01s (+ 1.29%) 0.85s 0.87s
Check Time 5.82s (± 0.57%) 6.02s (± 0.46%) +0.20s (+ 3.40%) 5.96s 6.09s
Emit Time 6.38s (± 0.80%) 6.46s (± 1.26%) +0.08s (+ 1.29%) 6.32s 6.72s
Total Time 15.14s (± 0.44%) 15.44s (± 0.56%) +0.30s (+ 1.97%) 15.29s 15.69s
Compiler-Unions - node (v12.1.0, x64)
Memory used 194,557k (± 0.04%) 194,656k (± 0.03%) +99k (+ 0.05%) 194,498k 194,790k
Parse Time 0.83s (± 0.67%) 0.83s (± 0.99%) -0.00s (- 0.12%) 0.81s 0.85s
Bind Time 0.55s (± 1.58%) 0.54s (± 0.82%) -0.01s (- 1.09%) 0.53s 0.55s
Check Time 6.69s (± 0.60%) 7.18s (± 0.71%) +0.49s (+ 7.33%) 7.09s 7.31s
Emit Time 2.52s (± 0.91%) 2.54s (± 0.83%) +0.02s (+ 0.75%) 2.49s 2.60s
Total Time 10.58s (± 0.55%) 11.09s (± 0.52%) +0.50s (+ 4.76%) 10.98s 11.26s
Monaco - node (v12.1.0, x64)
Memory used 326,846k (± 0.02%) 326,972k (± 0.02%) +125k (+ 0.04%) 326,844k 327,135k
Parse Time 1.57s (± 0.73%) 1.57s (± 0.55%) -0.00s (- 0.06%) 1.56s 1.60s
Bind Time 0.75s (± 1.19%) 0.75s (± 1.04%) +0.00s (+ 0.40%) 0.74s 0.77s
Check Time 5.81s (± 0.33%) 6.03s (± 0.51%) +0.22s (+ 3.79%) 5.95s 6.10s
Emit Time 3.29s (± 0.64%) 3.32s (± 0.86%) +0.03s (+ 0.91%) 3.27s 3.39s
Total Time 11.42s (± 0.27%) 11.67s (± 0.33%) +0.25s (+ 2.21%) 11.60s 11.77s
TFS - node (v12.1.0, x64)
Memory used 289,759k (± 0.02%) 289,730k (± 0.04%) -29k (- 0.01%) 289,260k 289,865k
Parse Time 1.29s (± 0.69%) 1.30s (± 1.17%) +0.01s (+ 0.77%) 1.29s 1.35s
Bind Time 0.72s (± 0.51%) 0.72s (± 0.92%) +0.00s (+ 0.56%) 0.70s 0.73s
Check Time 5.37s (± 0.57%) 5.49s (± 0.52%) +0.12s (+ 2.29%) 5.42s 5.55s
Emit Time 3.52s (± 0.85%) 3.54s (± 1.55%) +0.02s (+ 0.60%) 3.46s 3.67s
Total Time 10.90s (± 0.50%) 11.06s (± 0.78%) +0.15s (+ 1.42%) 10.89s 11.28s
material-ui - node (v12.1.0, x64)
Memory used 448,332k (± 0.06%) 448,587k (± 0.01%) +255k (+ 0.06%) 448,427k 448,711k
Parse Time 1.82s (± 0.59%) 1.84s (± 0.61%) +0.01s (+ 0.77%) 1.81s 1.87s
Bind Time 0.68s (± 0.73%) 0.67s (± 0.73%) -0.00s (- 0.30%) 0.66s 0.68s
Check Time 13.10s (± 0.84%) 14.26s (± 0.56%) +1.15s (+ 8.81%) 14.11s 14.43s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.60s (± 0.75%) 16.76s (± 0.51%) +1.16s (+ 7.47%) 16.62s 16.97s
xstate - node (v12.1.0, x64)
Memory used 543,462k (± 0.02%) 543,532k (± 0.02%) +71k (+ 0.01%) 543,268k 543,722k
Parse Time 2.55s (± 0.49%) 2.55s (± 0.61%) +0.00s (+ 0.08%) 2.51s 2.57s
Bind Time 1.04s (± 1.02%) 1.04s (± 1.07%) 0.00s ( 0.00%) 1.01s 1.07s
Check Time 1.49s (± 0.39%) 1.55s (± 0.49%) +0.06s (+ 4.09%) 1.54s 1.57s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.15s (± 0.27%) 5.22s (± 0.46%) +0.07s (+ 1.34%) 5.18s 5.27s
Angular - node (v14.15.1, x64)
Memory used 335,955k (± 0.01%) 335,911k (± 0.01%) -45k (- 0.01%) 335,803k 336,001k
Parse Time 2.06s (± 0.55%) 2.07s (± 0.54%) +0.01s (+ 0.39%) 2.04s 2.09s
Bind Time 0.90s (± 0.92%) 0.89s (± 0.66%) -0.00s (- 0.22%) 0.88s 0.91s
Check Time 5.84s (± 0.29%) 5.95s (± 0.43%) +0.11s (+ 1.90%) 5.90s 6.00s
Emit Time 6.39s (± 0.86%) 6.38s (± 0.79%) -0.01s (- 0.13%) 6.28s 6.52s
Total Time 15.19s (± 0.37%) 15.29s (± 0.43%) +0.10s (+ 0.68%) 15.15s 15.44s
Compiler-Unions - node (v14.15.1, x64)
Memory used 193,141k (± 0.01%) 193,215k (± 0.01%) +74k (+ 0.04%) 193,171k 193,251k
Parse Time 0.85s (± 0.70%) 0.85s (± 0.40%) +0.01s (+ 0.83%) 0.85s 0.86s
Bind Time 0.58s (± 1.75%) 0.58s (± 0.63%) 0.00s ( 0.00%) 0.57s 0.58s
Check Time 6.73s (± 0.43%) 7.20s (± 0.47%) +0.47s (+ 6.95%) 7.14s 7.29s
Emit Time 2.50s (± 1.33%) 2.49s (± 1.05%) -0.01s (- 0.28%) 2.46s 2.58s
Total Time 10.65s (± 0.41%) 11.11s (± 0.48%) +0.46s (+ 4.36%) 11.03s 11.30s
Monaco - node (v14.15.1, x64)
Memory used 325,646k (± 0.00%) 325,677k (± 0.00%) +30k (+ 0.01%) 325,657k 325,696k
Parse Time 1.58s (± 0.84%) 1.59s (± 1.00%) +0.01s (+ 0.63%) 1.56s 1.64s
Bind Time 0.79s (± 0.96%) 0.79s (± 0.87%) -0.00s (- 0.13%) 0.78s 0.81s
Check Time 5.71s (± 0.55%) 5.87s (± 0.37%) +0.16s (+ 2.75%) 5.82s 5.92s
Emit Time 3.36s (± 0.51%) 3.37s (± 0.71%) +0.01s (+ 0.21%) 3.32s 3.41s
Total Time 11.44s (± 0.43%) 11.61s (± 0.45%) +0.17s (+ 1.51%) 11.51s 11.75s
TFS - node (v14.15.1, x64)
Memory used 288,834k (± 0.01%) 288,803k (± 0.01%) -31k (- 0.01%) 288,737k 288,861k
Parse Time 1.33s (± 2.16%) 1.33s (± 1.06%) -0.00s (- 0.08%) 1.30s 1.37s
Bind Time 0.79s (± 4.49%) 0.76s (± 3.18%) 🟩-0.03s (- 3.43%) 0.73s 0.85s
Check Time 5.34s (± 0.55%) 5.48s (± 0.32%) +0.13s (+ 2.51%) 5.43s 5.51s
Emit Time 3.66s (± 0.54%) 3.60s (± 2.34%) -0.06s (- 1.67%) 3.41s 3.72s
Total Time 11.12s (± 0.53%) 11.16s (± 0.79%) +0.04s (+ 0.38%) 10.99s 11.32s
material-ui - node (v14.15.1, x64)
Memory used 446,704k (± 0.01%) 446,739k (± 0.00%) +36k (+ 0.01%) 446,690k 446,794k
Parse Time 1.88s (± 0.51%) 1.87s (± 0.48%) -0.00s (- 0.00%) 1.85s 1.89s
Bind Time 0.72s (± 1.54%) 0.73s (± 0.82%) +0.00s (+ 0.28%) 0.71s 0.74s
Check Time 13.21s (± 0.96%) 14.32s (± 0.58%) +1.10s (+ 8.36%) 14.07s 14.51s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.81s (± 0.80%) 16.92s (± 0.49%) +1.11s (+ 6.99%) 16.66s 17.11s
xstate - node (v14.15.1, x64)
Memory used 541,314k (± 0.00%) 541,412k (± 0.00%) +98k (+ 0.02%) 541,339k 541,447k
Parse Time 2.61s (± 0.55%) 2.62s (± 0.54%) +0.01s (+ 0.27%) 2.58s 2.65s
Bind Time 1.15s (± 0.82%) 1.15s (± 0.67%) -0.00s (- 0.09%) 1.13s 1.17s
Check Time 1.55s (± 0.78%) 1.61s (± 0.62%) +0.06s (+ 3.86%) 1.60s 1.64s
Emit Time 0.07s (± 3.14%) 0.07s (± 4.66%) +0.00s (+ 2.82%) 0.07s 0.08s
Total Time 5.38s (± 0.23%) 5.45s (± 0.29%) +0.07s (+ 1.21%) 5.42s 5.48s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 50010 10
Baseline main 10

TSServer

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,453ms (± 0.70%) 1,458ms (± 0.40%) +5ms (+ 0.33%) 1,446ms 1,471ms
Req 2 - geterr 3,648ms (± 0.52%) 3,837ms (± 0.56%) +189ms (+ 5.18%) 3,799ms 3,905ms
Req 3 - references 276ms (± 0.64%) 282ms (± 1.71%) +5ms (+ 1.85%) 274ms 296ms
Req 4 - navto 233ms (± 0.45%) 233ms (± 0.47%) +0ms (+ 0.13%) 231ms 235ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 70ms (± 7.89%) 83ms (±14.84%) +13ms (+18.62%) 68ms 110ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,559ms (± 0.60%) 1,563ms (± 0.29%) +4ms (+ 0.28%) 1,552ms 1,572ms
Req 2 - geterr 2,274ms (± 0.62%) 2,343ms (± 0.47%) +69ms (+ 3.02%) 2,306ms 2,366ms
Req 3 - references 295ms (± 0.71%) 298ms (± 0.83%) +2ms (+ 0.74%) 294ms 304ms
Req 4 - navto 239ms (± 1.92%) 234ms (± 1.89%) -6ms (- 2.38%) 227ms 242ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 69ms (± 1.44%) 69ms (± 1.48%) -0ms (- 0.14%) 66ms 70ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,165ms (± 0.61%) 2,175ms (± 0.67%) +10ms (+ 0.47%) 2,142ms 2,215ms
Req 2 - geterr 775ms (± 0.52%) 801ms (± 0.28%) +27ms (+ 3.42%) 795ms 806ms
Req 3 - references 96ms (± 1.74%) 97ms (± 1.74%) +2ms (+ 1.67%) 94ms 100ms
Req 4 - navto 256ms (± 0.42%) 256ms (± 1.30%) +1ms (+ 0.27%) 248ms 262ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 270ms (± 1.45%) 269ms (± 1.37%) -1ms (- 0.26%) 263ms 278ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,478ms (± 0.53%) 1,470ms (± 0.40%) -8ms (- 0.55%) 1,456ms 1,483ms
Req 2 - geterr 3,398ms (± 0.55%) 3,615ms (± 0.63%) +217ms (+ 6.39%) 3,564ms 3,659ms
Req 3 - references 263ms (± 0.65%) 263ms (± 0.65%) +1ms (+ 0.34%) 260ms 268ms
Req 4 - navto 203ms (± 0.89%) 203ms (± 0.68%) +0ms (+ 0.10%) 201ms 207ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 91ms (± 8.26%) 79ms (±13.47%) 🟩-13ms (-13.69%) 57ms 94ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,565ms (± 0.42%) 1,569ms (± 0.55%) +4ms (+ 0.23%) 1,542ms 1,585ms
Req 2 - geterr 2,208ms (± 0.35%) 2,286ms (± 0.56%) +78ms (+ 3.55%) 2,254ms 2,319ms
Req 3 - references 272ms (± 0.58%) 275ms (± 0.75%) +3ms (+ 1.07%) 270ms 279ms
Req 4 - navto 213ms (± 1.00%) 216ms (± 0.97%) +3ms (+ 1.36%) 211ms 220ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 62ms (± 4.46%) 64ms (± 4.09%) +2ms (+ 3.74%) 58ms 68ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,102ms (± 0.54%) 2,098ms (± 0.52%) -4ms (- 0.19%) 2,079ms 2,122ms
Req 2 - geterr 761ms (± 0.64%) 788ms (± 0.37%) +27ms (+ 3.51%) 779ms 792ms
Req 3 - references 66ms (± 0.75%) 67ms (± 0.67%) +1ms (+ 1.83%) 66ms 68ms
Req 4 - navto 241ms (± 1.31%) 242ms (± 0.71%) +0ms (+ 0.17%) 238ms 247ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 261ms (± 0.91%) 263ms (± 0.88%) +2ms (+ 0.57%) 257ms 267ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,516ms (± 0.44%) 1,525ms (± 0.49%) +9ms (+ 0.58%) 1,511ms 1,544ms
Req 2 - geterr 3,513ms (± 0.66%) 3,734ms (± 0.57%) +221ms (+ 6.29%) 3,701ms 3,787ms
Req 3 - references 276ms (± 0.79%) 277ms (± 0.78%) +2ms (+ 0.54%) 273ms 282ms
Req 4 - navto 218ms (± 0.82%) 218ms (± 0.59%) +0ms (+ 0.09%) 216ms 222ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 57ms (± 5.65%) 58ms (± 6.40%) +1ms (+ 2.28%) 54ms 66ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,608ms (± 0.81%) 1,600ms (± 0.72%) -8ms (- 0.48%) 1,582ms 1,631ms
Req 2 - geterr 2,353ms (± 0.60%) 2,423ms (± 0.43%) +69ms (+ 2.95%) 2,400ms 2,445ms
Req 3 - references 288ms (± 1.16%) 289ms (± 1.08%) +1ms (+ 0.21%) 284ms 298ms
Req 4 - navto 230ms (± 1.63%) 233ms (± 2.37%) +3ms (+ 1.22%) 227ms 249ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 54ms (± 2.15%) 54ms (± 4.19%) +1ms (+ 0.93%) 52ms 63ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,222ms (± 0.44%) 2,237ms (± 0.59%) +14ms (+ 0.64%) 2,212ms 2,269ms
Req 2 - geterr 775ms (± 0.32%) 804ms (± 0.47%) +29ms (+ 3.80%) 797ms 815ms
Req 3 - references 65ms (± 0.93%) 66ms (± 1.67%) +2ms (+ 2.33%) 64ms 69ms
Req 4 - navto 250ms (± 0.50%) 251ms (± 0.58%) +1ms (+ 0.24%) 248ms 254ms
Req 5 - completionInfo count 3,244 (± 0.00%) 3,244 (± 0.00%) 0 ( 0.00%) 3,244 3,244
Req 5 - completionInfo 264ms (± 0.62%) 265ms (± 0.48%) +1ms (+ 0.30%) 262ms 268ms
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • Compiler-UnionsTSServer - node (v10.16.3, x64)
  • Compiler-UnionsTSServer - node (v12.1.0, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v10.16.3, x64)
  • CompilerTSServer - node (v12.1.0, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 50010 10
Baseline main 10

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member

Ouch; if these are to be believed, it's a good 3% perf loss.

Wish we had node 16/18 too, in case v8 has improved.

@JoshuaKGoldberg
Copy link
Contributor Author

JoshuaKGoldberg commented Jul 24, 2022

Yeah 😕 that is unfortunate. I suppose I'll close this PR & issue as not worth it. Thanks for the help with the perf tests!

It would be nifty if someone were to get the Closure Compiler running on the TypeScript codebase. I wonder if single-line functions like these type predicates could be inlined...

@JoshuaKGoldberg JoshuaKGoldberg deleted the internal-type-type-predicates branch July 24, 2022 18:40
@DanielRosenwasser
Copy link
Member

DanielRosenwasser commented Aug 18, 2022

@JoshuaKGoldberg do you want to try to reopen this and move all the predicate functions to the checker? I wonder if the cost is from the object indirection of each check thanks to everything implicitly being ts.isYaddaYadda.

@JoshuaKGoldberg JoshuaKGoldberg restored the internal-type-type-predicates branch August 18, 2022 21:45
@JoshuaKGoldberg JoshuaKGoldberg marked this pull request as ready for review August 18, 2022 22:20
@jakebailey
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 18, 2022

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 362,185k (± 0.01%) 362,242k (± 0.01%) +57k (+ 0.02%) 362,178k 362,318k
Parse Time 2.12s (± 0.44%) 2.10s (± 0.43%) -0.02s (- 0.99%) 2.08s 2.12s
Bind Time 0.90s (± 0.64%) 0.91s (± 0.92%) +0.00s (+ 0.56%) 0.89s 0.92s
Check Time 6.02s (± 0.53%) 6.08s (± 0.51%) +0.06s (+ 1.01%) 6.03s 6.15s
Emit Time 5.98s (± 0.60%) 5.97s (± 0.48%) -0.01s (- 0.15%) 5.92s 6.05s
Total Time 15.02s (± 0.42%) 15.06s (± 0.44%) +0.04s (+ 0.23%) 14.93s 15.21s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,777k (± 0.03%) 205,838k (± 0.03%) +61k (+ 0.03%) 205,699k 205,913k
Parse Time 0.84s (± 1.14%) 0.82s (± 0.92%) -0.01s (- 1.32%) 0.81s 0.84s
Bind Time 0.52s (± 1.56%) 0.53s (± 1.93%) +0.01s (+ 1.15%) 0.51s 0.55s
Check Time 7.38s (± 0.54%) 7.49s (± 0.44%) +0.11s (+ 1.48%) 7.44s 7.56s
Emit Time 2.43s (± 0.67%) 2.43s (± 1.16%) -0.00s (- 0.04%) 2.38s 2.49s
Total Time 11.16s (± 0.36%) 11.26s (± 0.43%) +0.10s (+ 0.91%) 11.18s 11.40s
Monaco - node (v10.16.3, x64)
Memory used 344,127k (± 0.02%) 344,174k (± 0.02%) +47k (+ 0.01%) 343,978k 344,385k
Parse Time 1.61s (± 0.91%) 1.60s (± 0.29%) -0.01s (- 0.37%) 1.59s 1.61s
Bind Time 0.76s (± 1.47%) 0.76s (± 0.88%) +0.00s (+ 0.13%) 0.74s 0.77s
Check Time 5.97s (± 0.68%) 6.05s (± 0.44%) +0.07s (+ 1.22%) 5.98s 6.10s
Emit Time 3.23s (± 1.08%) 3.21s (± 0.54%) -0.02s (- 0.56%) 3.17s 3.25s
Total Time 11.57s (± 0.53%) 11.62s (± 0.30%) +0.05s (+ 0.45%) 11.54s 11.68s
TFS - node (v10.16.3, x64)
Memory used 305,226k (± 0.04%) 305,267k (± 0.03%) +40k (+ 0.01%) 305,086k 305,439k
Parse Time 1.29s (± 0.53%) 1.29s (± 0.65%) -0.00s (- 0.08%) 1.26s 1.30s
Bind Time 0.72s (± 0.77%) 0.72s (± 0.55%) +0.00s (+ 0.42%) 0.71s 0.73s
Check Time 5.44s (± 0.46%) 5.51s (± 0.86%) +0.07s (+ 1.25%) 5.42s 5.64s
Emit Time 3.41s (± 1.39%) 3.39s (± 1.29%) -0.02s (- 0.59%) 3.29s 3.50s
Total Time 10.86s (± 0.59%) 10.90s (± 0.68%) +0.05s (+ 0.44%) 10.75s 11.05s
material-ui - node (v10.16.3, x64)
Memory used 473,008k (± 0.01%) 473,011k (± 0.01%) +3k (+ 0.00%) 472,837k 473,108k
Parse Time 1.83s (± 0.81%) 1.83s (± 0.60%) -0.00s (- 0.05%) 1.81s 1.85s
Bind Time 0.68s (± 1.47%) 0.68s (± 1.89%) -0.00s (- 0.15%) 0.66s 0.71s
Check Time 14.52s (± 0.85%) 14.60s (± 0.51%) +0.08s (+ 0.55%) 14.45s 14.80s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.04s (± 0.79%) 17.12s (± 0.43%) +0.08s (+ 0.46%) 16.95s 17.30s
xstate - node (v10.16.3, x64)
Memory used 583,041k (± 0.01%) 583,103k (± 0.02%) +62k (+ 0.01%) 582,928k 583,259k
Parse Time 2.62s (± 0.32%) 2.62s (± 0.43%) +0.00s (+ 0.08%) 2.60s 2.65s
Bind Time 1.05s (± 0.53%) 1.05s (± 0.69%) +0.00s (+ 0.00%) 1.03s 1.06s
Check Time 1.59s (± 0.73%) 1.61s (± 0.50%) +0.02s (+ 1.45%) 1.59s 1.63s
Emit Time 0.07s (± 4.66%) 0.07s (± 3.14%) -0.00s (- 2.74%) 0.07s 0.08s
Total Time 5.32s (± 0.26%) 5.34s (± 0.38%) +0.02s (+ 0.45%) 5.31s 5.41s
Angular - node (v12.1.0, x64)
Memory used 339,647k (± 0.02%) 339,752k (± 0.01%) +104k (+ 0.03%) 339,637k 339,854k
Parse Time 2.11s (± 0.66%) 2.10s (± 0.65%) -0.01s (- 0.33%) 2.08s 2.13s
Bind Time 0.87s (± 0.69%) 0.86s (± 0.52%) -0.01s (- 0.92%) 0.85s 0.87s
Check Time 5.85s (± 0.62%) 5.90s (± 0.36%) +0.05s (+ 0.80%) 5.84s 5.94s
Emit Time 6.25s (± 0.61%) 6.22s (± 0.56%) -0.03s (- 0.48%) 6.15s 6.30s
Total Time 15.07s (± 0.31%) 15.08s (± 0.32%) +0.01s (+ 0.05%) 15.01s 15.21s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,276k (± 0.32%) 193,597k (± 0.04%) +321k (+ 0.17%) 193,429k 193,749k
Parse Time 0.83s (± 1.12%) 0.82s (± 0.75%) -0.01s (- 0.85%) 0.81s 0.83s
Bind Time 0.56s (± 0.67%) 0.55s (± 0.00%) -0.01s (- 0.90%) 0.55s 0.55s
Check Time 6.93s (± 0.64%) 7.00s (± 0.39%) +0.07s (+ 0.95%) 6.93s 7.07s
Emit Time 2.47s (± 0.89%) 2.48s (± 1.06%) +0.01s (+ 0.36%) 2.44s 2.54s
Total Time 10.78s (± 0.43%) 10.85s (± 0.33%) +0.07s (+ 0.61%) 10.78s 10.95s
Monaco - node (v12.1.0, x64)
Memory used 327,093k (± 0.02%) 327,090k (± 0.02%) -3k (- 0.00%) 327,006k 327,251k
Parse Time 1.57s (± 0.60%) 1.57s (± 0.82%) 0.00s ( 0.00%) 1.55s 1.60s
Bind Time 0.74s (± 0.78%) 0.74s (± 0.80%) +0.00s (+ 0.54%) 0.73s 0.76s
Check Time 5.82s (± 0.28%) 5.86s (± 0.38%) +0.04s (+ 0.76%) 5.80s 5.90s
Emit Time 3.27s (± 0.71%) 3.29s (± 0.39%) +0.03s (+ 0.86%) 3.27s 3.32s
Total Time 11.40s (± 0.30%) 11.48s (± 0.31%) +0.08s (+ 0.67%) 11.38s 11.55s
TFS - node (v12.1.0, x64)
Memory used 289,762k (± 0.07%) 289,792k (± 0.05%) +30k (+ 0.01%) 289,203k 289,949k
Parse Time 1.30s (± 1.08%) 1.30s (± 0.77%) -0.00s (- 0.08%) 1.27s 1.32s
Bind Time 0.72s (± 1.01%) 0.71s (± 0.94%) -0.01s (- 0.70%) 0.70s 0.73s
Check Time 5.37s (± 0.50%) 5.42s (± 0.37%) +0.05s (+ 0.97%) 5.36s 5.47s
Emit Time 3.51s (± 0.51%) 3.48s (± 1.43%) -0.03s (- 0.80%) 3.38s 3.59s
Total Time 10.89s (± 0.39%) 10.91s (± 0.47%) +0.02s (+ 0.19%) 10.82s 11.06s
material-ui - node (v12.1.0, x64)
Memory used 451,978k (± 0.06%) 452,058k (± 0.06%) +81k (+ 0.02%) 451,062k 452,287k
Parse Time 1.83s (± 0.90%) 1.82s (± 0.49%) -0.01s (- 0.33%) 1.80s 1.85s
Bind Time 0.67s (± 1.04%) 0.67s (± 0.73%) +0.00s (+ 0.45%) 0.66s 0.68s
Check Time 13.06s (± 0.61%) 13.18s (± 0.75%) +0.12s (+ 0.93%) 13.04s 13.45s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.56s (± 0.51%) 15.68s (± 0.66%) +0.12s (+ 0.75%) 15.51s 15.97s
xstate - node (v12.1.0, x64)
Memory used 551,390k (± 1.32%) 548,243k (± 0.02%) -3,147k (- 0.57%) 547,959k 548,602k
Parse Time 2.55s (± 0.34%) 2.53s (± 0.33%) -0.01s (- 0.55%) 2.52s 2.56s
Bind Time 1.04s (± 0.85%) 1.04s (± 1.30%) +0.00s (+ 0.19%) 1.01s 1.06s
Check Time 1.53s (± 0.79%) 1.53s (± 0.58%) +0.01s (+ 0.52%) 1.52s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.17s (± 0.44%) 5.18s (± 0.40%) +0.00s (+ 0.10%) 5.13s 5.22s
Angular - node (v14.15.1, x64)
Memory used 337,622k (± 0.08%) 337,748k (± 0.01%) +126k (+ 0.04%) 337,699k 337,802k
Parse Time 2.08s (± 0.74%) 2.07s (± 0.57%) -0.00s (- 0.19%) 2.05s 2.10s
Bind Time 0.91s (± 0.82%) 0.90s (± 0.54%) -0.00s (- 0.33%) 0.89s 0.91s
Check Time 5.85s (± 0.60%) 5.87s (± 0.35%) +0.02s (+ 0.39%) 5.83s 5.92s
Emit Time 6.19s (± 0.97%) 6.20s (± 0.87%) +0.02s (+ 0.24%) 6.11s 6.36s
Total Time 15.02s (± 0.64%) 15.05s (± 0.38%) +0.03s (+ 0.21%) 14.93s 15.21s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,339k (± 0.38%) 192,037k (± 0.02%) -303k (- 0.16%) 191,923k 192,145k
Parse Time 0.85s (± 0.78%) 0.85s (± 0.39%) -0.00s (- 0.35%) 0.84s 0.86s
Bind Time 0.58s (± 0.69%) 0.58s (± 0.69%) 0.00s ( 0.00%) 0.57s 0.59s
Check Time 6.92s (± 0.49%) 6.99s (± 0.32%) +0.07s (+ 1.04%) 6.95s 7.06s
Emit Time 2.42s (± 1.12%) 2.42s (± 0.66%) -0.00s (- 0.04%) 2.38s 2.45s
Total Time 10.77s (± 0.45%) 10.83s (± 0.28%) +0.07s (+ 0.62%) 10.77s 10.91s
Monaco - node (v14.15.1, x64)
Memory used 325,884k (± 0.01%) 325,853k (± 0.01%) -31k (- 0.01%) 325,812k 325,894k
Parse Time 1.58s (± 0.89%) 1.56s (± 0.38%) -0.01s (- 0.89%) 1.55s 1.57s
Bind Time 0.78s (± 0.79%) 0.78s (± 1.50%) +0.00s (+ 0.26%) 0.76s 0.82s
Check Time 5.69s (± 0.31%) 5.74s (± 0.42%) +0.05s (+ 0.91%) 5.71s 5.82s
Emit Time 3.31s (± 0.56%) 3.35s (± 0.42%) +0.03s (+ 0.97%) 3.32s 3.38s
Total Time 11.37s (± 0.31%) 11.44s (± 0.20%) +0.07s (+ 0.62%) 11.38s 11.49s
TFS - node (v14.15.1, x64)
Memory used 288,966k (± 0.01%) 288,954k (± 0.01%) -13k (- 0.00%) 288,917k 288,987k
Parse Time 1.37s (± 1.93%) 1.34s (± 2.53%) -0.03s (- 1.90%) 1.29s 1.43s
Bind Time 0.74s (± 3.31%) 0.78s (± 5.57%) +0.04s (+ 4.83%) 0.73s 0.86s
Check Time 5.36s (± 0.61%) 5.42s (± 0.58%) +0.06s (+ 1.04%) 5.37s 5.49s
Emit Time 3.55s (± 2.02%) 3.55s (± 1.98%) +0.00s (+ 0.00%) 3.41s 3.69s
Total Time 11.03s (± 0.95%) 11.09s (± 0.75%) +0.07s (+ 0.59%) 10.87s 11.22s
material-ui - node (v14.15.1, x64)
Memory used 450,366k (± 0.01%) 450,415k (± 0.00%) +50k (+ 0.01%) 450,383k 450,472k
Parse Time 1.87s (± 0.78%) 1.88s (± 0.51%) +0.00s (+ 0.11%) 1.86s 1.90s
Bind Time 0.72s (± 0.69%) 0.71s (± 0.51%) -0.00s (- 0.28%) 0.71s 0.72s
Check Time 13.11s (± 0.44%) 13.25s (± 0.65%) +0.14s (+ 1.10%) 13.12s 13.45s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.70s (± 0.39%) 15.84s (± 0.55%) +0.14s (+ 0.91%) 15.69s 16.04s
xstate - node (v14.15.1, x64)
Memory used 545,787k (± 0.00%) 545,861k (± 0.00%) +74k (+ 0.01%) 545,825k 545,904k
Parse Time 2.61s (± 0.42%) 2.60s (± 0.41%) -0.01s (- 0.31%) 2.58s 2.63s
Bind Time 1.14s (± 0.76%) 1.14s (± 0.87%) -0.00s (- 0.35%) 1.12s 1.17s
Check Time 1.55s (± 0.43%) 1.59s (± 0.39%) +0.04s (+ 2.32%) 1.58s 1.61s
Emit Time 0.08s (± 4.42%) 0.07s (± 3.14%) 🟩-0.01s (- 7.79%) 0.07s 0.08s
Total Time 5.37s (± 0.36%) 5.39s (± 0.34%) +0.02s (+ 0.37%) 5.36s 5.45s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 50010 10
Baseline main 10

TSServer

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,463ms (± 0.66%) 1,453ms (± 0.55%) -10ms (- 0.70%) 1,433ms 1,474ms
Req 2 - geterr 3,786ms (± 0.63%) 3,851ms (± 0.57%) +65ms (+ 1.72%) 3,814ms 3,902ms
Req 3 - references 277ms (± 1.64%) 276ms (± 0.77%) -1ms (- 0.47%) 272ms 282ms
Req 4 - navto 232ms (± 0.94%) 232ms (± 0.66%) +0ms (+ 0.09%) 228ms 236ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 63ms (± 4.25%) 64ms (± 3.94%) +1ms (+ 2.08%) 60ms 69ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,559ms (± 0.49%) 1,562ms (± 0.58%) +3ms (+ 0.21%) 1,540ms 1,580ms
Req 2 - geterr 2,281ms (± 0.48%) 2,297ms (± 0.49%) +16ms (+ 0.71%) 2,278ms 2,319ms
Req 3 - references 298ms (± 0.57%) 296ms (± 0.86%) -2ms (- 0.77%) 291ms 304ms
Req 4 - navto 237ms (± 2.18%) 239ms (± 1.80%) +3ms (+ 1.10%) 228ms 245ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 67ms (± 2.96%) 67ms (± 4.05%) -1ms (- 1.04%) 62ms 72ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,171ms (± 0.54%) 2,181ms (± 0.83%) +10ms (+ 0.47%) 2,152ms 2,220ms
Req 2 - geterr 775ms (± 0.70%) 786ms (± 0.59%) +11ms (+ 1.39%) 778ms 795ms
Req 3 - references 99ms (± 0.92%) 100ms (± 2.10%) +1ms (+ 0.91%) 94ms 105ms
Req 4 - navto 249ms (± 0.85%) 250ms (± 1.22%) +1ms (+ 0.40%) 243ms 260ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 273ms (± 1.61%) 274ms (± 1.21%) +1ms (+ 0.40%) 268ms 282ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,482ms (± 0.60%) 1,478ms (± 0.34%) -3ms (- 0.23%) 1,470ms 1,490ms
Req 2 - geterr 3,526ms (± 0.58%) 3,596ms (± 0.75%) +70ms (+ 1.99%) 3,534ms 3,649ms
Req 3 - references 262ms (± 0.93%) 263ms (± 1.52%) +2ms (+ 0.61%) 258ms 276ms
Req 4 - navto 205ms (± 0.85%) 204ms (± 1.19%) -1ms (- 0.34%) 202ms 212ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 75ms (±13.32%) 71ms (±15.84%) 🟩-4ms (- 4.80%) 56ms 99ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,566ms (± 0.73%) 1,575ms (± 0.74%) +9ms (+ 0.57%) 1,553ms 1,604ms
Req 2 - geterr 2,206ms (± 0.59%) 2,251ms (± 0.50%) +45ms (+ 2.02%) 2,213ms 2,264ms
Req 3 - references 272ms (± 0.90%) 273ms (± 0.90%) +1ms (+ 0.33%) 267ms 279ms
Req 4 - navto 214ms (± 1.18%) 216ms (± 0.75%) +2ms (+ 1.08%) 212ms 219ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 61ms (± 4.57%) 63ms (± 3.84%) +2ms (+ 3.31%) 58ms 67ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,123ms (± 0.58%) 2,128ms (± 0.36%) +5ms (+ 0.24%) 2,104ms 2,140ms
Req 2 - geterr 751ms (± 0.67%) 772ms (± 0.49%) +21ms (+ 2.77%) 766ms 783ms
Req 3 - references 67ms (± 1.68%) 68ms (± 1.84%) +1ms (+ 1.20%) 65ms 70ms
Req 4 - navto 240ms (± 0.44%) 243ms (± 0.91%) +3ms (+ 1.21%) 239ms 247ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 268ms (± 0.95%) 269ms (± 0.86%) +1ms (+ 0.49%) 265ms 274ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,536ms (± 0.61%) 1,533ms (± 0.51%) -3ms (- 0.17%) 1,521ms 1,549ms
Req 2 - geterr 3,687ms (± 0.83%) 3,723ms (± 0.73%) +36ms (+ 0.98%) 3,657ms 3,768ms
Req 3 - references 278ms (± 1.74%) 277ms (± 0.78%) -1ms (- 0.29%) 273ms 282ms
Req 4 - navto 219ms (± 0.89%) 220ms (± 0.53%) +1ms (+ 0.37%) 217ms 222ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 56ms (± 4.33%) 55ms (± 1.05%) -1ms (- 1.43%) 54ms 57ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,601ms (± 0.39%) 1,602ms (± 0.30%) +1ms (+ 0.06%) 1,589ms 1,611ms
Req 2 - geterr 2,342ms (± 0.40%) 2,375ms (± 0.41%) +33ms (+ 1.40%) 2,359ms 2,405ms
Req 3 - references 286ms (± 0.70%) 287ms (± 0.78%) +2ms (+ 0.56%) 282ms 292ms
Req 4 - navto 232ms (± 2.66%) 230ms (± 1.72%) -3ms (- 1.20%) 226ms 245ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 1.10%) 53ms (± 0.90%) 0ms ( 0.00%) 52ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,229ms (± 0.64%) 2,219ms (± 0.43%) -9ms (- 0.42%) 2,199ms 2,237ms
Req 2 - geterr 779ms (± 0.44%) 802ms (± 0.46%) +23ms (+ 2.95%) 793ms 807ms
Req 3 - references 65ms (± 1.19%) 65ms (± 0.73%) +0ms (+ 0.62%) 64ms 66ms
Req 4 - navto 248ms (± 0.39%) 249ms (± 0.55%) +1ms (+ 0.53%) 246ms 252ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 277ms (± 0.50%) 277ms (± 0.60%) +0ms (+ 0.11%) 274ms 282ms
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • Compiler-UnionsTSServer - node (v10.16.3, x64)
  • Compiler-UnionsTSServer - node (v12.1.0, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v10.16.3, x64)
  • CompilerTSServer - node (v12.1.0, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 50010 10
Baseline main 10

Developer Information:

Download Benchmark

@jakebailey
Copy link
Member

Hm, not quite as bad anymore, but I'm having trouble distinguishing it from noise too.

@jakebailey
Copy link
Member

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 19, 2022

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

Update: The results are in!

@typescript-bot
Copy link
Collaborator

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

Here they are:

Compiler

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 362,274k (± 0.02%) 362,285k (± 0.02%) +11k (+ 0.00%) 362,131k 362,401k
Parse Time 2.10s (± 0.51%) 2.10s (± 0.57%) +0.00s (+ 0.19%) 2.08s 2.14s
Bind Time 0.90s (± 0.72%) 0.90s (± 1.33%) +0.00s (+ 0.22%) 0.88s 0.94s
Check Time 6.00s (± 0.54%) 6.08s (± 0.54%) +0.08s (+ 1.40%) 6.01s 6.14s
Emit Time 5.97s (± 0.71%) 5.97s (± 0.48%) -0.00s (- 0.08%) 5.91s 6.04s
Total Time 14.96s (± 0.29%) 15.05s (± 0.37%) +0.09s (+ 0.57%) 14.88s 15.13s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,720k (± 0.04%) 205,882k (± 0.03%) +161k (+ 0.08%) 205,681k 206,007k
Parse Time 0.83s (± 0.80%) 0.82s (± 0.70%) -0.01s (- 1.20%) 0.81s 0.84s
Bind Time 0.53s (± 1.42%) 0.53s (± 1.42%) +0.01s (+ 1.33%) 0.52s 0.55s
Check Time 7.35s (± 0.47%) 7.46s (± 0.72%) +0.11s (+ 1.54%) 7.33s 7.57s
Emit Time 2.41s (± 0.79%) 2.42s (± 0.68%) +0.01s (+ 0.37%) 2.37s 2.44s
Total Time 11.12s (± 0.36%) 11.23s (± 0.50%) +0.12s (+ 1.07%) 11.13s 11.36s
Monaco - node (v10.16.3, x64)
Memory used 344,152k (± 0.02%) 344,186k (± 0.02%) +35k (+ 0.01%) 343,994k 344,308k
Parse Time 1.60s (± 0.62%) 1.60s (± 0.76%) -0.01s (- 0.44%) 1.57s 1.62s
Bind Time 0.76s (± 0.77%) 0.76s (± 1.39%) -0.00s (- 0.00%) 0.74s 0.79s
Check Time 5.98s (± 0.69%) 6.03s (± 0.41%) +0.05s (+ 0.82%) 5.97s 6.09s
Emit Time 3.24s (± 1.30%) 3.21s (± 0.74%) -0.03s (- 0.89%) 3.16s 3.26s
Total Time 11.59s (± 0.49%) 11.60s (± 0.22%) +0.01s (+ 0.10%) 11.53s 11.66s
TFS - node (v10.16.3, x64)
Memory used 305,259k (± 0.03%) 305,316k (± 0.03%) +57k (+ 0.02%) 305,070k 305,589k
Parse Time 1.28s (± 0.64%) 1.29s (± 0.78%) +0.00s (+ 0.23%) 1.26s 1.31s
Bind Time 0.72s (± 0.72%) 0.72s (± 0.80%) +0.00s (+ 0.56%) 0.71s 0.73s
Check Time 5.45s (± 0.53%) 5.50s (± 0.63%) +0.05s (+ 0.97%) 5.42s 5.58s
Emit Time 3.40s (± 1.62%) 3.37s (± 0.69%) -0.03s (- 0.76%) 3.33s 3.43s
Total Time 10.85s (± 0.66%) 10.88s (± 0.35%) +0.04s (+ 0.33%) 10.82s 11.00s
material-ui - node (v10.16.3, x64)
Memory used 472,934k (± 0.02%) 472,996k (± 0.01%) +62k (+ 0.01%) 472,875k 473,167k
Parse Time 1.83s (± 0.63%) 1.83s (± 0.61%) -0.00s (- 0.22%) 1.81s 1.85s
Bind Time 0.68s (± 1.27%) 0.68s (± 1.33%) -0.00s (- 0.15%) 0.66s 0.70s
Check Time 14.49s (± 0.78%) 14.67s (± 1.58%) +0.18s (+ 1.25%) 14.39s 15.47s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.01s (± 0.71%) 17.18s (± 1.37%) +0.18s (+ 1.03%) 16.89s 17.99s
xstate - node (v10.16.3, x64)
Memory used 583,004k (± 0.02%) 583,045k (± 0.01%) +41k (+ 0.01%) 582,908k 583,272k
Parse Time 2.61s (± 0.38%) 2.60s (± 0.37%) -0.00s (- 0.15%) 2.59s 2.62s
Bind Time 1.04s (± 0.57%) 1.05s (± 0.69%) +0.00s (+ 0.29%) 1.03s 1.07s
Check Time 1.57s (± 0.67%) 1.60s (± 0.67%) +0.03s (+ 2.04%) 1.58s 1.62s
Emit Time 0.07s (± 3.14%) 0.07s (± 4.66%) +0.00s (+ 2.82%) 0.07s 0.08s
Total Time 5.29s (± 0.31%) 5.31s (± 0.18%) +0.03s (+ 0.49%) 5.29s 5.34s
Angular - node (v12.1.0, x64)
Memory used 339,710k (± 0.02%) 339,749k (± 0.02%) +38k (+ 0.01%) 339,597k 339,904k
Parse Time 2.10s (± 0.64%) 2.10s (± 0.43%) -0.00s (- 0.10%) 2.08s 2.12s
Bind Time 0.86s (± 0.55%) 0.86s (± 0.55%) -0.01s (- 0.70%) 0.85s 0.87s
Check Time 5.84s (± 0.47%) 5.86s (± 0.51%) +0.02s (+ 0.34%) 5.79s 5.91s
Emit Time 6.22s (± 0.62%) 6.18s (± 0.60%) -0.03s (- 0.55%) 6.12s 6.30s
Total Time 15.03s (± 0.40%) 15.00s (± 0.37%) -0.02s (- 0.15%) 14.93s 15.19s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,477k (± 0.11%) 193,477k (± 0.09%) -0k (- 0.00%) 192,753k 193,646k
Parse Time 0.83s (± 0.85%) 0.82s (± 1.03%) -0.01s (- 0.97%) 0.80s 0.84s
Bind Time 0.55s (± 0.86%) 0.56s (± 0.67%) +0.00s (+ 0.36%) 0.55s 0.56s
Check Time 6.91s (± 0.69%) 7.00s (± 0.51%) +0.09s (+ 1.26%) 6.93s 7.07s
Emit Time 2.46s (± 0.51%) 2.45s (± 0.78%) -0.01s (- 0.45%) 2.42s 2.51s
Total Time 10.75s (± 0.45%) 10.82s (± 0.34%) +0.07s (+ 0.69%) 10.73s 10.90s
Monaco - node (v12.1.0, x64)
Memory used 327,129k (± 0.03%) 327,045k (± 0.06%) -84k (- 0.03%) 326,326k 327,305k
Parse Time 1.57s (± 1.06%) 1.59s (± 1.05%) +0.01s (+ 0.83%) 1.55s 1.62s
Bind Time 0.74s (± 1.10%) 0.74s (± 0.78%) +0.00s (+ 0.41%) 0.73s 0.76s
Check Time 5.80s (± 0.68%) 5.87s (± 0.16%) +0.08s (+ 1.29%) 5.84s 5.89s
Emit Time 3.28s (± 0.63%) 3.29s (± 1.23%) +0.01s (+ 0.46%) 3.25s 3.45s
Total Time 11.39s (± 0.46%) 11.49s (± 0.43%) +0.10s (+ 0.92%) 11.42s 11.66s
TFS - node (v12.1.0, x64)
Memory used 289,862k (± 0.02%) 289,887k (± 0.02%) +25k (+ 0.01%) 289,768k 290,068k
Parse Time 1.30s (± 0.57%) 1.30s (± 0.97%) +0.00s (+ 0.08%) 1.28s 1.34s
Bind Time 0.72s (± 1.08%) 0.71s (± 0.83%) -0.00s (- 0.70%) 0.70s 0.73s
Check Time 5.39s (± 0.68%) 5.44s (± 0.41%) +0.05s (+ 0.97%) 5.38s 5.48s
Emit Time 3.48s (± 0.63%) 3.48s (± 0.95%) +0.00s (+ 0.03%) 3.42s 3.55s
Total Time 10.88s (± 0.34%) 10.94s (± 0.30%) +0.05s (+ 0.51%) 10.84s 10.99s
material-ui - node (v12.1.0, x64)
Memory used 451,831k (± 0.07%) 451,942k (± 0.08%) +111k (+ 0.02%) 450,919k 452,274k
Parse Time 1.83s (± 0.32%) 1.83s (± 0.57%) +0.01s (+ 0.33%) 1.81s 1.85s
Bind Time 0.67s (± 0.60%) 0.67s (± 0.54%) +0.00s (+ 0.45%) 0.67s 0.68s
Check Time 13.04s (± 0.58%) 13.24s (± 0.94%) +0.21s (+ 1.57%) 13.05s 13.55s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.54s (± 0.48%) 15.75s (± 0.80%) +0.21s (+ 1.38%) 15.55s 16.06s
xstate - node (v12.1.0, x64)
Memory used 548,097k (± 0.01%) 551,503k (± 1.32%) +3,406k (+ 0.62%) 548,054k 580,844k
Parse Time 2.54s (± 0.59%) 2.54s (± 0.45%) -0.00s (- 0.04%) 2.52s 2.57s
Bind Time 1.04s (± 1.50%) 1.03s (± 0.73%) -0.00s (- 0.29%) 1.02s 1.05s
Check Time 1.51s (± 0.51%) 1.54s (± 0.62%) +0.03s (+ 1.79%) 1.52s 1.56s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.16s (± 0.36%) 5.18s (± 0.28%) +0.03s (+ 0.50%) 5.16s 5.22s
Angular - node (v14.15.1, x64)
Memory used 337,741k (± 0.01%) 337,761k (± 0.01%) +19k (+ 0.01%) 337,687k 337,816k
Parse Time 2.08s (± 0.48%) 2.09s (± 0.84%) +0.01s (+ 0.48%) 2.05s 2.12s
Bind Time 0.90s (± 0.37%) 0.90s (± 0.37%) -0.00s (- 0.00%) 0.89s 0.91s
Check Time 5.84s (± 0.37%) 5.88s (± 0.34%) +0.04s (+ 0.77%) 5.82s 5.92s
Emit Time 6.17s (± 0.54%) 6.18s (± 0.76%) +0.01s (+ 0.23%) 6.07s 6.28s
Total Time 14.99s (± 0.32%) 15.05s (± 0.45%) +0.07s (+ 0.45%) 14.91s 15.20s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,323k (± 0.38%) 192,346k (± 0.38%) +23k (+ 0.01%) 191,951k 195,297k
Parse Time 0.85s (± 0.61%) 0.85s (± 1.04%) +0.00s (+ 0.59%) 0.84s 0.88s
Bind Time 0.58s (± 0.95%) 0.58s (± 0.86%) -0.01s (- 1.03%) 0.57s 0.59s
Check Time 6.98s (± 0.63%) 7.01s (± 0.35%) +0.03s (+ 0.40%) 6.97s 7.07s
Emit Time 2.41s (± 1.19%) 2.40s (± 0.50%) -0.01s (- 0.29%) 2.38s 2.43s
Total Time 10.83s (± 0.61%) 10.84s (± 0.25%) +0.02s (+ 0.17%) 10.79s 10.90s
Monaco - node (v14.15.1, x64)
Memory used 325,916k (± 0.01%) 325,865k (± 0.01%) -51k (- 0.02%) 325,840k 325,934k
Parse Time 1.57s (± 0.66%) 1.58s (± 0.67%) +0.01s (+ 0.51%) 1.56s 1.60s
Bind Time 0.78s (± 0.60%) 0.78s (± 1.97%) +0.00s (+ 0.13%) 0.77s 0.84s
Check Time 5.67s (± 0.64%) 5.72s (± 0.37%) +0.05s (+ 0.97%) 5.69s 5.77s
Emit Time 3.32s (± 0.64%) 3.34s (± 0.99%) +0.02s (+ 0.57%) 3.26s 3.41s
Total Time 11.34s (± 0.40%) 11.42s (± 0.44%) +0.08s (+ 0.75%) 11.32s 11.51s
TFS - node (v14.15.1, x64)
Memory used 288,967k (± 0.01%) 288,965k (± 0.01%) -2k (- 0.00%) 288,922k 289,008k
Parse Time 1.35s (± 1.62%) 1.34s (± 1.58%) -0.01s (- 0.74%) 1.30s 1.38s
Bind Time 0.73s (± 0.81%) 0.76s (± 3.29%) +0.02s (+ 3.00%) 0.73s 0.84s
Check Time 5.35s (± 0.39%) 5.41s (± 0.39%) +0.06s (+ 1.14%) 5.38s 5.48s
Emit Time 3.56s (± 1.90%) 3.52s (± 1.93%) -0.03s (- 0.96%) 3.39s 3.67s
Total Time 10.99s (± 0.71%) 11.03s (± 0.66%) +0.04s (+ 0.34%) 10.88s 11.23s
material-ui - node (v14.15.1, x64)
Memory used 450,326k (± 0.00%) 450,412k (± 0.01%) +86k (+ 0.02%) 450,365k 450,472k
Parse Time 1.87s (± 0.37%) 1.88s (± 0.45%) +0.01s (+ 0.75%) 1.86s 1.89s
Bind Time 0.72s (± 0.68%) 0.71s (± 0.70%) -0.01s (- 1.24%) 0.71s 0.73s
Check Time 13.10s (± 0.39%) 13.19s (± 0.58%) +0.09s (+ 0.66%) 13.02s 13.40s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.69s (± 0.35%) 15.78s (± 0.46%) +0.09s (+ 0.56%) 15.64s 15.97s
xstate - node (v14.15.1, x64)
Memory used 545,803k (± 0.00%) 545,860k (± 0.00%) +58k (+ 0.01%) 545,813k 545,918k
Parse Time 2.60s (± 0.42%) 2.60s (± 0.38%) -0.00s (- 0.00%) 2.58s 2.63s
Bind Time 1.15s (± 1.09%) 1.14s (± 0.92%) -0.01s (- 0.61%) 1.12s 1.16s
Check Time 1.56s (± 0.67%) 1.59s (± 0.55%) +0.03s (+ 2.05%) 1.58s 1.62s
Emit Time 0.07s (± 4.95%) 0.07s (± 4.95%) 0.00s ( 0.00%) 0.07s 0.08s
Total Time 5.37s (± 0.42%) 5.40s (± 0.36%) +0.03s (+ 0.52%) 5.37s 5.44s
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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 50010 10
Baseline main 10

TSServer

Comparison Report - main..50010
Metric main 50010 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,454ms (± 0.40%) 1,450ms (± 0.34%) -4ms (- 0.26%) 1,442ms 1,463ms
Req 2 - geterr 3,788ms (± 0.63%) 3,835ms (± 0.51%) +47ms (+ 1.24%) 3,782ms 3,870ms
Req 3 - references 277ms (± 1.03%) 276ms (± 0.98%) -0ms (- 0.11%) 269ms 283ms
Req 4 - navto 232ms (± 0.91%) 232ms (± 1.36%) -0ms (- 0.17%) 225ms 240ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 62ms (± 3.74%) 64ms (± 4.10%) +3ms (+ 4.55%) 59ms 71ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,565ms (± 0.62%) 1,556ms (± 0.58%) -9ms (- 0.58%) 1,543ms 1,582ms
Req 2 - geterr 2,273ms (± 0.42%) 2,295ms (± 0.45%) +22ms (+ 0.98%) 2,277ms 2,315ms
Req 3 - references 296ms (± 0.88%) 296ms (± 0.70%) +0ms (+ 0.03%) 291ms 300ms
Req 4 - navto 234ms (± 2.34%) 239ms (± 1.53%) +5ms (+ 2.18%) 229ms 244ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 69ms (± 2.65%) 67ms (± 3.25%) -2ms (- 2.47%) 61ms 70ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,182ms (± 0.41%) 2,186ms (± 0.39%) +4ms (+ 0.17%) 2,165ms 2,201ms
Req 2 - geterr 772ms (± 0.87%) 794ms (± 1.08%) +22ms (+ 2.81%) 773ms 817ms
Req 3 - references 99ms (± 0.78%) 98ms (± 2.42%) -1ms (- 0.91%) 92ms 103ms
Req 4 - navto 250ms (± 1.10%) 249ms (± 1.15%) -1ms (- 0.28%) 242ms 257ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 271ms (± 1.40%) 275ms (± 1.05%) +4ms (+ 1.36%) 268ms 282ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,478ms (± 0.74%) 1,479ms (± 0.41%) +1ms (+ 0.05%) 1,462ms 1,492ms
Req 2 - geterr 3,528ms (± 0.37%) 3,576ms (± 0.40%) +48ms (+ 1.35%) 3,549ms 3,610ms
Req 3 - references 265ms (± 2.11%) 261ms (± 0.56%) -4ms (- 1.66%) 258ms 265ms
Req 4 - navto 204ms (± 0.64%) 204ms (± 1.09%) -0ms (- 0.05%) 198ms 210ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 83ms (±13.85%) 77ms (±12.34%) 🟩-5ms (- 6.52%) 55ms 88ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,573ms (± 0.47%) 1,565ms (± 0.67%) -8ms (- 0.52%) 1,542ms 1,589ms
Req 2 - geterr 2,214ms (± 0.41%) 2,243ms (± 0.53%) +29ms (+ 1.29%) 2,223ms 2,269ms
Req 3 - references 271ms (± 0.81%) 274ms (± 0.73%) +3ms (+ 1.03%) 269ms 279ms
Req 4 - navto 215ms (± 1.02%) 213ms (± 0.68%) -2ms (- 1.07%) 211ms 217ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 61ms (± 3.97%) 63ms (± 3.14%) +2ms (+ 3.97%) 58ms 66ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,133ms (± 0.49%) 2,128ms (± 0.35%) -5ms (- 0.23%) 2,111ms 2,142ms
Req 2 - geterr 757ms (± 0.70%) 769ms (± 0.79%) +12ms (+ 1.63%) 760ms 785ms
Req 3 - references 68ms (± 1.30%) 67ms (± 0.77%) -1ms (- 0.89%) 66ms 68ms
Req 4 - navto 238ms (± 1.84%) 241ms (± 0.87%) +3ms (+ 1.09%) 235ms 246ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 269ms (± 1.10%) 269ms (± 0.62%) +0ms (+ 0.07%) 266ms 273ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,527ms (± 0.36%) 1,529ms (± 0.29%) +2ms (+ 0.14%) 1,524ms 1,546ms
Req 2 - geterr 3,677ms (± 0.71%) 3,702ms (± 0.37%) +25ms (+ 0.68%) 3,665ms 3,725ms
Req 3 - references 277ms (± 0.81%) 276ms (± 0.42%) -1ms (- 0.40%) 274ms 279ms
Req 4 - navto 219ms (± 0.85%) 219ms (± 0.72%) -0ms (- 0.05%) 216ms 223ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 55ms (± 1.21%) 56ms (± 1.72%) +1ms (+ 0.91%) 54ms 59ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,612ms (± 0.98%) 1,609ms (± 0.55%) -3ms (- 0.18%) 1,584ms 1,620ms
Req 2 - geterr 2,340ms (± 0.49%) 2,366ms (± 0.33%) +26ms (+ 1.12%) 2,346ms 2,381ms
Req 3 - references 286ms (± 1.19%) 284ms (± 0.53%) -2ms (- 0.67%) 280ms 287ms
Req 4 - navto 229ms (± 0.64%) 228ms (± 0.41%) -0ms (- 0.17%) 226ms 230ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 53ms (± 0.65%) 52ms (± 0.94%) -0ms (- 0.57%) 52ms 54ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,224ms (± 0.38%) 2,223ms (± 0.59%) -1ms (- 0.04%) 2,205ms 2,271ms
Req 2 - geterr 780ms (± 0.46%) 800ms (± 0.65%) +20ms (+ 2.55%) 790ms 812ms
Req 3 - references 65ms (± 1.02%) 65ms (± 0.56%) +0ms (+ 0.15%) 65ms 66ms
Req 4 - navto 249ms (± 0.41%) 249ms (± 0.58%) +1ms (+ 0.32%) 246ms 252ms
Req 5 - completionInfo count 3,345 (± 0.00%) 3,345 (± 0.00%) 0 ( 0.00%) 3,345 3,345
Req 5 - completionInfo 279ms (± 0.48%) 277ms (± 0.59%) -2ms (- 0.65%) 274ms 282ms
System
Machine Namets-ci-ubuntu
Platformlinux 4.4.0-210-generic
Architecturex64
Available Memory16 GB
Available Memory15 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
  • Compiler-UnionsTSServer - node (v10.16.3, x64)
  • Compiler-UnionsTSServer - node (v12.1.0, x64)
  • Compiler-UnionsTSServer - node (v14.15.1, x64)
  • CompilerTSServer - node (v10.16.3, x64)
  • CompilerTSServer - node (v12.1.0, x64)
  • CompilerTSServer - node (v14.15.1, x64)
  • xstateTSServer - node (v10.16.3, x64)
  • xstateTSServer - node (v12.1.0, x64)
  • xstateTSServer - node (v14.15.1, x64)
Benchmark Name Iterations
Current 50010 10
Baseline main 10

Developer Information:

Download Benchmark

@sandersn sandersn added this to Not started in PR Backlog Aug 19, 2022
@jakebailey
Copy link
Member

Seems like it's consistently on the order of 1-1.5% worse? Better than 3% regression of the previous version, at least.

@sandersn sandersn moved this from Not started to Waiting on reviewers in PR Backlog Sep 1, 2022
@sandersn
Copy link
Member

sandersn commented Sep 1, 2022

@jakebailey sooooo..do we take this? I hoped that slimming checker.ts would make it run faster, but apparently the overhead of (some non-inlined) function calls is bigger.

@jakebailey
Copy link
Member

I'm not sure. I of course like the safety and would have totally sent this PR myself, but it seems like a 1-2% loss is not so great (but, it's an improvement over the previous iteration). But, I also can't tell if it's actually a regression or if it's in the range of variance.

I was hoping that after the module transform, we could place these wherever, but it turns out that it wouldn't work because our emit for imports doesn't actually create a local binding, so we have to have it here.

@DanielRosenwasser
Copy link
Member

DanielRosenwasser commented Sep 12, 2022

I think 1-2% is not worth the convenience. Let's not risk it.

@sandersn sandersn closed this Sep 28, 2022
PR Backlog automation moved this from Waiting on reviewers to Done Sep 28, 2022
@JoshuaKGoldberg JoshuaKGoldberg deleted the internal-type-type-predicates branch September 28, 2022 00:09
@JoshuaKGoldberg
Copy link
Contributor Author

JoshuaKGoldberg commented Oct 3, 2022

Idea: what about a transformation API / specific to the TypeScript source that replaces is*Type functions with their .type === checks inline...

@jakebailey
Copy link
Member

On my module-ified TypeScript branch, I've been testing something like that, but haven't gotten it to work quite yet.

@JoshuaKGoldberg JoshuaKGoldberg restored the internal-type-type-predicates branch October 3, 2022 11:06
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
PR Backlog
  
Done
Development

Successfully merging this pull request may close these issues.

Code cleanup: isIntersectionType & similar internally
5 participants