Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
496ebc64
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
496ebc64
编写于
10月 24, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
let '--prof-append-timers' also append if it was a standard start
上级
e3375691
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
63 addition
and
77 deletion
+63
-77
src/vs/workbench/parts/performance/electron-browser/performance.contribution.ts
.../performance/electron-browser/performance.contribution.ts
+0
-1
src/vs/workbench/parts/performance/electron-browser/startupTimings.ts
...ench/parts/performance/electron-browser/startupTimings.ts
+63
-24
src/vs/workbench/parts/performance/electron-browser/startupTimingsAppender.ts
...ts/performance/electron-browser/startupTimingsAppender.ts
+0
-52
未找到文件。
src/vs/workbench/parts/performance/electron-browser/performance.contribution.ts
浏览文件 @
496ebc64
...
...
@@ -5,5 +5,4 @@
import
'
./startupProfiler
'
;
import
'
./startupTimings
'
;
import
'
./startupTimingsAppender
'
;
import
'
./stats
'
;
src/vs/workbench/parts/performance/electron-browser/startupTimings.ts
浏览文件 @
496ebc64
...
...
@@ -17,6 +17,10 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
import
{
IPanelService
}
from
'
vs/workbench/services/panel/common/panelService
'
;
import
{
ITimerService
,
didUseCachedData
}
from
'
vs/workbench/services/timer/electron-browser/timerService
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
product
from
'
vs/platform/node/product
'
;
import
{
timeout
,
nfcall
}
from
'
vs/base/common/async
'
;
import
{
appendFile
}
from
'
fs
'
;
class
StartupTimings
implements
IWorkbenchContribution
{
...
...
@@ -30,13 +34,21 @@ class StartupTimings implements IWorkbenchContribution {
@
ITelemetryService
private
readonly
_telemetryService
:
ITelemetryService
,
@
ILifecycleService
private
readonly
_lifecycleService
:
ILifecycleService
,
@
IUpdateService
private
readonly
_updateService
:
IUpdateService
,
@
IEnvironmentService
private
readonly
_envService
:
IEnvironmentService
,
)
{
//
this
.
_report
().
catch
(
onUnexpectedError
);
}
this
.
_reportVariedStartupTimes
().
then
(
undefined
,
onUnexpectedError
);
this
.
_reportStandardStartupTimes
().
then
(
undefined
,
onUnexpectedError
);
private
async
_report
()
{
const
isStandardStartup
=
await
this
.
_isStandardStartup
();
this
.
_reportStartupTimes
(
isStandardStartup
).
catch
(
onUnexpectedError
);
this
.
_appendStartupTimes
(
isStandardStartup
).
catch
(
onUnexpectedError
);
}
private
async
_reportVariedStartupTimes
():
Promise
<
void
>
{
private
async
_reportStartupTimes
(
isStandardStartup
:
boolean
):
Promise
<
void
>
{
const
metrics
=
await
this
.
_timerService
.
startupMetrics
;
/* __GDPR__
"startupTimeVaried" : {
"${include}": [
...
...
@@ -44,10 +56,46 @@ class StartupTimings implements IWorkbenchContribution {
]
}
*/
this
.
_telemetryService
.
publicLog
(
'
startupTimeVaried
'
,
await
this
.
_timerService
.
startupMetrics
);
this
.
_telemetryService
.
publicLog
(
'
startupTimeVaried
'
,
metrics
);
/* __GDPR__
"startupTime" : {
"${include}": [
"${IStartupMetrics}"
]
}
*/
this
.
_telemetryService
.
publicLog
(
'
startupTime
'
,
metrics
);
}
private
async
_appendStartupTimes
(
isStandardStartup
:
boolean
)
{
let
appendTo
=
this
.
_envService
.
args
[
'
prof-append-timers
'
];
if
(
!
appendTo
)
{
// nothing to do
return
;
}
const
waitWhenNoCachedData
=
()
=>
{
// wait 15s for cached data to be produced
return
!
didUseCachedData
()
?
timeout
(
15000
)
:
Promise
.
resolve
();
};
Promise
.
all
([
this
.
_timerService
.
startupMetrics
,
waitWhenNoCachedData
(),
]).
then
(([
startupMetrics
])
=>
{
return
nfcall
(
appendFile
,
appendTo
,
`
${
startupMetrics
.
ellapsed
}
\t
${
product
.
nameLong
}
\t
${
product
.
commit
||
'
0000000
'
}
\t
${
isStandardStartup
?
'
standard_start
'
:
'
NOT_standard_start
'
}
\n`
);
}).
then
(()
=>
{
this
.
_windowsService
.
quit
();
}).
catch
(
err
=>
{
console
.
error
(
err
);
this
.
_windowsService
.
quit
();
});
}
private
async
_
reportStandardStartupTimes
():
Promise
<
void
>
{
private
async
_
isStandardStartup
():
Promise
<
boolean
>
{
// check for standard startup:
// * new window (no reload)
// * just one window
...
...
@@ -56,46 +104,37 @@ class StartupTimings implements IWorkbenchContribution {
// * cached data present (not rejected, not created)
if
(
this
.
_lifecycleService
.
startupKind
!==
StartupKind
.
NewWindow
)
{
this
.
_logService
.
info
(
'
no standard startup: not a new window
'
);
return
;
return
false
;
}
if
(
await
this
.
_windowsService
.
getWindowCount
()
!==
1
)
{
this
.
_logService
.
info
(
'
no standard startup: not just one window
'
);
return
;
return
false
;
}
if
(
!
this
.
_viewletService
.
getActiveViewlet
()
||
this
.
_viewletService
.
getActiveViewlet
().
getId
()
!==
files
.
VIEWLET_ID
)
{
this
.
_logService
.
info
(
'
no standard startup: not the explorer viewlet
'
);
return
;
return
false
;
}
const
visibleControls
=
this
.
_editorService
.
visibleControls
;
if
(
visibleControls
.
length
!==
1
||
!
isCodeEditor
(
visibleControls
[
0
].
getControl
()))
{
this
.
_logService
.
info
(
'
no standard startup: not just one text editor
'
);
return
;
return
false
;
}
if
(
this
.
_panelService
.
getActivePanel
())
{
this
.
_logService
.
info
(
'
no standard startup: panel is active
'
);
return
;
return
false
;
}
if
(
!
didUseCachedData
())
{
this
.
_logService
.
info
(
'
no standard startup: not using cached data
'
);
return
;
return
false
;
}
if
(
!
await
this
.
_updateService
.
isLatestVersion
())
{
this
.
_logService
.
info
(
'
no standard startup: not running latest version
'
);
return
;
return
false
;
}
/* __GDPR__
"startupTime" : {
"${include}": [
"${IStartupMetrics}"
]
}
*/
const
metrics
=
await
this
.
_timerService
.
startupMetrics
;
this
.
_telemetryService
.
publicLog
(
'
startupTime
'
,
metrics
);
this
.
_logService
.
info
(
'
standard startup
'
,
metrics
);
this
.
_logService
.
info
(
'
standard startup
'
);
return
true
;
}
}
const
registry
=
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
Extensions
.
Workbench
);
registry
.
registerWorkbenchContribution
(
StartupTimings
,
LifecyclePhase
.
Running
);
registry
.
registerWorkbenchContribution
(
StartupTimings
,
LifecyclePhase
.
Eventually
);
src/vs/workbench/parts/performance/electron-browser/startupTimingsAppender.ts
已删除
100644 → 0
浏览文件 @
e3375691
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
LifecyclePhase
}
from
'
vs/platform/lifecycle/common/lifecycle
'
;
import
{
IWindowsService
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IWorkbenchContributionsRegistry
,
IWorkbenchContribution
,
Extensions
}
from
'
vs/workbench/common/contributions
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
ITimerService
,
didUseCachedData
}
from
'
vs/workbench/services/timer/electron-browser/timerService
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
nfcall
,
timeout
}
from
'
vs/base/common/async
'
;
import
{
appendFile
,
}
from
'
fs
'
;
import
product
from
'
vs/platform/node/product
'
;
class
StartupTimingsAppender
implements
IWorkbenchContribution
{
constructor
(
@
ITimerService
timerService
:
ITimerService
,
@
IWindowsService
windowsService
:
IWindowsService
,
@
IEnvironmentService
environmentService
:
IEnvironmentService
,
)
{
let
appendTo
=
environmentService
.
args
[
'
prof-append-timers
'
];
if
(
!
appendTo
)
{
// nothing to do
return
;
}
Promise
.
all
([
timerService
.
startupMetrics
,
this
.
_waitWhenNoCachedData
(),
]).
then
(([
startupMetrics
])
=>
{
return
nfcall
(
appendFile
,
appendTo
,
`
${
startupMetrics
.
ellapsed
}
\t
${
product
.
nameLong
}
\t
${
product
.
commit
||
'
0000000
'
}
\n`
);
}).
then
(()
=>
{
windowsService
.
quit
();
}).
catch
(
err
=>
{
console
.
error
(
err
);
windowsService
.
quit
();
});
}
private
_waitWhenNoCachedData
():
Promise
<
void
>
{
// wait 15s for cached data to be produced
return
!
didUseCachedData
()
?
timeout
(
15000
)
:
Promise
.
resolve
();
}
}
const
registry
=
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
Extensions
.
Workbench
);
registry
.
registerWorkbenchContribution
(
StartupTimingsAppender
,
LifecyclePhase
.
Eventually
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录