Skip to content

Commit a7b1c3e

Browse files
authored
add application.experimental.rendererProfiling setting (defaults to false) (microsoft#164237)
microsoft#163819
1 parent 9f065d0 commit a7b1c3e

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/vs/workbench/contrib/performance/electron-sandbox/performance.contribution.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { Extensions, IWorkbenchContributionsRegistry } from 'vs/workbench/common
99
import { StartupProfiler } from './startupProfiler';
1010
import { StartupTimings } from './startupTimings';
1111
import { RendererProfiling } from 'vs/workbench/contrib/performance/electron-sandbox/rendererAutoProfiler';
12+
import { IConfigurationRegistry, Extensions as ConfigExt } from 'vs/platform/configuration/common/configurationRegistry';
13+
import { localize } from 'vs/nls';
1214

1315

1416
Registry.as<IWorkbenchContributionsRegistry>(Extensions.Workbench).registerWorkbenchContribution(
@@ -29,3 +31,16 @@ Registry.as<IWorkbenchContributionsRegistry>(Extensions.Workbench).registerWorkb
2931
StartupTimings,
3032
LifecyclePhase.Eventually
3133
);
34+
35+
Registry.as<IConfigurationRegistry>(ConfigExt.Configuration).registerConfiguration({
36+
id: 'application',
37+
order: 100,
38+
type: 'object',
39+
'properties': {
40+
'application.experimental.rendererProfiling': {
41+
type: 'boolean',
42+
default: false,
43+
markdownDescription: localize('experimental.rendererProfiling', "When enabled slow renderers are automatically profiled")
44+
}
45+
}
46+
});

src/vs/workbench/contrib/performance/electron-sandbox/rendererAutoProfiler.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import { timeout } from 'vs/base/common/async';
77
import { generateUuid } from 'vs/base/common/uuid';
8+
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
89
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
910
import { ILogService } from 'vs/platform/log/common/log';
1011
import { INativeHostService } from 'vs/platform/native/electron-sandbox/native';
@@ -20,6 +21,7 @@ export class RendererProfiling {
2021
@IEnvironmentService environmentService: IEnvironmentService,
2122
@ILogService logService: ILogService,
2223
@ITimerService timerService: ITimerService,
24+
@IConfigurationService configService: IConfigurationService
2325
) {
2426

2527
const devOpts = parseExtensionDevOptions(environmentService);
@@ -50,6 +52,11 @@ export class RendererProfiling {
5052
return;
5153
}
5254

55+
if (!configService.getValue('application.experimental.rendererProfiling')) {
56+
logService.debug(`[perf] SLOW task detected (${maxDuration}ms) but renderer profiling is disabled via 'application.experimental.rendererProfiling'`);
57+
return;
58+
}
59+
5360
const sessionId = generateUuid();
5461
// start heartbeat monitoring
5562
logService.warn(`[perf] Renderer reported VERY LONG TASK (${maxDuration}ms), starting profiling session '${sessionId}'`);

0 commit comments

Comments
 (0)