Following results are from running https://github.com/microsoft/vscode-build-tools/blob/master/perf/perf-canary.ps1 unmodified
Summary: BEST 842ms, VERSION 288852d8c26d797974bfb8aed06e1bff9b809223, APP Code - Insiders.exe
SLOW 2426 Code - Insiders 288852d8c2 cd5bbf10-de6e-49f1-adbd-74bd1cb554da1589311899667 NO_standard_start
FAST 898 Code - Insiders 288852d8c2 08598929-4c67-4826-b604-367f04412da41589311941274 NO_standard_start
FAST 906 Code - Insiders 288852d8c2 eecfa25d-69e3-42d5-b9be-4b27e4d925f91589311972339 NO_standard_start
FAST 866 Code - Insiders 288852d8c2 fb47b877-ae39-4a69-af70-59fb5ab9380a1589312004407 NO_standard_start
FAST 872 Code - Insiders 288852d8c2 5890cbb8-c896-4be2-9e24-3ee0dfbd7ebc1589312030499 NO_standard_start
FAST 874 Code - Insiders 288852d8c2 1467177a-09d1-4247-8410-3a8c51335c5a1589312077577 NO_standard_start
FAST 842 Code - Insiders 288852d8c2 4cd74f86-96d6-4168-8b49-eb162c2f896a1589312108611 NO_standard_start
SLOW 2360 Code - Insiders 288852d8c2 8a233734-dfff-4297-b8d3-dfd57c3dadc91589312160191 NO_standard_start
FAST 878 Code - Insiders 288852d8c2 505f3941-1559-4e6d-bd97-0925d36ef8841589312205875 NO_standard_start
FAST 870 Code - Insiders 288852d8c2 70fa8c57-afdc-4902-bcba-df23436254cb1589312237931 NO_standard_start
-Good True
```
Summary: BEST 875ms, VERSION 6c8ce010748453b34189d61a636c57e79f2f53a8, APP Code - Exploration.exe
FAST 1267 Code - Exploration 6c8ce01074 805dec52-290e-4dc0-810c-169074677dd41589312533348 NO_standard_start
FAST 960 Code - Exploration 6c8ce01074 3a07c6a6-72ad-4580-9a31-b9830c3dc1da1589312560116 NO_standard_start
FAST 897 Code - Exploration 6c8ce01074 d1183d6e-9ae1-4b49-bee8-289a82937ded1589312607054 NO_standard_start
FAST 983 Code - Exploration 6c8ce01074 115e57b5-8008-43b5-a837-0438ecca50e31589312649258 NO_standard_start
FAST 875 Code - Exploration 6c8ce01074 7499276d-6b43-4b80-87c5-4363ac278fba1589312679189 NO_standard_start
FAST 916 Code - Exploration 6c8ce01074 40f014bf-c55b-4e98-a36a-cab890d1148b1589312711333 NO_standard_start
FAST 951 Code - Exploration 6c8ce01074 6529dfb9-8f00-4cae-97bc-11d1b05a79a91589312749401 NO_standard_start
FAST 956 Code - Exploration 6c8ce01074 68f3de57-1a06-47bb-b777-10b8d9fc54e01589312782456 NO_standard_start
FAST 900 Code - Exploration 6c8ce01074 0f8b85b2-d441-4fd4-bb4c-4cf67de134f21589312814517 NO_standard_start
FAST 939 Code - Exploration 6c8ce01074 0ef00403-28b9-4626-9b51-281ea499053d1589312859560 NO_standard_start
-Good True
Summary: BEST 1239ms, VERSION 288852d8c26d797974bfb8aed06e1bff9b809223, APP Visual Studio Code - Insiders.app :apple:
SLOW 3099 Code - Insiders 288852d8c2 0ce791da-3b50-459f-bada-6bbe92d658b31589318250428 NO_standard_start
FAST 1327 Code - Insiders 288852d8c2 631d4c2f-bb93-49ee-b784-554732e574c91589318286801 NO_standard_start
FAST 1295 Code - Insiders 288852d8c2 a469c0d0-81b5-434c-bc0f-c13140e4fd4a1589318320094 NO_standard_start
FAST 1318 Code - Insiders 288852d8c2 9df38a32-2ac9-4a9f-9a80-e5033428bca91589318361383 NO_standard_start
FAST 1251 Code - Insiders 288852d8c2 5ad9e02b-8c73-4c91-b403-48d7b481497c1589318409631 NO_standard_start
FAST 1300 Code - Insiders 288852d8c2 5c1b122e-f813-4f68-98f2-40049fff002c1589318457871 NO_standard_start
FAST 1281 Code - Insiders 288852d8c2 9f14e69d-3bce-4303-a424-7c83a3e4ae391589318491137 NO_standard_start
FAST 1299 Code - Insiders 288852d8c2 144bf1fa-5eb9-4449-9840-7848659e6bb81589318539406 NO_standard_start
FAST 1267 Code - Insiders 288852d8c2 ee959a16-0fc7-4dbc-a4a4-ae12da6bb09b1589318580672 NO_standard_start
FAST 1239 Code - Insiders 288852d8c2 f012cb4d-f62c-4763-9fa6-402757979a6d1589318614908 NO_standard_start
-Good True
Summary: BEST 1247ms, VERSION 6c8ce010748453b34189d61a636c57e79f2f53a8, APP Visual Studio Code - Exploration.app :apple:
FAST 1628 Code - Exploration 6c8ce01074 8a35d3e3-c58a-425a-b77e-4629a913ee5d1589318670326 NO_standard_start
FAST 1299 Code - Exploration 6c8ce01074 38c5137f-e0ac-4811-991f-35b451f069051589318704659 NO_standard_start
FAST 1301 Code - Exploration 6c8ce01074 bd61858a-553f-42c1-9370-94432ad464fc1589318747939 NO_standard_start
FAST 1282 Code - Exploration 6c8ce01074 173ac02f-33c6-4fdb-b037-f64dbc72ff951589318788241 NO_standard_start
FAST 1273 Code - Exploration 6c8ce01074 8ad02fa1-8b8b-48b2-8d3a-407d9c22db791589318836608 NO_standard_start
FAST 1284 Code - Exploration 6c8ce01074 caa387b8-d8f5-48c4-a7c8-058a982de7e91589318881880 NO_standard_start
FAST 1247 Code - Exploration 6c8ce01074 ebea5eb3-afac-4e94-bb71-dcc5e9434e731589318911118 NO_standard_start
FAST 1276 Code - Exploration 6c8ce01074 51aa80ac-d43a-40cf-aead-9f4b354425221589318935426 NO_standard_start
FAST 1316 Code - Exploration 6c8ce01074 e8db31a5-9db6-4905-a408-d2337d462f951589318966764 NO_standard_start
FAST 1277 Code - Exploration 6c8ce01074 de54699e-6826-4381-9946-6d2b3cc409791589319003062 NO_standard_start
-Good True
Couple of things to confirm,
There is no longer a --skip-getting-started flag, so we always start on the welcome page set as default by https://github.com/microsoft/vscode/blob/master/src/vs/workbench/contrib/welcome/page/browser/welcomePage.contribution.ts#L32 . Will this impact the measurement ?
The numbers on my windows machine are way off from what we usually see from the bot, could attribute that to my hardware. Is there something else you would like me to test here ?
All my tests show up as NO_standard_start but I see we have couple of conditions to determine it https://github.com/microsoft/vscode/blob/master/src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts#L85-L115 , would be easy to debug if the final output actually contained the reason, for ex: NO_standard_start : Explorer viewlet not visible
Atleast from my numbers exploration seems faster than insiders
@deepak1556 the --skip-getting-started flag was not for welcome. We used to open our homepage on every first startup but since dropped it.
Ah ok, thanks for clarifying!
All my tests show up as NO_standard_start but I see we have couple of conditions to determine it
The "standard start" is defined as a workbench state that shows the explorer viewlet and a single file - the perf machines use the vscode-folder and open the package.json-file.
Setting up this state is a manual process but maybe with @eamodio's state for codespaces this can now be automated?
Since we show the explorer by default, I would think that running code <path to vscode folder> <path to package.json> is all you need to get there.
I would think that running code
is all you need to get there.
Need to give that a try again.
On the actual numbers @bpasero Didn't you also measure electron 8 performance? Can you share your numbers here?
Since we show the explorer by default, I would think that running code
is all you need to get there.
This works! I am changing the perf script args to get new numbers now.
Actually, this can be reproduce way simpler, use bare electron fiddle. Use the snippet below (fib(42)) as renderer-source and do the following
I am seeing the following numbers
| 7.2.4 | 8.2.5 |
|---|---|
| 2611 | 2844 |
| 2612 | 2841 |
| 2615 | 2870 |
| 2608 | 2846 |
I conclude the version 8.2.5 is roughly 10% slower which somewhat correlates with the numbers the mac perf bot is showing
// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All of the Node.js APIs are available in this process.
function fib(n) {
if(n === 0) {
return 0;
} else if(n === 1) {
return 1;
} else {
return fib(n-1) + fib(n-2);
}
}
const t1 = Date.now();
console.log(fib(42));
console.log(`DURATION ${Date.now()-t1}ms`)
I ran tests on macOS, here are my findings:
Stable Cold
| What | Duration | Process | Info |
| --------------------------------------------------------------- | -------- | ---------------- | --------------------------------------------------------- |
| start => app.isReady | 99 | [main] | initial startup: true |
| nls:start => nls:end | 0 | [main] | initial startup: true |
| require(main.bundle.js) | 76 | [main] | initial startup: true |
| app.isReady => window.loadUrl() | 322 | [main] | initial startup: true |
| window.loadUrl() => begin to require(workbench.desktop.main.js) | 260 | [main->renderer] | NewWindow |
| require(workbench.desktop.main.js) | 416 | [renderer] | cached data: YES, node_modules took 93ms |
| require & init workspace storage | 12 | [renderer] | - |
| init workspace service | 14 | [renderer] | - |
| register extensions & spawn extension host | 682 | [renderer] | - |
| restore viewlet | 16 | [renderer] | workbench.view.explorer |
| restore panel | 0 | [renderer] | - |
| restore editors | 955 | [renderer] | 2: workbench.editors.files.fileEditorInput, PerfviewInput |
| overall workbench load | 1073 | [renderer] | - |
| workbench ready | 2547 | [main->renderer] | - |
| extensions registered | 2526 | [renderer] | - |
Stable Warm
| What | Duration | Process | Info |
| --------------------------------------------------------------- | -------- | ---------------- | --------------------------------------------------------- |
| start => app.isReady | 44 | [main] | initial startup: true |
| nls:start => nls:end | 0 | [main] | initial startup: true |
| require(main.bundle.js) | 42 | [main] | initial startup: true |
| app.isReady => window.loadUrl() | 139 | [main] | initial startup: true |
| window.loadUrl() => begin to require(workbench.desktop.main.js) | 189 | [main->renderer] | NewWindow |
| require(workbench.desktop.main.js) | 272 | [renderer] | cached data: YES, node_modules took 32ms |
| require & init workspace storage | 11 | [renderer] | - |
| init workspace service | 12 | [renderer] | - |
| register extensions & spawn extension host | 168 | [renderer] | - |
| restore viewlet | 11 | [renderer] | workbench.view.explorer |
| restore panel | 0 | [renderer] | - |
| restore editors | 274 | [renderer] | 2: workbench.editors.files.fileEditorInput, PerfviewInput |
| overall workbench load | 374 | [renderer] | - |
| workbench ready | 1373 | [main->renderer] | - |
| extensions registered | 1455 | [renderer] | - |
Exploration Cold
| What | Duration | Process | Info |
| --------------------------------------------------------------- | -------- | ---------------- | --------------------------------------------------------- |
| start => app.isReady | 58 | [main] | initial startup: true |
| nls:start => nls:end | 0 | [main] | initial startup: true |
| require(main.bundle.js) | 67 | [main] | initial startup: true |
| app.isReady => window.loadUrl() | 201 | [main] | initial startup: true |
| window.loadUrl() => begin to require(workbench.desktop.main.js) | 229 | [main->renderer] | NewWindow |
| require(workbench.desktop.main.js) | 305 | [renderer] | cached data: YES, node_modules took 63ms |
| require & init workspace storage | 7 | [renderer] | - |
| init workspace service | 15 | [renderer] | - |
| register extensions & spawn extension host | 162 | [renderer] | - |
| restore viewlet | 13 | [renderer] | workbench.view.explorer |
| restore panel | 0 | [renderer] | - |
| restore editors | 395 | [renderer] | 2: workbench.editors.files.fileEditorInput, PerfviewInput |
| overall workbench load | 510 | [renderer] | - |
| workbench ready | 1673 | [main->renderer] | - |
| extensions registered | 1668 | [renderer] | - |
Exploration Warm
| What | Duration | Process | Info |
| --------------------------------------------------------------- | -------- | ---------------- | --------------------------------------------------------- |
| start => app.isReady | 44 | [main] | initial startup: true |
| nls:start => nls:end | 0 | [main] | initial startup: true |
| require(main.bundle.js) | 45 | [main] | initial startup: true |
| app.isReady => window.loadUrl() | 166 | [main] | initial startup: true |
| window.loadUrl() => begin to require(workbench.desktop.main.js) | 185 | [main->renderer] | NewWindow |
| require(workbench.desktop.main.js) | 251 | [renderer] | cached data: YES, node_modules took 35ms |
| require & init workspace storage | 13 | [renderer] | - |
| init workspace service | 15 | [renderer] | - |
| register extensions & spawn extension host | 151 | [renderer] | - |
| restore viewlet | 11 | [renderer] | workbench.view.explorer |
| restore panel | 0 | [renderer] | - |
| restore editors | 366 | [renderer] | 2: workbench.editors.files.fileEditorInput, PerfviewInput |
| overall workbench load | 491 | [renderer] | - |
| workbench ready | 1573 | [main->renderer] | - |
| extensions registered | 1570 | [renderer] | - |
I ran similar tests on Windows but cannot find the reports I did anymore. I think I was seeing similar numbers, slightly slower between the runs but for sure not as bad as the perf machine shows. But then again, this is also a very fast machine.
Related blog entries for V8 changes:
I wonder if the pointer compression would have any impact.
New perf script numbers based on Standard_start
macOS
Insiders - BEST `1610ms`
Exploration - BEST `1787ms`
Electron Fiddle Fibonnaci test - 8.2.5 is 200-300ms slower than 7.2.4
windows
Insiders - BEST `1117ms`
Exploration - BEST `1198ms`
Electron Fiddle Fibonnaci test - They have similar times
Now the number is consistent on macOS with your observations :)
I wonder if the pointer compression would have any impact.
Good question! but electron disabled pointer compression until v9 due to compatibility issue from node.js https://github.com/electron/electron/pull/21468
I will skip windows side for now, since I can't repro the issue there. Will continue investigation on macOS tomorrow. One thing to note for the fiddle test, if you replace nodeIntegration: true with sandbox: true , the numbers turn out to be similar which hints at node integration initialization path.
using the test sample from @jrieken in a base electron app, start with
./electron-v8.2.5-darwin-x64/Electron.app/Contents/MacOS/Electron ./electron-quick-start/ --enable-logging --trace-startup --trace-startup-duration=7
This will generate chrometrace.log in the current directory, load that in the chrome browser with chrome://tracing . Do the same for v7.2.4
Interesting trace slices
v8::run that evaluates the inline script after parsing the html
| | 7.2.4 | 8.2.5 |
|---|---|---|
| start| 602.946ms | 605.540ms |
| end | 2,894.802ms | 3,144.133ms |

sandbox: true, the v8::run only starts 20-30ms before, than with nodeIntegration:true. This can be attributed to initialization of nodejs in the renderer, particularly check the slices contextCreatedNotification .sandbox

nodeIntegration

So the node context initialization path is negligible, we can ignore it. The bulk of delay stems from the v8 execution which matches the number we see on the devtools console and not from any renderer startup stuff in electron.
start with --trace-startup=v8 instead of --trace-startup to get only v8 related slices and will confirm this. Ideally the next step is to use the --trace-config-file option with following config but for some reason its not working.
{
"startup_duration": 7,
"result_directory": "/Users/demohan/github",
"trace_config": {
"included_categories": [
"disabled-by-default-v8.cpu_profiler",
"disabled-by-default-v8.gc"
],
"excluded_categories": ["*"],
}
}
Tried to visualize v8 stuff from Node.js profiler, again the v8 impact is seen here and matches the above observation.
> NODE_ENV=production ELECTRON_RUN_AS_NODE=1 ~/Downloads/electron-v7.2.4-darwin-x64/Electron.app/Contents/MacOS/Electron --prof fibinacci.js
> ELECTRON_RUN_AS_NODE=1 ~/Downloads/electron-v7.2.4-darwin-x64/Electron.app/Contents/MacOS/Electron --prof-process isolate-0x7ff6b0008000-1036-v8.log
8.2.5
|---|---|---|---|
| 2432| 91.6% | 91.8% | JavaScript|
| 60 | 2.3% | 2.3% | C++ |
| 2 | 0.1% | 0.1% | GC |
| 7 | 0.3% | | Shared libraries|
| 157 | 5.9% | | Unaccounted |
|---|---|---|---|
| 2432 | 91.6% | 91.8% | LazyCompile: *fib /Users/demohan/github/electron-quick-start/fibonacci.js:4:17 |
7.2.4
|---|---|---|---|
| 2172 | 89.4% | 89.6% | JavaScript |
| 60 | 2.5% | 2.5% | C++ |
| 3 | 0.1% | 0.1% | GC |
| 5 | 0.2% | | Shared libraries |
| 193 | 7.9% | | Unaccounted |
|---|---|---|---|
| 2172 | 89.4% | 89.6% | LazyCompile: *fib /Users/demohan/github/electron-quick-start/fibonacci.js:4:17 |
Working on getting a flamegraph for the v8 execution path.
Built d8 (simple commandline for v8) of Electron 8.2.5 and ran with https://github.com/thlorenz/cpuprofilify/blob/master/bin/profile_1ms.d
sudo profile_1ms.d -c '/Users/demohan/github/electron-gn/src/out/Release/d8 --interpreted-frames-native-stack --perf-basic-prof-only-functions /Users/demohan/github/electron-quick-start/fibinacci.js' > dtrace_3.txt
cpuprofile and perf map
The stack is incomplete on macOS, will have to try on linux with perf tool which is known to work well.
Perf numbers on Windows for me:
Electron 7 Insiders
COLD
workbench ready: 1792
WARM
workbench ready: 1418 |聽1261 |聽1382
RELOAD
workbench ready: 1105
Electron 8 Exploration
COLD
workbench ready: 2643
WARM
workbench ready: 1426 |聽1248 |聽1270
RELOAD
workbench ready: 976
It seems to me that cold startup is indeed slower, but otherwise I was not able to measure any difference. This is with vscode workspace open, 1 editor package.json and a second the startup perf numbers. No extensions and fresh data dir, all after a OS restart.
idk what's up with the perf machine. @alexdima brought up the idea that it might be a new set of CPU instructions used by electron 8 that can only be emulated on the perf machine - it is a very old machine (7+ years)...
I'm seeing VERY long opening times on my Windows 10 (2004 - slow ring, 19041.264) desktop machine (12-core 3.8GHz AMD proc) with the latest insiders too.
Went back to the drawing board, redid the measurements for windows.
./scripts/code.bat --trace-startup --trace-startup-duration=15
As seen above, the main process is pretty much blocked by something on the UI thread, so rules out any impact from chromium, rather something from app javascript is responsible.
./scripts/code.bat --inspect-brk, connect to the debugger from chrome://inspect and take a cpu profile.Turns out all the IO calls in the app are comparatively slower to the measurements from Electron 7
After that it was just a matter of bisect to find the offending commit and https://github.com/electron/electron/pull/20303 seems to be the root cause. Double verified by applying this patch to Electron 7 and the cpu profile numbers now match Electron 8.
Next step would be to create a minimal repro.
Results from running perf tests on Windows 10 VM (macOS, Parallels), comparing current insiders to stable:
Summary: BEST `1092ms`, VERSION `0913b1aa43191d8af0ccb4a133d9a8d7c1a81d69`, APP `Code - Insiders.exe` :windows: :vscode-insiders:
SLOW 2229 Code - Insiders 0913b1aa43 7f1cf020-d1d6-486f-80c0-49619d61de4a1592979693984 NO_standard_start : Either cache data is rejected or not created
FAST 1484 Code - Insiders 0913b1aa43 0e8fd1fe-3974-4f81-a185-a69dd18e2ed51592979732317 standard_start
FAST 1316 Code - Insiders 0913b1aa43 01aa96c8-a9b7-4873-a615-41a21474b2101592979779979 standard_start
FAST 1227 Code - Insiders 0913b1aa43 3fd9c192-2a4c-4480-b751-e98a4747dcdf1592979808779 standard_start
FAST 1330 Code - Insiders 0913b1aa43 fd26ffad-37ad-4bc8-962f-775ab375f37f1592979849111 standard_start
FAST 1163 Code - Insiders 0913b1aa43 70ef20fb-3394-4b52-8d8e-66c21eaa687e1592979878218 standard_start
FAST 1388 Code - Insiders 0913b1aa43 813380b5-2c9e-413e-8467-ae63cacb2ebc1592979911791 standard_start
FAST 1238 Code - Insiders 0913b1aa43 a5564a5f-0b8e-4297-a932-7b29d24774291592979951706 standard_start
FAST 1092 Code - Insiders 0913b1aa43 c0af511f-691c-4c96-9e28-f5b5f99286bc1592979995783 standard_start
FAST 1292 Code - Insiders 0913b1aa43 d1c4b129-40cc-459e-be44-3d3bda77242a1592980035012 standard_start
= 1281 avg
Summary: BEST `956ms`, VERSION `cd9ea6488829f560dc949a8b2fb789f3cdc05f5d`, APP `Code.exe` :windows: :vscode-insiders:
SLOW 2639 Code cd9ea64888 77fdcc6c-8191-4b41-990b-1ffe2f779dca1592980382233 NO_standard_start : Either cache data is rejected or not created
FAST 1269 Code cd9ea64888 95ed5d89-ddfe-4647-8a5a-5ee078d040d11592980412473 standard_start
FAST 1231 Code cd9ea64888 b19cd5a4-4782-4382-8df4-399bf1428b7e1592980458541 standard_start
FAST 1117 Code cd9ea64888 4b9be5d5-0e02-4dae-8213-2d96dd798c4f1592980485699 standard_start
FAST 1281 Code cd9ea64888 2e442d4e-8b49-4a07-a42a-4e6ba5fdd97b1592980511246 standard_start
FAST 1181 Code cd9ea64888 9afead65-964b-4177-a7fe-2245fbbb1fac1592980546135 standard_start
FAST 956 Code cd9ea64888 c30c13df-d2ad-4445-bda2-f1903173953d1592980592499 standard_start
FAST 1217 Code cd9ea64888 bfe49c3c-45fa-45a5-8e38-1aae1e691bb81592980617740 standard_start
FAST 1385 Code cd9ea64888 c7f5c65d-1ef8-4223-8fc8-156de109e5da1592980654392 standard_start
FAST 1316 Code cd9ea64888 429a68e1-1704-4caa-8aec-ce482cab520a1592980683564 standard_start
= 1217 avg
Results from running perf tests on my office laptop (Windows 10, Parallels) including Electron 9 numbers:
Insiders (Electron 8)
Summary: BEST `1160ms`, VERSION `0913b1aa43191d8af0ccb4a133d9a8d7c1a81d69`, APP `Code - Insiders.exe` :windows: :vscode-insiders:
FAST 1953 Code - Insiders 0913b1aa43 1593a55f-e711-40bf-a2c1-27fa1f1a2d831593076614528 NO_standard_start : Either cache data is rejected or not created
FAST 1262 Code - Insiders 0913b1aa43 0a213ba4-4119-47bb-b57d-a266f240f40b1593076656282 standard_start
FAST 1210 Code - Insiders 0913b1aa43 8db8e300-65db-46ab-85d1-d391d4befea41593076700380 standard_start
FAST 1267 Code - Insiders 0913b1aa43 e53f4f2f-6f1d-4c3c-a10f-b08256d91bb81593076733662 standard_start
FAST 1197 Code - Insiders 0913b1aa43 04c94858-ef22-4dd1-9a14-9033ecf893de1593076773908 standard_start
FAST 1160 Code - Insiders 0913b1aa43 b4ae257e-4a29-40e1-932e-bb0f09ff3f501593076799101 standard_start
FAST 1265 Code - Insiders 0913b1aa43 7d66b4dd-2028-480f-a734-d291514ac40c1593076842305 standard_start
FAST 1321 Code - Insiders 0913b1aa43 6af6e503-013f-496c-8054-6149ed0166661593076878608 standard_start
FAST 1246 Code - Insiders 0913b1aa43 cb47d36d-04b8-4dad-a3b1-6a387965bc6a1593076924895 standard_start
FAST 1167 Code - Insiders 0913b1aa43 ad86e36b-7b1a-4336-b043-c419deb441dd1593076958074 standard_start
avg: 1232
Stable (Electron 7)
Summary: BEST `1062ms`, VERSION `cd9ea6488829f560dc949a8b2fb789f3cdc05f5d`, APP `Code.exe` :windows: :vscode-pride:
SLOW 2610 Code cd9ea64888 0bc72819-194b-46ca-b484-ab9ec8540c481593077558132 NO_standard_start : Either cache data is rejected or not created
FAST 1163 Code cd9ea64888 0b49f468-8204-4d87-a4e8-49c292b6b0031593077594350 standard_start
FAST 1188 Code cd9ea64888 e33d52c2-656a-445e-848b-857517347fe01593077642558 standard_start
FAST 1120 Code cd9ea64888 48ca2a78-6816-4cb3-8787-4c76ef728f3a1593077685815 standard_start
FAST 1146 Code cd9ea64888 4020cad2-a6e0-42d9-93ea-5df461a618d31593077724029 standard_start
FAST 1134 Code cd9ea64888 3fa02cb4-3898-48f2-97dc-bed4c91e09bb1593077762286 standard_start
FAST 1062 Code cd9ea64888 25a04066-2ccd-4d32-93b8-123b2e94d6821593077803410 standard_start
FAST 1328 Code cd9ea64888 dbf45334-01d7-4f0e-b012-e941a80cd5a21593077833671 standard_start
FAST 1135 Code cd9ea64888 b071f190-c2a2-4e3f-9e41-5e855a3a14e21593077877890 standard_start
FAST 1087 Code cd9ea64888 6863c008-2469-4325-8d11-106489f7a33d1593077924064 standard_start
avg: 1151
Exploration (Electron 9)
Summary: BEST `1136ms`, VERSION `11a6eed191de586f764270db328f9b57ef34c1de`, APP `Code - Exploration.exe` :windows: :vscode-pride:
SLOW 2070 Code - Exploration 11a6eed191 fc475ca7-3d0b-4b65-998d-ad4509176b561593078319768 NO_standard_start : Either cache data is rejected or not created
FAST 1211 Code - Exploration 11a6eed191 4ffe37ca-6178-45a2-8105-399f9dbf1d921593078360200 standard_start
FAST 1467 Code - Exploration 11a6eed191 be4686ad-7f20-405b-91c4-1828672d47851593078391626 standard_start
FAST 1216 Code - Exploration 11a6eed191 b25f675c-b7d4-4447-8c78-2238c38106de1593078426592 standard_start
FAST 1172 Code - Exploration 11a6eed191 0da47af1-e413-472a-ba10-b1fbe41907651593078456734 standard_start
FAST 1142 Code - Exploration 11a6eed191 edd290fd-7b6a-44f2-9cc4-372cccad480b1593078488869 standard_start
FAST 1136 Code - Exploration 11a6eed191 56b78e9f-4d84-48b6-844c-242f1f6681691593078527140 standard_start
FAST 1222 Code - Exploration 11a6eed191 f839d202-897d-4236-b0cf-020683a0a8e31593078569424 standard_start
FAST 1257 Code - Exploration 11a6eed191 80b67614-68fa-4a6e-b095-222ff553aa5f1593078597736 standard_start
FAST 1199 Code - Exploration 11a6eed191 0fff64b5-d2f7-43b4-b521-6623a9d0866d1593078647903 standard_start
avg: 1224
@deepak1556 Is there anything I can record on the perf machine for you to gain more insight. The usual things, like perf-marks, are in telemetry but are there chrome/electron perf recorders that I should run?
While the general trend is maybe positive there is a class of (old?) machines where performance is horrible. It would be awesome if we can figure what those characteristics are so that we can guestimate how many stable users will be affected.
Results from my Windows Desktop:
Summary: BEST `1286ms`, VERSION `0913b1aa43191d8af0ccb4a133d9a8d7c1a81d69`, APP `Code - Insiders.exe` :windows: :vscode-insiders:
SLOW 3332 Code - Insiders 0913b1aa43 5a0c7ac8-041e-47d6-ba9a-1b1c4dcbd5021593074922432 NO_standard_start : Either cache data is rejected or not created
FAST 1790 Code - Insiders 0913b1aa43 3604a57f-e005-4b98-935e-4b55ce85b2c11593074957074 standard_start
FAST 1450 Code - Insiders 0913b1aa43 9258c82b-3428-4bec-a7d2-ceb1b5796bcb1593074986079 standard_start
FAST 1467 Code - Insiders 0913b1aa43 662b4b0b-e703-48e8-b028-52998e1dfd5c1593075030207 standard_start
FAST 1648 Code - Insiders 0913b1aa43 a181ef81-62dc-41f8-b414-ee88e39fb5df1593075071475 standard_start
FAST 1529 Code - Insiders 0913b1aa43 0bae4416-414f-4519-9f13-f3dec57768221593075099583 standard_start
FAST 1317 Code - Insiders 0913b1aa43 cad2f464-ca98-4600-8664-540342f993e31593075144616 standard_start
FAST 1286 Code - Insiders 0913b1aa43 b679cae3-7129-46e2-ae3b-a1f6fe4e78371593075187711 standard_start
FAST 1950 Code - Insiders 0913b1aa43 7bfce2c0-acf3-478f-9c00-b2903be738891593075222945 standard_start
FAST 1610 Code - Insiders 0913b1aa43 f4e3d25b-3523-4770-ab74-f364bc358e811593075269280 standard_start
avg 1560
Stable
Summary: BEST `1229ms`, VERSION `cd9ea6488829f560dc949a8b2fb789f3cdc05f5d`, APP `Code.exe` :windows: :vscode-insiders:
SLOW 2497 Code cd9ea64888 ce6eb651-0a79-495b-8062-bb6cf042f34e1593072242275 NO_standard_start : Either cache data is rejected or not created
FAST 1265 Code cd9ea64888 69aa0a9e-08ce-4868-aadc-6cc4ceea39481593072277134 standard_start
FAST 1372 Code cd9ea64888 739d506a-e999-4956-abc8-c875cfead5b31593072319330 standard_start
FAST 1293 Code cd9ea64888 7f7df098-e9e4-4702-aee8-5d1d367ebafb1593072346399 standard_start
FAST 1349 Code cd9ea64888 c0e2a2c1-17a1-4704-bd85-4881754ae1001593072393698 standard_start
FAST 1286 Code cd9ea64888 b7e44d0a-81b4-4215-9fc6-36458d25b22d1593072431806 standard_start
FAST 1380 Code cd9ea64888 70da7c7b-6251-48b4-bf27-029027ccd9cc1593072480003 standard_start
FAST 1411 Code cd9ea64888 4bb6337b-e4ab-4ab4-b72a-cc6fb37c54661593072508249 standard_start
FAST 1229 Code cd9ea64888 71ebd2b6-1c00-49c3-bf12-a8b14db2ff4d1593072534242 standard_start
FAST 1370 Code cd9ea64888 7f986f6a-5249-4625-830c-5667baff4f681593072563484 standard_start
avg 1328
closing this as a dupe of https://github.com/microsoft/vscode/issues/101083
Most helpful comment
Went back to the drawing board, redid the measurements for windows.
./scripts/code.bat --trace-startup --trace-startup-duration=15As seen above, the main process is pretty much blocked by something on the UI thread, so rules out any impact from chromium, rather something from app javascript is responsible.
./scripts/code.bat --inspect-brk, connect to the debugger fromchrome://inspectand take a cpu profile.CPU-E8.zip
CPU-E7.zip
Turns out all the IO calls in the app are comparatively slower to the measurements from Electron 7
After that it was just a matter of bisect to find the offending commit and https://github.com/electron/electron/pull/20303 seems to be the root cause. Double verified by applying this patch to Electron 7 and the cpu profile numbers now match Electron 8.
Next step would be to create a minimal repro.