Add performance measurement to crossgen2/SuperILC (dotnet/coreclr#26742)
authorAnubhav Srivastava <SrivastavaAnubhav@users.noreply.github.com>
Wed, 18 Sep 2019 20:31:51 +0000 (13:31 -0700)
committerMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Wed, 18 Sep 2019 20:31:51 +0000 (22:31 +0200)
commit883c2e8d3a0832962338000fff2e6f6ee619606f
tree5d9380abc8d9052b02fdc0fd86ebb31710066402
parentcf64f7e856de968286d9a6a2ce34c31d682e9753
Add performance measurement to crossgen2/SuperILC (dotnet/coreclr#26742)

Crossgen2 changes
- Add PerfEventSource classes to log performance-related events (average time taken to compile, loading time, graph processing time, emitting time, number of nodes added to graph, and number of methods JITed)

SuperILC changes
- Add MeasurePerf flag to measure performance (with 2 warmup runs and averaged over 5 real runs)
- Add PerfEventSourceListener class to listen to PerfEventSource events from crossgen2 and record statistics.
- Add InputFileSearchString flag to select an input file to compile (instead of requiring a folder)

Commit migrated from https://github.com/dotnet/coreclr/commit/8cb1ac8f47c8247e3944b44f10b0ce68594e071b
13 files changed:
src/coreclr/src/tools/ReadyToRun.SuperIlc/BuildFolder.cs
src/coreclr/src/tools/ReadyToRun.SuperIlc/BuildFolderSet.cs
src/coreclr/src/tools/ReadyToRun.SuperIlc/BuildOptions.cs
src/coreclr/src/tools/ReadyToRun.SuperIlc/CommandLineOptions.cs
src/coreclr/src/tools/ReadyToRun.SuperIlc/ParallelRunner.cs
src/coreclr/src/tools/ReadyToRun.SuperIlc/PerfEventSourceListener.cs [new file with mode: 0644]
src/coreclr/src/tools/crossgen2/ILCompiler.DependencyAnalysisFramework/DependencyAnalyzer.cs
src/coreclr/src/tools/crossgen2/ILCompiler.DependencyAnalysisFramework/ILCompiler.DependencyAnalysisFramework.csproj
src/coreclr/src/tools/crossgen2/ILCompiler.DependencyAnalysisFramework/PerfEventSource.cs [new file with mode: 0644]
src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/PerfEventSource.cs [new file with mode: 0644]
src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/Compiler/ReadyToRunCodegenCompilation.cs
src/coreclr/src/tools/crossgen2/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj
src/coreclr/src/tools/crossgen2/crossgen2/Program.cs