Skip to content

Make useFsEvents as default strategy for the watching #50366

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

Merged
merged 10 commits into from
Sep 6, 2022
Merged

Conversation

sheetalkamat
Copy link
Member

@sheetalkamat sheetalkamat commented Aug 18, 2022

Now that we have gotten better at handling inode movement etc and many people have tried using useFsEvents as default for watching files, make it default. This should give more agile callbacks compared to polling especially if it involves lots of files. It should also be better on CPU.

One catch on systems which have limits on fs watchers like linux, it would still fallback to polling but that was anyways done for the recursive directory watching so files is no different, but quantity varies so something to keep in mind.

This change also ensures that fsWatches are cached and reused with multiple callbacks instead of creating different fs watcher.

Most of the changes are refactoring on better baseline test infra update
10a7b4e actually has change to make fsEvents as default for file watching
61a99bf has change to cache the watches per name even when using fsEvents

@sheetalkamat
Copy link
Member Author

@typescript-bot pack this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 18, 2022

Heya @sheetalkamat, I've started to run the tarball bundle task on this PR at 61a99bf. You can monitor the build here.

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 19, 2022

Hey @sheetalkamat, I've packed this into an installable tgz. You can install it for testing by referencing it in your package.json like so:

{
    "devDependencies": {
        "typescript": "https://typescript.visualstudio.com/cf7ac146-d525-443c-b23c-0d58337efebc/_apis/build/builds/132200/artifacts?artifactName=tgz&fileId=F58AE65CFEC67867EF3E5797F3FF232E3F3D49CBD5D1AA41AAD5889C4F365B5602&fileName=/typescript-4.9.0-insiders.20220819.tgz"
    }
}

and then running npm install.


There is also a playground for this build and an npm module you can use via "typescript": "npm:@typescript-deploys/pr-build@4.9.0-pr-50366-2".;

@DanielRosenwasser
Copy link
Member

DanielRosenwasser commented Aug 22, 2022

I wonder if you can see a change in TSServer perf tests.

@typescript-bot perf test this

@typescript-bot
Copy link
Collaborator

typescript-bot commented Aug 22, 2022

Heya @DanielRosenwasser, I've started to run the perf test suite on this PR at 61a99bf. 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:

Compiler

Comparison Report - main..50366
Metric main 50366 Delta Best Worst
Angular - node (v10.16.3, x64)
Memory used 361,825k (± 0.03%) 361,797k (± 0.02%) -28k (- 0.01%) 361,679k 361,920k
Parse Time 2.08s (± 0.56%) 2.10s (± 0.54%) +0.02s (+ 0.82%) 2.07s 2.13s
Bind Time 0.80s (± 1.23%) 0.79s (± 0.94%) -0.01s (- 0.63%) 0.78s 0.81s
Check Time 6.01s (± 0.62%) 5.99s (± 0.63%) -0.01s (- 0.23%) 5.88s 6.05s
Emit Time 5.98s (± 0.69%) 5.97s (± 0.74%) -0.01s (- 0.20%) 5.90s 6.07s
Total Time 14.87s (± 0.38%) 14.86s (± 0.53%) -0.01s (- 0.09%) 14.64s 14.99s
Compiler-Unions - node (v10.16.3, x64)
Memory used 205,917k (± 0.04%) 205,913k (± 0.03%) -5k (- 0.00%) 205,753k 206,086k
Parse Time 0.83s (± 0.93%) 0.83s (± 1.02%) -0.00s (- 0.24%) 0.81s 0.84s
Bind Time 0.47s (± 1.25%) 0.48s (± 1.43%) +0.00s (+ 0.42%) 0.46s 0.49s
Check Time 7.35s (± 0.47%) 7.33s (± 0.63%) -0.02s (- 0.30%) 7.21s 7.41s
Emit Time 2.46s (± 0.70%) 2.44s (± 0.73%) -0.02s (- 0.85%) 2.39s 2.47s
Total Time 11.12s (± 0.39%) 11.07s (± 0.50%) -0.05s (- 0.42%) 10.89s 11.16s
Monaco - node (v10.16.3, x64)
Memory used 344,259k (± 0.03%) 344,261k (± 0.02%) +2k (+ 0.00%) 344,090k 344,386k
Parse Time 1.61s (± 0.66%) 1.60s (± 0.62%) -0.02s (- 0.99%) 1.58s 1.62s
Bind Time 0.70s (± 0.63%) 0.70s (± 0.68%) +0.00s (+ 0.14%) 0.69s 0.71s
Check Time 6.00s (± 0.51%) 5.97s (± 0.82%) -0.03s (- 0.53%) 5.87s 6.08s
Emit Time 3.26s (± 0.89%) 3.27s (± 1.10%) +0.01s (+ 0.31%) 3.19s 3.34s
Total Time 11.57s (± 0.41%) 11.53s (± 0.57%) -0.04s (- 0.35%) 11.39s 11.72s
TFS - node (v10.16.3, x64)
Memory used 305,407k (± 0.02%) 305,434k (± 0.02%) +27k (+ 0.01%) 305,235k 305,574k
Parse Time 1.28s (± 0.53%) 1.29s (± 0.47%) +0.00s (+ 0.08%) 1.28s 1.30s
Bind Time 0.68s (± 0.74%) 0.67s (± 0.66%) -0.00s (- 0.44%) 0.66s 0.68s
Check Time 5.44s (± 0.38%) 5.44s (± 0.45%) -0.00s (- 0.06%) 5.39s 5.49s
Emit Time 3.42s (± 0.71%) 3.44s (± 1.09%) +0.02s (+ 0.47%) 3.36s 3.52s
Total Time 10.82s (± 0.37%) 10.83s (± 0.27%) +0.01s (+ 0.09%) 10.74s 10.89s
material-ui - node (v10.16.3, x64)
Memory used 473,088k (± 0.01%) 473,136k (± 0.01%) +48k (+ 0.01%) 473,052k 473,246k
Parse Time 1.83s (± 0.79%) 1.83s (± 0.71%) -0.01s (- 0.33%) 1.81s 1.86s
Bind Time 0.57s (± 1.85%) 0.58s (± 1.71%) +0.01s (+ 1.39%) 0.56s 0.60s
Check Time 14.61s (± 0.62%) 14.60s (± 0.58%) -0.01s (- 0.05%) 14.41s 14.77s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 17.02s (± 0.57%) 17.01s (± 0.52%) -0.01s (- 0.05%) 16.81s 17.19s
xstate - node (v10.16.3, x64)
Memory used 583,209k (± 0.01%) 586,471k (± 1.25%) +3,262k (+ 0.56%) 582,971k 616,138k
Parse Time 2.61s (± 0.51%) 2.59s (± 0.49%) -0.01s (- 0.58%) 2.56s 2.62s
Bind Time 0.91s (± 1.16%) 0.91s (± 0.64%) +0.00s (+ 0.00%) 0.89s 0.92s
Check Time 1.58s (± 0.67%) 1.56s (± 0.60%) -0.02s (- 1.08%) 1.54s 1.58s
Emit Time 0.07s (± 3.14%) 0.07s (± 3.14%) 0.00s ( 0.00%) 0.07s 0.08s
Total Time 5.16s (± 0.32%) 5.13s (± 0.37%) -0.03s (- 0.64%) 5.09s 5.16s
Angular - node (v12.1.0, x64)
Memory used 339,236k (± 0.07%) 339,337k (± 0.02%) +100k (+ 0.03%) 339,181k 339,430k
Parse Time 2.08s (± 0.62%) 2.08s (± 0.45%) +0.00s (+ 0.00%) 2.06s 2.10s
Bind Time 0.77s (± 1.06%) 0.77s (± 1.20%) -0.00s (- 0.13%) 0.76s 0.80s
Check Time 5.81s (± 0.51%) 5.83s (± 0.65%) +0.02s (+ 0.33%) 5.75s 5.89s
Emit Time 6.20s (± 0.68%) 6.27s (± 0.98%) +0.07s (+ 1.06%) 6.16s 6.38s
Total Time 14.86s (± 0.43%) 14.95s (± 0.50%) +0.09s (+ 0.59%) 14.78s 15.10s
Compiler-Unions - node (v12.1.0, x64)
Memory used 193,472k (± 0.09%) 193,488k (± 0.11%) +16k (+ 0.01%) 192,930k 193,812k
Parse Time 0.82s (± 0.79%) 0.82s (± 1.00%) +0.00s (+ 0.24%) 0.81s 0.84s
Bind Time 0.47s (± 0.94%) 0.47s (± 1.26%) +0.00s (+ 0.64%) 0.46s 0.49s
Check Time 6.88s (± 0.65%) 6.85s (± 0.72%) -0.02s (- 0.31%) 6.72s 6.94s
Emit Time 2.46s (± 1.39%) 2.46s (± 0.91%) -0.01s (- 0.24%) 2.42s 2.50s
Total Time 10.63s (± 0.53%) 10.61s (± 0.69%) -0.02s (- 0.21%) 10.42s 10.72s
Monaco - node (v12.1.0, x64)
Memory used 327,232k (± 0.02%) 327,211k (± 0.02%) -21k (- 0.01%) 327,046k 327,423k
Parse Time 1.58s (± 0.79%) 1.58s (± 1.05%) 0.00s ( 0.00%) 1.55s 1.62s
Bind Time 0.70s (± 1.00%) 0.70s (± 0.74%) -0.00s (- 0.29%) 0.69s 0.71s
Check Time 5.85s (± 0.55%) 5.81s (± 0.38%) -0.04s (- 0.72%) 5.76s 5.86s
Emit Time 3.31s (± 0.87%) 3.28s (± 0.93%) -0.03s (- 0.82%) 3.20s 3.35s
Total Time 11.44s (± 0.56%) 11.37s (± 0.44%) -0.07s (- 0.59%) 11.26s 11.46s
TFS - node (v12.1.0, x64)
Memory used 290,024k (± 0.01%) 290,043k (± 0.02%) +20k (+ 0.01%) 289,885k 290,157k
Parse Time 1.30s (± 0.77%) 1.30s (± 0.71%) -0.00s (- 0.15%) 1.28s 1.32s
Bind Time 0.66s (± 1.59%) 0.66s (± 1.05%) -0.01s (- 1.21%) 0.64s 0.67s
Check Time 5.37s (± 0.55%) 5.34s (± 0.56%) -0.03s (- 0.56%) 5.26s 5.40s
Emit Time 3.50s (± 0.71%) 3.46s (± 0.71%) -0.03s (- 0.92%) 3.38s 3.50s
Total Time 10.83s (± 0.37%) 10.76s (± 0.33%) -0.08s (- 0.70%) 10.69s 10.83s
material-ui - node (v12.1.0, x64)
Memory used 451,978k (± 0.09%) 452,080k (± 0.06%) +102k (+ 0.02%) 451,015k 452,333k
Parse Time 1.81s (± 0.49%) 1.81s (± 0.52%) -0.00s (- 0.06%) 1.78s 1.83s
Bind Time 0.55s (± 0.67%) 0.55s (± 0.94%) +0.00s (+ 0.92%) 0.54s 0.56s
Check Time 13.18s (± 0.70%) 13.14s (± 0.76%) -0.04s (- 0.31%) 12.86s 13.34s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.54s (± 0.61%) 15.51s (± 0.67%) -0.04s (- 0.24%) 15.20s 15.70s
xstate - node (v12.1.0, x64)
Memory used 548,375k (± 0.02%) 548,359k (± 0.01%) -17k (- 0.00%) 548,241k 548,521k
Parse Time 2.53s (± 0.71%) 2.53s (± 0.58%) -0.00s (- 0.16%) 2.49s 2.55s
Bind Time 0.89s (± 0.58%) 0.89s (± 0.65%) -0.00s (- 0.45%) 0.87s 0.90s
Check Time 1.51s (± 0.59%) 1.52s (± 0.70%) +0.00s (+ 0.00%) 1.49s 1.54s
Emit Time 0.07s (± 0.00%) 0.07s (± 0.00%) 0.00s ( 0.00%) 0.07s 0.07s
Total Time 5.00s (± 0.40%) 5.00s (± 0.39%) -0.00s (- 0.08%) 4.95s 5.03s
Angular - node (v14.15.1, x64)
Memory used 337,306k (± 0.01%) 337,290k (± 0.01%) -15k (- 0.00%) 337,211k 337,329k
Parse Time 2.06s (± 1.60%) 2.04s (± 0.33%) -0.02s (- 0.82%) 2.03s 2.06s
Bind Time 0.80s (± 1.11%) 0.79s (± 0.56%) -0.00s (- 0.63%) 0.78s 0.80s
Check Time 5.82s (± 0.67%) 5.81s (± 0.52%) -0.01s (- 0.22%) 5.74s 5.88s
Emit Time 6.22s (± 0.98%) 6.15s (± 0.91%) -0.07s (- 1.21%) 6.04s 6.28s
Total Time 14.90s (± 0.76%) 14.79s (± 0.57%) -0.11s (- 0.73%) 14.61s 14.95s
Compiler-Unions - node (v14.15.1, x64)
Memory used 192,135k (± 0.02%) 192,048k (± 0.12%) -87k (- 0.05%) 191,090k 192,232k
Parse Time 0.85s (± 0.89%) 0.85s (± 0.78%) -0.00s (- 0.12%) 0.84s 0.87s
Bind Time 0.49s (± 0.61%) 0.48s (± 1.02%) -0.00s (- 0.82%) 0.48s 0.50s
Check Time 6.89s (± 0.55%) 6.91s (± 0.67%) +0.01s (+ 0.20%) 6.78s 7.00s
Emit Time 2.40s (± 0.62%) 2.42s (± 0.75%) +0.02s (+ 0.96%) 2.39s 2.46s
Total Time 10.63s (± 0.47%) 10.66s (± 0.52%) +0.03s (+ 0.25%) 10.52s 10.77s
Monaco - node (v14.15.1, x64)
Memory used 326,038k (± 0.01%) 326,029k (± 0.01%) -9k (- 0.00%) 325,981k 326,089k
Parse Time 1.57s (± 1.04%) 1.57s (± 0.55%) -0.01s (- 0.38%) 1.55s 1.59s
Bind Time 0.73s (± 0.65%) 0.72s (± 0.62%) -0.01s (- 1.24%) 0.71s 0.73s
Check Time 5.69s (± 0.41%) 5.72s (± 0.63%) +0.03s (+ 0.49%) 5.67s 5.82s
Emit Time 3.33s (± 0.88%) 3.35s (± 0.66%) +0.01s (+ 0.36%) 3.30s 3.39s
Total Time 11.33s (± 0.42%) 11.35s (± 0.45%) +0.02s (+ 0.22%) 11.25s 11.47s
TFS - node (v14.15.1, x64)
Memory used 289,108k (± 0.01%) 289,109k (± 0.01%) +0k (+ 0.00%) 289,078k 289,165k
Parse Time 1.32s (± 1.81%) 1.32s (± 1.88%) +0.00s (+ 0.08%) 1.28s 1.38s
Bind Time 0.72s (± 5.03%) 0.73s (± 5.41%) +0.01s (+ 1.66%) 0.67s 0.80s
Check Time 5.34s (± 0.52%) 5.32s (± 0.45%) -0.02s (- 0.41%) 5.26s 5.36s
Emit Time 3.54s (± 1.72%) 3.52s (± 1.95%) -0.03s (- 0.79%) 3.37s 3.62s
Total Time 10.93s (± 0.68%) 10.90s (± 0.65%) -0.04s (- 0.32%) 10.74s 11.07s
material-ui - node (v14.15.1, x64)
Memory used 450,475k (± 0.03%) 450,547k (± 0.00%) +73k (+ 0.02%) 450,477k 450,583k
Parse Time 1.86s (± 0.74%) 1.86s (± 0.54%) -0.00s (- 0.00%) 1.84s 1.89s
Bind Time 0.58s (± 0.77%) 0.58s (± 0.96%) -0.00s (- 0.00%) 0.57s 0.59s
Check Time 13.23s (± 0.97%) 13.21s (± 0.61%) -0.02s (- 0.14%) 13.01s 13.41s
Emit Time 0.00s (± 0.00%) 0.00s (± 0.00%) 0.00s ( NaN%) 0.00s 0.00s
Total Time 15.67s (± 0.84%) 15.66s (± 0.57%) -0.02s (- 0.11%) 15.42s 15.86s
xstate - node (v14.15.1, x64)
Memory used 546,042k (± 0.00%) 546,070k (± 0.01%) +29k (+ 0.01%) 545,973k 546,126k
Parse Time 2.60s (± 0.67%) 2.60s (± 0.38%) -0.00s (- 0.19%) 2.57s 2.62s
Bind Time 0.98s (± 0.78%) 0.98s (± 0.79%) +0.00s (+ 0.31%) 0.97s 1.00s
Check Time 1.55s (± 0.56%) 1.56s (± 0.53%) +0.01s (+ 0.45%) 1.54s 1.57s
Emit Time 0.07s (± 3.14%) 0.07s (± 0.00%) -0.00s (- 1.41%) 0.07s 0.07s
Total Time 5.20s (± 0.41%) 5.20s (± 0.26%) +0.00s (+ 0.08%) 5.16s 5.23s
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 50366 10
Baseline main 10

TSServer

Comparison Report - main..50366
Metric main 50366 Delta Best Worst
Compiler-UnionsTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,406ms (± 0.42%) 1,401ms (± 0.43%) -5ms (- 0.38%) 1,387ms 1,412ms
Req 2 - geterr 3,754ms (± 0.79%) 3,743ms (± 0.33%) -11ms (- 0.30%) 3,709ms 3,765ms
Req 3 - references 229ms (± 0.46%) 229ms (± 0.52%) -0ms (- 0.13%) 226ms 231ms
Req 4 - navto 174ms (± 0.90%) 172ms (± 1.55%) -1ms (- 0.81%) 168ms 180ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 66ms (± 4.40%) 63ms (± 4.19%) 🟩-2ms (- 3.66%) 59ms 68ms
CompilerTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 1,511ms (± 0.38%) 1,494ms (± 0.47%) -17ms (- 1.12%) 1,479ms 1,511ms
Req 2 - geterr 2,232ms (± 0.59%) 2,215ms (± 0.57%) -17ms (- 0.78%) 2,187ms 2,243ms
Req 3 - references 240ms (± 0.76%) 241ms (± 0.79%) +1ms (+ 0.21%) 236ms 245ms
Req 4 - navto 186ms (± 0.69%) 185ms (± 0.83%) -2ms (- 0.86%) 181ms 189ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 68ms (± 2.63%) 68ms (± 1.89%) +0ms (+ 0.59%) 64ms 70ms
xstateTSServer - node (v10.16.3, x64)
Req 1 - updateOpen 2,074ms (± 0.36%) 2,082ms (± 0.50%) +8ms (+ 0.37%) 2,056ms 2,100ms
Req 2 - geterr 780ms (± 0.37%) 776ms (± 0.91%) -4ms (- 0.45%) 766ms 798ms
Req 3 - references 101ms (± 1.29%) 101ms (± 1.64%) +0ms (+ 0.20%) 96ms 104ms
Req 4 - navto 233ms (± 0.91%) 233ms (± 1.09%) -1ms (- 0.30%) 228ms 239ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 269ms (± 1.05%) 271ms (± 1.44%) +2ms (+ 0.78%) 266ms 282ms
Compiler-UnionsTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,403ms (± 0.62%) 1,405ms (± 0.83%) +2ms (+ 0.14%) 1,385ms 1,434ms
Req 2 - geterr 3,498ms (± 0.54%) 3,489ms (± 0.44%) -9ms (- 0.26%) 3,459ms 3,521ms
Req 3 - references 219ms (± 0.57%) 218ms (± 0.72%) -0ms (- 0.14%) 215ms 221ms
Req 4 - navto 163ms (± 1.05%) 161ms (± 1.40%) -2ms (- 1.05%) 156ms 167ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 58ms (± 5.22%) 59ms (± 9.28%) +1ms (+ 1.89%) 54ms 81ms
CompilerTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 1,493ms (± 0.58%) 1,496ms (± 0.41%) +3ms (+ 0.21%) 1,483ms 1,508ms
Req 2 - geterr 2,162ms (± 0.54%) 2,156ms (± 0.43%) -6ms (- 0.27%) 2,140ms 2,176ms
Req 3 - references 232ms (± 0.58%) 232ms (± 0.64%) -0ms (- 0.13%) 228ms 235ms
Req 4 - navto 171ms (± 1.19%) 170ms (± 0.76%) -2ms (- 0.88%) 166ms 173ms
Req 5 - completionInfo count 1,517 (± 0.00%) 1,517 (± 0.00%) 0 ( 0.00%) 1,517 1,517
Req 5 - completionInfo 63ms (± 2.93%) 63ms (± 4.13%) -0ms (- 0.47%) 57ms 68ms
xstateTSServer - node (v12.1.0, x64)
Req 1 - updateOpen 2,033ms (± 0.71%) 2,031ms (± 0.41%) -2ms (- 0.07%) 2,015ms 2,050ms
Req 2 - geterr 756ms (± 0.43%) 752ms (± 0.42%) -4ms (- 0.52%) 747ms 758ms
Req 3 - references 68ms (± 1.53%) 67ms (± 0.97%) -1ms (- 1.47%) 65ms 68ms
Req 4 - navto 226ms (± 0.59%) 223ms (± 2.02%) -3ms (- 1.11%) 210ms 228ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 268ms (± 1.00%) 268ms (± 0.86%) -0ms (- 0.07%) 264ms 275ms
Compiler-UnionsTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,443ms (± 0.63%) 1,437ms (± 0.55%) -6ms (- 0.40%) 1,425ms 1,455ms
Req 2 - geterr 3,638ms (± 0.57%) 3,628ms (± 0.53%) -10ms (- 0.28%) 3,595ms 3,682ms
Req 3 - references 229ms (± 0.50%) 229ms (± 0.62%) -1ms (- 0.26%) 226ms 232ms
Req 4 - navto 172ms (± 0.77%) 171ms (± 0.71%) -1ms (- 0.64%) 169ms 175ms
Req 5 - completionInfo count 1,355 (± 0.00%) 1,355 (± 0.00%) 0 ( 0.00%) 1,355 1,355
Req 5 - completionInfo 60ms (± 4.62%) 60ms (± 5.08%) +1ms (+ 1.17%) 55ms 67ms
CompilerTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 1,529ms (± 0.87%) 1,520ms (± 0.43%) -8ms (- 0.54%) 1,504ms 1,534ms
Req 2 - geterr 2,294ms (± 0.45%) 2,278ms (± 0.36%) -16ms (- 0.70%) 2,254ms 2,293ms
Req 3 - references 243ms (± 0.54%) 241ms (± 0.66%) -2ms (- 0.74%) 239ms 246ms
Req 4 - navto 179ms (± 0.62%) 178ms (± 0.41%) -1ms (- 0.67%) 176ms 179ms
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.71%) -0ms (- 0.38%) 52ms 53ms
xstateTSServer - node (v14.15.1, x64)
Req 1 - updateOpen 2,137ms (± 0.56%) 2,128ms (± 0.41%) -9ms (- 0.43%) 2,102ms 2,143ms
Req 2 - geterr 780ms (± 0.39%) 777ms (± 0.38%) -3ms (- 0.44%) 772ms 786ms
Req 3 - references 67ms (± 1.25%) 66ms (± 1.99%) -0ms (- 0.45%) 64ms 70ms
Req 4 - navto 229ms (± 0.78%) 228ms (± 0.45%) -1ms (- 0.26%) 226ms 230ms
Req 5 - completionInfo count 3,293 (± 0.00%) 3,293 (± 0.00%) 0 ( 0.00%) 3,293 3,293
Req 5 - completionInfo 269ms (± 0.64%) 269ms (± 0.73%) -0ms (- 0.04%) 266ms 274ms
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 50366 10
Baseline main 10

Developer Information:

Download Benchmark

Copy link
Member

@amcasey amcasey left a comment

Choose a reason for hiding this comment

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

I had trouble following some parts.

@sheetalkamat
Copy link
Member Author

@amcasey any other feedback or is this good to go.. I would like to get this in sooner than later. Thanks

@DanielRosenwasser
Copy link
Member

That's fair. I do think we should keep an eye out and revisit. My impression is that Windows and macOS, I assume this almost never makes a difference; but on Linux, it will be pretty common to hit the file watching limit, so we may still end up installing a lot of file-watchers and it would be good to improve the situation. Let me know if that's an accurate assessment.

@sheetalkamat
Copy link
Member Author

end up installing a lot of file-watchers and it would be good to improve the situation. Let me know if that's an accurate assessment.

Yes thats true.. also many users just increase limit of native file watchers instead of opting for fallback but then this was before things were not easily configurable.

Definitely can revisit this at later point.

@AaronFriel
Copy link

@sheetalkamat have to say I thought the blog post was interesting! I just did a deep dive on file-watching in Go for Pulumi and we ended up using a Rust binary to ship the feature.

Does this implementation of file-watchers use ignore files at all, to reduce the number of system calls needed to monitor a directory containing, e.g., node_modules?

@DanielRosenwasser
Copy link
Member

Love to find the community of people banging their heads against cross-platform file-watching!

During review of the blog post @sheetalkamat mentioned there's a few specific things in editor scenarios where we watch the node_modules directory instead of individual files within node_modules. But I might have misunderstood and she can fill in with more context.

@sheetalkamat
Copy link
Member Author

As daniel mentioned, we watch node_modules instead of watching each file in editor scenarios. But apart from that when watching node_modules recursively, we have been ignoring files/directories starting with "." in node_modules. https://github.com/microsoft/TypeScript/blob/main/src/compiler/sys.ts#L487

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Author: Team 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
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy