Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
ce6b1a98
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ce6b1a98
编写于
1月 27, 2020
作者:
S
Sam Harwell
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Minimize the new SharedStopwatch API
上级
775c4ebc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
12 addition
and
54 deletion
+12
-54
src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs
...lers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs
+6
-6
src/Compilers/Core/Portable/InternalUtilities/SharedStopwatch.cs
...pilers/Core/Portable/InternalUtilities/SharedStopwatch.cs
+6
-47
src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj
...es/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj
+0
-1
未找到文件。
src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs
浏览文件 @
ce6b1a98
...
...
@@ -1453,17 +1453,17 @@ private void ExecuteAndCatchIfThrows_NoLock<TArg>(DiagnosticAnalyzer analyzer, A
{
timer
=
SharedStopwatch
.
StartNew
();
// This call to
Restart isn't required by the API, but is included to avoid measurement errors which
// can occur during periods of high allocation activity. In some cases, calls to Stopwatch
// This call to
StartNew isn't required by the API, but is included to avoid measurement errors
//
which
can occur during periods of high allocation activity. In some cases, calls to Stopwatch
// operations can block at their return point on the completion of a background GC operation. When
// this occurs, the GC wait time ends up included in the measured time span. In the event the first
// call to
Restart blocked on a GC operation, this call to Restart
will most likely occur when the
// call to
StartNew blocked on a GC operation, this call to StartNew
will most likely occur when the
// GC is no longer active. In practice, a substantial improvement to the consistency of analyzer
// timing data was observed.
//
// Note that the call to S
topwatch.Stop() is not affected, because the GC wait will occur after the
// timer has already recorded its stop time.
timer
.
Restart
();
// Note that the call to S
haredStopwatch.Elapsed is not affected, because the GC wait will occur
//
after the
timer has already recorded its stop time.
timer
=
SharedStopwatch
.
StartNew
();
}
analyze
(
argument
);
...
...
src/Compilers/Core/Portable/InternalUtilities/SharedStopwatch.cs
浏览文件 @
ce6b1a98
...
...
@@ -7,61 +7,20 @@
namespace
Roslyn.Utilities
{
internal
struct
SharedStopwatch
internal
readonly
struct
SharedStopwatch
{
private
static
readonly
Stopwatch
s_stopwatch
=
Stopwatch
.
StartNew
();
private
TimeSpan
_accumulated
;
private
TimeSpan
_started
;
private
readonly
TimeSpan
_started
;
p
ublic
readonly
TimeSpan
Elapsed
p
rivate
SharedStopwatch
(
TimeSpan
started
)
{
get
{
if
(
IsRunning
)
return
_accumulated
+
s_stopwatch
.
Elapsed
-
_started
;
return
_accumulated
;
}
_started
=
started
;
}
public
readonly
long
ElapsedMilliseconds
=>
(
long
)
Elapsed
.
TotalMilliseconds
;
public
readonly
bool
IsRunning
=>
_started
!=
TimeSpan
.
Zero
;
public
TimeSpan
Elapsed
=>
s_stopwatch
.
Elapsed
-
_started
;
public
static
SharedStopwatch
StartNew
()
{
var
result
=
new
SharedStopwatch
();
result
.
Start
();
return
result
;
}
public
void
Reset
()
{
Stop
();
_accumulated
=
TimeSpan
.
Zero
;
}
public
void
Restart
()
{
Reset
();
Start
();
}
public
void
Start
()
{
if
(!
IsRunning
)
{
_started
=
s_stopwatch
.
Elapsed
;
}
}
public
void
Stop
()
{
if
(
IsRunning
)
{
_accumulated
+=
s_stopwatch
.
Elapsed
-
_started
;
_started
=
TimeSpan
.
Zero
;
}
}
=>
new
SharedStopwatch
(
s_stopwatch
.
Elapsed
);
}
}
src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj
浏览文件 @
ce6b1a98
...
...
@@ -27,7 +27,6 @@
<ItemGroup
Label=
"Linked Files"
>
<Compile
Remove=
"Storage\Sqlite\**\*.cs"
Condition=
"'$(DotNetBuildFromSource)' == 'true'"
/>
<Compile
Include=
"..\..\..\CodeStyle\Core\CodeFixes\FixAllContextHelper.cs"
Link=
"CodeFixes\FixAllOccurrences\FixAllContextHelper.cs"
/>
<Compile
Include=
"..\..\..\Compilers\Core\Portable\InternalUtilities\SharedStopwatch.cs"
Link=
"InternalUtilities\SharedStopwatch.cs"
/>
<Compile
Include=
"..\..\..\Compilers\Shared\DesktopAnalyzerAssemblyLoader.cs"
>
<Link>
Execution\Desktop\DesktopAnalyzerAssemblyLoader.cs
</Link>
</Compile>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录