Browse Source

Add ETW for event + property decompilation as PoC

pull/2519/head
Christoph Wille 4 years ago
parent
commit
1b3a73d9e9
  1. 12
      ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs
  2. 1
      ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj
  3. 24
      ICSharpCode.Decompiler/Instrumentation/DecompilerEventSource.cs

12
ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs

@ -1744,6 +1744,7 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1744,6 +1744,7 @@ namespace ICSharpCode.Decompiler.CSharp
EntityDeclaration DoDecompile(IProperty property, DecompileRun decompileRun, ITypeResolveContext decompilationContext)
{
Debug.Assert(decompilationContext.CurrentMember == property);
var watch = System.Diagnostics.Stopwatch.StartNew();
try
{
var typeSystemAstBuilder = CreateAstBuilder(decompileRun.Settings);
@ -1798,11 +1799,17 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1798,11 +1799,17 @@ namespace ICSharpCode.Decompiler.CSharp
{
throw new DecompilerException(module, property, innerException);
}
finally
{
watch.Stop();
Instrumentation.DecompilerEventSource.Log.DoDecompileProperty(property.Name, watch.ElapsedMilliseconds);
}
}
EntityDeclaration DoDecompile(IEvent ev, DecompileRun decompileRun, ITypeResolveContext decompilationContext)
{
Debug.Assert(decompilationContext.CurrentMember == ev);
var watch = System.Diagnostics.Stopwatch.StartNew();
try
{
var typeSystemAstBuilder = CreateAstBuilder(decompileRun.Settings);
@ -1838,6 +1845,11 @@ namespace ICSharpCode.Decompiler.CSharp @@ -1838,6 +1845,11 @@ namespace ICSharpCode.Decompiler.CSharp
{
throw new DecompilerException(module, ev, innerException);
}
finally
{
watch.Stop();
Instrumentation.DecompilerEventSource.Log.DoDecompileEvent(ev.Name, watch.ElapsedMilliseconds);
}
}
#region Sequence Points

1
ICSharpCode.Decompiler/ICSharpCode.Decompiler.csproj

@ -100,6 +100,7 @@ @@ -100,6 +100,7 @@
<Compile Include="IL\Transforms\LdLocaDupInitObjTransform.cs" />
<Compile Include="IL\Transforms\PatternMatchingTransform.cs" />
<Compile Include="IL\Transforms\RemoveInfeasiblePathTransform.cs" />
<Compile Include="Instrumentation\DecompilerEventSource.cs" />
<Compile Include="Metadata\ReferenceLoadInfo.cs" />
<Compile Include="Semantics\OutVarResolveResult.cs" />
<Compile Include="SingleFileBundle.cs" />

24
ICSharpCode.Decompiler/Instrumentation/DecompilerEventSource.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
using System;
using System.Diagnostics.Tracing;
namespace ICSharpCode.Decompiler.Instrumentation
{
[EventSource(Name = "ICSharpCode.Decompiler")]
public sealed class DecompilerEventSource : EventSource
{
[Event(1, Level = EventLevel.Informational)]
public void DoDecompileEvent(string eventName, long elapsedMilliseconds)
{
WriteEvent(1, eventName, elapsedMilliseconds);
}
[Event(2, Level = EventLevel.Informational)]
public void DoDecompileProperty(string propertyName, long elapsedMilliseconds)
{
WriteEvent(2, propertyName, elapsedMilliseconds);
}
public static DecompilerEventSource Log = new DecompilerEventSource();
}
}
Loading…
Cancel
Save